| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | '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);    }  });}
 |