| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | '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;}/*  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') {      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;      });    }  });}
 |