gia-cli
Version:
Guardian US Interactive CLI tool
44 lines (34 loc) • 831 B
JavaScript
var flagPattern = /^--([\w-]+)/,
shortFlagPattern = /^-([\w]+)/;
module.exports = function ( aliases ) {
var rawArgs, arg, args = [], flags = {};
rawArgs = process.argv.slice( 2 );
function readOption () {
if ( !rawArgs[0] || rawArgs[0].charAt( 0 ) === '-' ) {
return true;
}
return rawArgs.shift();
}
while ( arg = rawArgs.shift() ) {
if ( shortFlagPattern.test( arg ) ) {
arg.substring( 1 ).split( '' ).forEach( function ( flag ) {
flags[ aliases[ flag ] || flag ] = readOption();
});
}
else if ( flagPattern.test( arg ) ) {
flags[ camelize( arg.substring( 2 ) ) ] = readOption();
}
else {
args.push( arg );
}
}
return {
args: args,
flags: flags
};
};
function camelize ( str ) {
return str.replace( /-(\w)/g, function ( match, $1 ) {
return $1.toUpperCase();
});
}