46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
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; |