Initial testing, cerxes-npm
This commit is contained in:
46
cfg/util/read-args.js
Normal file
46
cfg/util/read-args.js
Normal file
@@ -0,0 +1,46 @@
|
||||
function readArgs(args){
|
||||
let result = {
|
||||
switches: new Set(),// Single letter toggles
|
||||
params: new Map(),// Named params/toggles
|
||||
args: [],
|
||||
get: function(...keys){
|
||||
let value;
|
||||
for (let k of keys) {
|
||||
let newValue = result.params.get(k);
|
||||
if(newValue!==undefined) {
|
||||
value = newValue;
|
||||
} else if (result.switches.has(k)){
|
||||
value = true;
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
};
|
||||
for(let arg of args){
|
||||
if(arg[0]==='-'){
|
||||
if(arg[1]==='-'){
|
||||
// Full name
|
||||
let argName = arg.slice(2);
|
||||
let argValue = true;
|
||||
let eqIndex = argName.indexOf("=");
|
||||
if(eqIndex>0){
|
||||
argValue = argName.slice(eqIndex+1);
|
||||
try{
|
||||
argValue = JSON.parse(argValue);
|
||||
}catch(ex){}
|
||||
argName = argName.slice(0,eqIndex);
|
||||
}
|
||||
result.params.set(argName, argValue);
|
||||
}else{
|
||||
// Switches
|
||||
let switches = arg.slice(1);
|
||||
for(let l of switches){result.switches.add(l);}
|
||||
}
|
||||
}else{
|
||||
result.args.push(arg);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
module.exports = readArgs;
|
||||
Reference in New Issue
Block a user