1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /**
- * @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;
|