You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.1 KiB
59 lines
2.1 KiB
/** |
|
* @fileoverview Main entrypoint for libraries using yargs-parser in Node.js |
|
* CJS and ESM environments. |
|
* |
|
* @license |
|
* Copyright (c) 2016, Contributors |
|
* SPDX-License-Identifier: ISC |
|
*/ |
|
import { format } from 'util'; |
|
import { readFileSync } from 'fs'; |
|
import { normalize, resolve } from 'path'; |
|
import { camelCase, decamelize, looksLikeNumber } from './string-utils.js'; |
|
import { YargsParser } from './yargs-parser.js'; |
|
// See https://github.com/yargs/yargs-parser#supported-nodejs-versions for our |
|
// version support policy. The YARGS_MIN_NODE_VERSION is used for testing only. |
|
const minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION) |
|
? Number(process.env.YARGS_MIN_NODE_VERSION) |
|
: 10; |
|
if (process && process.version) { |
|
const major = Number(process.version.match(/v([^.]+)/)[1]); |
|
if (major < minNodeVersion) { |
|
throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`); |
|
} |
|
} |
|
// Creates a yargs-parser instance using Node.js standard libraries: |
|
const env = process ? process.env : {}; |
|
const parser = new YargsParser({ |
|
cwd: process.cwd, |
|
env: () => { |
|
return env; |
|
}, |
|
format, |
|
normalize, |
|
resolve, |
|
// TODO: figure out a way to combine ESM and CJS coverage, such that |
|
// we can exercise all the lines below: |
|
require: (path) => { |
|
if (typeof require !== 'undefined') { |
|
return require(path); |
|
} |
|
else if (path.match(/\.json$/)) { |
|
return readFileSync(path, 'utf8'); |
|
} |
|
else { |
|
throw Error('only .json config files are supported in ESM'); |
|
} |
|
} |
|
}); |
|
const yargsParser = function Parser(args, opts) { |
|
const result = parser.parse(args.slice(), opts); |
|
return result.argv; |
|
}; |
|
yargsParser.detailed = function (args, opts) { |
|
return parser.parse(args.slice(), opts); |
|
}; |
|
yargsParser.camelCase = camelCase; |
|
yargsParser.decamelize = decamelize; |
|
yargsParser.looksLikeNumber = looksLikeNumber; |
|
export default yargsParser;
|
|
|