UNPKG

951 BJavaScriptView Raw
1'use strict';
2
3/*
4 Straight-forward node.js arguments parser
5 Author: eveningkid
6 License: Apache-2.0
7*/
8
9const ARGUMENT_SEPARATION_REGEX = /([^=\s]+)=?([^\s]*)/;
10
11function Parse(argv) {
12 // Removing node/bin and called script name
13 argv = argv.slice(2);
14
15 const parsedArgs = {};
16 let argName, argValue;
17
18 argv.forEach(function (arg) {
19 // Separate argument for a key/value return
20 arg = arg.match(ARGUMENT_SEPARATION_REGEX);
21 arg.splice(0, 1);
22
23 // Retrieve the argument name
24 argName = arg[0];
25
26 // Remove "--" or "-"
27 if (argName.indexOf('-') === 0) {
28 argName = argName.slice(argName.slice(0, 2).lastIndexOf('-') + 1);
29 }
30
31 // Parse argument value or set it to `true` if empty
32 argValue =
33 arg[1] !== ''
34 ? parseFloat(arg[1]).toString() === arg[1]
35 ? +arg[1]
36 : arg[1]
37 : true;
38
39 parsedArgs[argName] = argValue;
40 });
41
42 return parsedArgs;
43}
44
45module.exports = Parse;