1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /**
- * Parser arguments array
- * @param {Array} args optional arguments arrray.
- * @return {Object} opts key value hash.
- * @export
- */
- exports.parse = function(args) {
- // args is optional, default is process.argv
- args = args || process.argv;
- var opts = {}, curSwitch;
- args.forEach(function(arg) {
- // its a switch
- if (/^(-|--)/.test(arg) || !curSwitch) {
- opts[arg] = true;
- curSwitch = arg;
- // this arg is a data
- } else {
- if (arg === 'false') {
- arg = false;
- } else if (arg === 'true') {
- arg = true;
- } else if (!isNaN(arg)) {
- arg = Number(arg);
- }
- // it was a boolean switch per default,
- // now it has got a val
- if (typeof opts[curSwitch] === 'boolean') {
- opts[curSwitch] = arg;
- } else if (Array.isArray(opts[curSwitch])) {
- opts[curSwitch].push(arg);
- } else {
- opts[curSwitch] = [opts[curSwitch], arg];
- }
- }
- });
- return opts;
- };
|