|
|
'use strict'; |
|
|
|
|
|
|
|
|
|
|
|
const {Yargs, processArgv} = require('./build/index.cjs'); |
|
|
|
|
|
Argv(processArgv.hideBin(process.argv)); |
|
|
|
|
|
module.exports = Argv; |
|
|
|
|
|
function Argv(processArgs, cwd) { |
|
|
const argv = Yargs(processArgs, cwd, require); |
|
|
singletonify(argv); |
|
|
|
|
|
return argv; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function singletonify(inst) { |
|
|
[ |
|
|
...Object.keys(inst), |
|
|
...Object.getOwnPropertyNames(inst.constructor.prototype), |
|
|
].forEach(key => { |
|
|
if (key === 'argv') { |
|
|
Argv.__defineGetter__(key, inst.__lookupGetter__(key)); |
|
|
} else if (typeof inst[key] === 'function') { |
|
|
Argv[key] = inst[key].bind(inst); |
|
|
} else { |
|
|
Argv.__defineGetter__('$0', () => { |
|
|
return inst.$0; |
|
|
}); |
|
|
Argv.__defineGetter__('parsed', () => { |
|
|
return inst.parsed; |
|
|
}); |
|
|
} |
|
|
}); |
|
|
} |
|
|
|