You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							81 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							81 lines
						
					
					
						
							2.1 KiB
						
					
					
				#!/usr/bin/env node | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
/* | 
						|
    https://github.com/visionmedia/commander.js | 
						|
    http://visionmedia.github.io/commander.js/ | 
						|
    https://github.com/visionmedia/commander.js/tree/master/examples | 
						|
 | 
						|
    sudo npm install ./ -g | 
						|
*/ | 
						|
 | 
						|
var path = require('path') | 
						|
var program = require('commander') | 
						|
var pkg = require(path.resolve(__dirname, '../package.json')) | 
						|
var Random = require('../dist/mock.js').Random | 
						|
 | 
						|
program | 
						|
    .version(pkg.version) | 
						|
    .on('--help', function() { | 
						|
        console.log('  Examples:') | 
						|
        console.log('') | 
						|
        console.log('    $ random date yyyy-MM-dd') | 
						|
        console.log('    $ random time HH:mm:ss') | 
						|
        console.log('') | 
						|
    }) | 
						|
 | 
						|
; | 
						|
(function() { | 
						|
 | 
						|
    var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m | 
						|
    var FN_ARG_SPLIT = /,/ | 
						|
    var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/ | 
						|
    var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg | 
						|
    var EXCLUDE = [ | 
						|
        'extend', | 
						|
        'dataImage', // mock/random/image | 
						|
        'capitalize', 'upper', 'lower', 'pick', 'shuffle', 'order', // mock/random/helper.js | 
						|
        'increment', 'inc' // mock/random/misc.js | 
						|
    ] | 
						|
 | 
						|
    function parseArgs(fn) { | 
						|
        var fnText = fn.toString().replace(STRIP_COMMENTS, '') | 
						|
        var argDecl = fnText.match(FN_ARGS) | 
						|
        return argDecl[1].split(FN_ARG_SPLIT).join(', ') | 
						|
    } | 
						|
 | 
						|
    Object.keys(Random).forEach(function(key) { | 
						|
        if (key[0] === '_') return | 
						|
        if (EXCLUDE.indexOf(key) !== -1) return | 
						|
 | 
						|
        var fn = Random[key] | 
						|
        if (typeof fn === 'function') { | 
						|
            var argDecl = parseArgs(fn) | 
						|
            if (argDecl) argDecl = '( ' + argDecl + ' )' | 
						|
            else argDecl = '()'; | 
						|
 | 
						|
            program | 
						|
                .command(key) | 
						|
                .description('Random.' + key + argDecl) | 
						|
                .action(function() { | 
						|
                    var args = [].slice.call(arguments, 0, -1) | 
						|
                    var result = fn.apply(Random, args) | 
						|
                    console.log(result) | 
						|
                }) | 
						|
        } | 
						|
    }) | 
						|
 | 
						|
})() | 
						|
 | 
						|
program.parse(process.argv) | 
						|
 | 
						|
; | 
						|
(function() { | 
						|
    var cmd = program.args[0] | 
						|
    if (!cmd) { | 
						|
        process.stdout.write(program.helpInformation()) | 
						|
        program.emit('--help') | 
						|
        process.exit() | 
						|
    } | 
						|
})() |