Permalink
Cannot retrieve contributors at this time
53 lines (48 sloc)
1.42 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
codeql-action/node_modules/yargs/index.cjs
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
// classic singleton yargs API, to use yargs | |
// without running as a singleton do: | |
// require('yargs/yargs')(process.argv.slice(2)) | |
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); | |
// TODO(bcoe): warn if argv.parse() or argv.argv is used directly. | |
return argv; | |
} | |
function defineGetter(obj, key, getter) { | |
Object.defineProperty(obj, key, { | |
configurable: true, | |
enumerable: true, | |
get: getter, | |
}); | |
} | |
function lookupGetter(obj, key) { | |
const desc = Object.getOwnPropertyDescriptor(obj, key); | |
if (typeof desc !== 'undefined') { | |
return desc.get; | |
} | |
} | |
/* Hack an instance of Argv with process.argv into Argv | |
so people can do | |
require('yargs')(['--beeble=1','-z','zizzle']).argv | |
to parse a list of args and | |
require('yargs').argv | |
to get a parsed version of process.argv. | |
*/ | |
function singletonify(inst) { | |
[ | |
...Object.keys(inst), | |
...Object.getOwnPropertyNames(inst.constructor.prototype), | |
].forEach(key => { | |
if (key === 'argv') { | |
defineGetter(Argv, key, lookupGetter(inst, key)); | |
} else if (typeof inst[key] === 'function') { | |
Argv[key] = inst[key].bind(inst); | |
} else { | |
defineGetter(Argv, '$0', () => inst.$0); | |
defineGetter(Argv, 'parsed', () => inst.parsed); | |
} | |
}); | |
} |