node-version-use 1.9.0 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/cli.js CHANGED
@@ -9,7 +9,10 @@ Object.defineProperty(exports, "default", {
9
9
  }
10
10
  });
11
11
  var _exit = /*#__PURE__*/ _interop_require_default(require("exit"));
12
+ var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
12
13
  var _getoptscompat = /*#__PURE__*/ _interop_require_default(require("getopts-compat"));
14
+ var _path = /*#__PURE__*/ _interop_require_default(require("path"));
15
+ var _url = /*#__PURE__*/ _interop_require_default(require("url"));
13
16
  var _indexts = /*#__PURE__*/ _interop_require_default(require("./index.js"));
14
17
  var _loadSpawnTermts = /*#__PURE__*/ _interop_require_default(require("./lib/loadSpawnTerm.js"));
15
18
  function _interop_require_default(obj) {
@@ -17,7 +20,36 @@ function _interop_require_default(obj) {
17
20
  default: obj
18
21
  };
19
22
  }
23
+ var __dirname = _path.default.dirname(typeof __filename !== 'undefined' ? __filename : _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()));
20
24
  var ERROR_CODE = 13;
25
+ function getVersion() {
26
+ var packagePath = _path.default.join(__dirname, '..', '..', 'package.json');
27
+ var packageJson = JSON.parse(_fs.default.readFileSync(packagePath, 'utf8'));
28
+ return packageJson.version;
29
+ }
30
+ function printHelp(name) {
31
+ var version = getVersion();
32
+ console.log("".concat(name, " v").concat(version));
33
+ console.log('');
34
+ console.log("Usage: ".concat(name, " [options] <version> <command> [args...]"));
35
+ console.log('');
36
+ console.log('Run commands with specific Node.js versions');
37
+ console.log('');
38
+ console.log('Options:');
39
+ console.log(' -v, --version Print version number');
40
+ console.log(' -h, --help Print this help message');
41
+ console.log(' -r, --range Range type (major, minor, patch) with filters (lts, even, odd)');
42
+ console.log(' Default: major,even');
43
+ console.log(' -d, --desc Sort versions in descending order');
44
+ console.log(' -e, --expanded Use expanded version format');
45
+ console.log(' -s, --streaming Enable streaming output');
46
+ console.log(' --silent Suppress logging');
47
+ console.log('');
48
+ console.log('Examples:');
49
+ console.log(" ".concat(name, " 22 node --version"));
50
+ console.log(" ".concat(name, " 22,20,18 npm test"));
51
+ console.log(" ".concat(name, " engines node --version"));
52
+ }
21
53
  var _default = function(argv, name) {
22
54
  var options = (0, _getoptscompat.default)(argv, {
23
55
  alias: {
@@ -25,7 +57,9 @@ var _default = function(argv, name) {
25
57
  desc: 'd',
26
58
  expanded: 'e',
27
59
  streaming: 's',
28
- silent: 'si'
60
+ silent: 'si',
61
+ version: 'v',
62
+ help: 'h'
29
63
  },
30
64
  default: {
31
65
  range: 'major,even',
@@ -36,27 +70,42 @@ var _default = function(argv, name) {
36
70
  'desc',
37
71
  'expanded',
38
72
  'streaming',
39
- 'interactive'
73
+ 'interactive',
74
+ 'version',
75
+ 'help'
40
76
  ],
41
77
  stopEarly: true
42
78
  });
79
+ if (options.version) {
80
+ console.log(getVersion());
81
+ (0, _exit.default)(0);
82
+ return;
83
+ }
84
+ if (options.help) {
85
+ printHelp(name);
86
+ (0, _exit.default)(0);
87
+ return;
88
+ }
43
89
  // define.option('-r, --range [range]', 'range type of major, minor, or patch with filters of lts, even, odd for version string expressions', 'major,even');
44
90
  // define.option('-s, --silent', 'suppress logging', false);
45
91
  options.sort = options.desc ? -1 : 1;
46
92
  var args = options._;
47
93
  if (args.length === 0) {
48
94
  console.log("Missing version expression. Example usage: ".concat(name, " version command arg1 arg2"));
49
- return (0, _exit.default)(ERROR_CODE);
95
+ (0, _exit.default)(ERROR_CODE);
96
+ return;
50
97
  }
51
98
  if (args.length === 1) {
52
99
  console.log("Missing command. Example usage: ".concat(name, " version command arg1 arg2"));
53
- return (0, _exit.default)(ERROR_CODE);
100
+ (0, _exit.default)(ERROR_CODE);
101
+ return;
54
102
  }
55
103
  options.stdio = 'inherit'; // pass through stdio
56
- return (0, _indexts.default)(args[0], args[1], args.slice(2), options, function(err, results) {
104
+ (0, _indexts.default)(args[0], args[1], args.slice(2), options, function(err, results) {
57
105
  if (err && !err.results) {
58
106
  console.log(err.message);
59
- return (0, _exit.default)(ERROR_CODE);
107
+ (0, _exit.default)(ERROR_CODE);
108
+ return;
60
109
  }
61
110
  if (err) results = err.results;
62
111
  var errors = results.filter(function(result) {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/cli.ts"],"sourcesContent":["import exit from 'exit';\nimport getopts from 'getopts-compat';\nimport run from './index.ts';\nimport loadSpawnTerm from './lib/loadSpawnTerm.ts';\nimport type { UseError, UseOptions, UseResult } from './types.ts';\n\nconst ERROR_CODE = 13;\n\nexport default (argv: string[], name: string): undefined => {\n const options = getopts(argv, {\n alias: { range: 'r', desc: 'd', expanded: 'e', streaming: 's', silent: 'si' },\n default: { range: 'major,even', interactive: true },\n boolean: ['silent', 'desc', 'expanded', 'streaming', 'interactive'],\n stopEarly: true,\n });\n\n // define.option('-r, --range [range]', 'range type of major, minor, or patch with filters of lts, even, odd for version string expressions', 'major,even');\n // define.option('-s, --silent', 'suppress logging', false);\n options.sort = options.desc ? -1 : 1;\n\n const args = options._;\n if (args.length === 0) {\n console.log(`Missing version expression. Example usage: ${name} version command arg1 arg2`);\n return exit(ERROR_CODE);\n }\n if (args.length === 1) {\n console.log(`Missing command. Example usage: ${name} version command arg1 arg2`);\n return exit(ERROR_CODE);\n }\n\n options.stdio = 'inherit'; // pass through stdio\n return run(args[0], args[1], args.slice(2), options as unknown as UseOptions, (err: UseError, results: UseResult[]): undefined => {\n if (err && !err.results) {\n console.log(err.message);\n return exit(ERROR_CODE);\n }\n if (err) results = err.results;\n const errors = results.filter((result) => !!result.error);\n\n if (!options.silent) {\n // Load spawn-term to get figures/formatArguments for output formatting\n loadSpawnTerm((_loadErr, mod) => {\n const { createSession, figures, formatArguments } = mod || { createSession: undefined, figures: { tick: '✓', cross: '✗' }, formatArguments: (x: string[]) => x };\n if (!createSession) {\n console.log('\\n======================');\n results.forEach((res) => {\n console.log(`${res.error ? figures.cross : figures.tick} ${res.version}${res.error ? ` Error: ${res.error.message}` : ''}`);\n });\n console.log('\\n----------------------');\n console.log(`${name} ${formatArguments(args).join(' ')}`);\n console.log(`${figures.tick} ${results.length - errors.length} succeeded`);\n if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);\n }\n exit(err || errors.length ? ERROR_CODE : 0);\n });\n } else {\n exit(err || errors.length ? ERROR_CODE : 0);\n }\n });\n};\n"],"names":["ERROR_CODE","argv","name","options","getopts","alias","range","desc","expanded","streaming","silent","default","interactive","boolean","stopEarly","sort","args","_","length","console","log","exit","stdio","run","slice","err","results","message","errors","filter","result","error","loadSpawnTerm","_loadErr","mod","createSession","undefined","figures","tick","cross","formatArguments","x","forEach","res","version","join"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/cli.ts"],"sourcesContent":["import exit from 'exit';\nimport fs from 'fs';\nimport getopts from 'getopts-compat';\nimport path from 'path';\nimport url from 'url';\nimport run from './index.ts';\nimport loadSpawnTerm from './lib/loadSpawnTerm.ts';\nimport type { UseError, UseOptions, UseResult } from './types.ts';\n\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\nconst ERROR_CODE = 13;\n\nfunction getVersion(): string {\n const packagePath = path.join(__dirname, '..', '..', 'package.json');\n const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8'));\n return packageJson.version;\n}\n\nfunction printHelp(name: string): void {\n const version = getVersion();\n console.log(`${name} v${version}`);\n console.log('');\n console.log(`Usage: ${name} [options] <version> <command> [args...]`);\n console.log('');\n console.log('Run commands with specific Node.js versions');\n console.log('');\n console.log('Options:');\n console.log(' -v, --version Print version number');\n console.log(' -h, --help Print this help message');\n console.log(' -r, --range Range type (major, minor, patch) with filters (lts, even, odd)');\n console.log(' Default: major,even');\n console.log(' -d, --desc Sort versions in descending order');\n console.log(' -e, --expanded Use expanded version format');\n console.log(' -s, --streaming Enable streaming output');\n console.log(' --silent Suppress logging');\n console.log('');\n console.log('Examples:');\n console.log(` ${name} 22 node --version`);\n console.log(` ${name} 22,20,18 npm test`);\n console.log(` ${name} engines node --version`);\n}\n\nexport default (argv: string[], name: string): undefined => {\n const options = getopts(argv, {\n alias: { range: 'r', desc: 'd', expanded: 'e', streaming: 's', silent: 'si', version: 'v', help: 'h' },\n default: { range: 'major,even', interactive: true },\n boolean: ['silent', 'desc', 'expanded', 'streaming', 'interactive', 'version', 'help'],\n stopEarly: true,\n });\n\n if (options.version) {\n console.log(getVersion());\n exit(0);\n return;\n }\n\n if (options.help) {\n printHelp(name);\n exit(0);\n return;\n }\n\n // define.option('-r, --range [range]', 'range type of major, minor, or patch with filters of lts, even, odd for version string expressions', 'major,even');\n // define.option('-s, --silent', 'suppress logging', false);\n options.sort = options.desc ? -1 : 1;\n\n const args = options._;\n if (args.length === 0) {\n console.log(`Missing version expression. Example usage: ${name} version command arg1 arg2`);\n exit(ERROR_CODE);\n return;\n }\n if (args.length === 1) {\n console.log(`Missing command. Example usage: ${name} version command arg1 arg2`);\n exit(ERROR_CODE);\n return;\n }\n\n options.stdio = 'inherit'; // pass through stdio\n run(args[0], args[1], args.slice(2), options as unknown as UseOptions, (err: UseError, results: UseResult[]): undefined => {\n if (err && !err.results) {\n console.log(err.message);\n exit(ERROR_CODE);\n return;\n }\n if (err) results = err.results;\n const errors = results.filter((result) => !!result.error);\n\n if (!options.silent) {\n // Load spawn-term to get figures/formatArguments for output formatting\n loadSpawnTerm((_loadErr, mod) => {\n const { createSession, figures, formatArguments } = mod || { createSession: undefined, figures: { tick: '✓', cross: '✗' }, formatArguments: (x: string[]) => x };\n if (!createSession) {\n console.log('\\n======================');\n results.forEach((res) => {\n console.log(`${res.error ? figures.cross : figures.tick} ${res.version}${res.error ? ` Error: ${res.error.message}` : ''}`);\n });\n console.log('\\n----------------------');\n console.log(`${name} ${formatArguments(args).join(' ')}`);\n console.log(`${figures.tick} ${results.length - errors.length} succeeded`);\n if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);\n }\n exit(err || errors.length ? ERROR_CODE : 0);\n });\n } else {\n exit(err || errors.length ? ERROR_CODE : 0);\n }\n });\n};\n"],"names":["__dirname","path","dirname","__filename","url","fileURLToPath","ERROR_CODE","getVersion","packagePath","join","packageJson","JSON","parse","fs","readFileSync","version","printHelp","name","console","log","argv","options","getopts","alias","range","desc","expanded","streaming","silent","help","default","interactive","boolean","stopEarly","exit","sort","args","_","length","stdio","run","slice","err","results","message","errors","filter","result","error","loadSpawnTerm","_loadErr","mod","createSession","undefined","figures","tick","cross","formatArguments","x","forEach","res"],"mappings":"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"}
package/dist/esm/cli.js CHANGED
@@ -1,8 +1,40 @@
1
1
  import exit from 'exit';
2
+ import fs from 'fs';
2
3
  import getopts from 'getopts-compat';
4
+ import path from 'path';
5
+ import url from 'url';
3
6
  import run from './index.js';
4
7
  import loadSpawnTerm from './lib/loadSpawnTerm.js';
8
+ const __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));
5
9
  const ERROR_CODE = 13;
10
+ function getVersion() {
11
+ const packagePath = path.join(__dirname, '..', '..', 'package.json');
12
+ const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8'));
13
+ return packageJson.version;
14
+ }
15
+ function printHelp(name) {
16
+ const version = getVersion();
17
+ console.log(`${name} v${version}`);
18
+ console.log('');
19
+ console.log(`Usage: ${name} [options] <version> <command> [args...]`);
20
+ console.log('');
21
+ console.log('Run commands with specific Node.js versions');
22
+ console.log('');
23
+ console.log('Options:');
24
+ console.log(' -v, --version Print version number');
25
+ console.log(' -h, --help Print this help message');
26
+ console.log(' -r, --range Range type (major, minor, patch) with filters (lts, even, odd)');
27
+ console.log(' Default: major,even');
28
+ console.log(' -d, --desc Sort versions in descending order');
29
+ console.log(' -e, --expanded Use expanded version format');
30
+ console.log(' -s, --streaming Enable streaming output');
31
+ console.log(' --silent Suppress logging');
32
+ console.log('');
33
+ console.log('Examples:');
34
+ console.log(` ${name} 22 node --version`);
35
+ console.log(` ${name} 22,20,18 npm test`);
36
+ console.log(` ${name} engines node --version`);
37
+ }
6
38
  export default ((argv, name)=>{
7
39
  const options = getopts(argv, {
8
40
  alias: {
@@ -10,7 +42,9 @@ export default ((argv, name)=>{
10
42
  desc: 'd',
11
43
  expanded: 'e',
12
44
  streaming: 's',
13
- silent: 'si'
45
+ silent: 'si',
46
+ version: 'v',
47
+ help: 'h'
14
48
  },
15
49
  default: {
16
50
  range: 'major,even',
@@ -21,27 +55,42 @@ export default ((argv, name)=>{
21
55
  'desc',
22
56
  'expanded',
23
57
  'streaming',
24
- 'interactive'
58
+ 'interactive',
59
+ 'version',
60
+ 'help'
25
61
  ],
26
62
  stopEarly: true
27
63
  });
64
+ if (options.version) {
65
+ console.log(getVersion());
66
+ exit(0);
67
+ return;
68
+ }
69
+ if (options.help) {
70
+ printHelp(name);
71
+ exit(0);
72
+ return;
73
+ }
28
74
  // define.option('-r, --range [range]', 'range type of major, minor, or patch with filters of lts, even, odd for version string expressions', 'major,even');
29
75
  // define.option('-s, --silent', 'suppress logging', false);
30
76
  options.sort = options.desc ? -1 : 1;
31
77
  const args = options._;
32
78
  if (args.length === 0) {
33
79
  console.log(`Missing version expression. Example usage: ${name} version command arg1 arg2`);
34
- return exit(ERROR_CODE);
80
+ exit(ERROR_CODE);
81
+ return;
35
82
  }
36
83
  if (args.length === 1) {
37
84
  console.log(`Missing command. Example usage: ${name} version command arg1 arg2`);
38
- return exit(ERROR_CODE);
85
+ exit(ERROR_CODE);
86
+ return;
39
87
  }
40
88
  options.stdio = 'inherit'; // pass through stdio
41
- return run(args[0], args[1], args.slice(2), options, (err, results)=>{
89
+ run(args[0], args[1], args.slice(2), options, (err, results)=>{
42
90
  if (err && !err.results) {
43
91
  console.log(err.message);
44
- return exit(ERROR_CODE);
92
+ exit(ERROR_CODE);
93
+ return;
45
94
  }
46
95
  if (err) results = err.results;
47
96
  const errors = results.filter((result)=>!!result.error);
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/cli.ts"],"sourcesContent":["import exit from 'exit';\nimport getopts from 'getopts-compat';\nimport run from './index.ts';\nimport loadSpawnTerm from './lib/loadSpawnTerm.ts';\nimport type { UseError, UseOptions, UseResult } from './types.ts';\n\nconst ERROR_CODE = 13;\n\nexport default (argv: string[], name: string): undefined => {\n const options = getopts(argv, {\n alias: { range: 'r', desc: 'd', expanded: 'e', streaming: 's', silent: 'si' },\n default: { range: 'major,even', interactive: true },\n boolean: ['silent', 'desc', 'expanded', 'streaming', 'interactive'],\n stopEarly: true,\n });\n\n // define.option('-r, --range [range]', 'range type of major, minor, or patch with filters of lts, even, odd for version string expressions', 'major,even');\n // define.option('-s, --silent', 'suppress logging', false);\n options.sort = options.desc ? -1 : 1;\n\n const args = options._;\n if (args.length === 0) {\n console.log(`Missing version expression. Example usage: ${name} version command arg1 arg2`);\n return exit(ERROR_CODE);\n }\n if (args.length === 1) {\n console.log(`Missing command. Example usage: ${name} version command arg1 arg2`);\n return exit(ERROR_CODE);\n }\n\n options.stdio = 'inherit'; // pass through stdio\n return run(args[0], args[1], args.slice(2), options as unknown as UseOptions, (err: UseError, results: UseResult[]): undefined => {\n if (err && !err.results) {\n console.log(err.message);\n return exit(ERROR_CODE);\n }\n if (err) results = err.results;\n const errors = results.filter((result) => !!result.error);\n\n if (!options.silent) {\n // Load spawn-term to get figures/formatArguments for output formatting\n loadSpawnTerm((_loadErr, mod) => {\n const { createSession, figures, formatArguments } = mod || { createSession: undefined, figures: { tick: '✓', cross: '✗' }, formatArguments: (x: string[]) => x };\n if (!createSession) {\n console.log('\\n======================');\n results.forEach((res) => {\n console.log(`${res.error ? figures.cross : figures.tick} ${res.version}${res.error ? ` Error: ${res.error.message}` : ''}`);\n });\n console.log('\\n----------------------');\n console.log(`${name} ${formatArguments(args).join(' ')}`);\n console.log(`${figures.tick} ${results.length - errors.length} succeeded`);\n if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);\n }\n exit(err || errors.length ? ERROR_CODE : 0);\n });\n } else {\n exit(err || errors.length ? ERROR_CODE : 0);\n }\n });\n};\n"],"names":["exit","getopts","run","loadSpawnTerm","ERROR_CODE","argv","name","options","alias","range","desc","expanded","streaming","silent","default","interactive","boolean","stopEarly","sort","args","_","length","console","log","stdio","slice","err","results","message","errors","filter","result","error","_loadErr","mod","createSession","figures","formatArguments","undefined","tick","cross","x","forEach","res","version","join"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,aAAa,iBAAiB;AACrC,OAAOC,SAAS,aAAa;AAC7B,OAAOC,mBAAmB,yBAAyB;AAGnD,MAAMC,aAAa;AAEnB,eAAe,CAAA,CAACC,MAAgBC;IAC9B,MAAMC,UAAUN,QAAQI,MAAM;QAC5BG,OAAO;YAAEC,OAAO;YAAKC,MAAM;YAAKC,UAAU;YAAKC,WAAW;YAAKC,QAAQ;QAAK;QAC5EC,SAAS;YAAEL,OAAO;YAAcM,aAAa;QAAK;QAClDC,SAAS;YAAC;YAAU;YAAQ;YAAY;YAAa;SAAc;QACnEC,WAAW;IACb;IAEA,4JAA4J;IAC5J,4DAA4D;IAC5DV,QAAQW,IAAI,GAAGX,QAAQG,IAAI,GAAG,CAAC,IAAI;IAEnC,MAAMS,OAAOZ,QAAQa,CAAC;IACtB,IAAID,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,CAAC,2CAA2C,EAAEjB,KAAK,0BAA0B,CAAC;QAC1F,OAAON,KAAKI;IACd;IACA,IAAIe,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,CAAC,gCAAgC,EAAEjB,KAAK,0BAA0B,CAAC;QAC/E,OAAON,KAAKI;IACd;IAEAG,QAAQiB,KAAK,GAAG,WAAW,qBAAqB;IAChD,OAAOtB,IAAIiB,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,EAAE,EAAEA,KAAKM,KAAK,CAAC,IAAIlB,SAAkC,CAACmB,KAAeC;QAC5F,IAAID,OAAO,CAACA,IAAIC,OAAO,EAAE;YACvBL,QAAQC,GAAG,CAACG,IAAIE,OAAO;YACvB,OAAO5B,KAAKI;QACd;QACA,IAAIsB,KAAKC,UAAUD,IAAIC,OAAO;QAC9B,MAAME,SAASF,QAAQG,MAAM,CAAC,CAACC,SAAW,CAAC,CAACA,OAAOC,KAAK;QAExD,IAAI,CAACzB,QAAQM,MAAM,EAAE;YACnB,uEAAuE;YACvEV,cAAc,CAAC8B,UAAUC;gBACvB,MAAM,EAAEC,aAAa,EAAEC,OAAO,EAAEC,eAAe,EAAE,GAAGH,OAAO;oBAAEC,eAAeG;oBAAWF,SAAS;wBAAEG,MAAM;wBAAKC,OAAO;oBAAI;oBAAGH,iBAAiB,CAACI,IAAgBA;gBAAE;gBAC/J,IAAI,CAACN,eAAe;oBAClBb,QAAQC,GAAG,CAAC;oBACZI,QAAQe,OAAO,CAAC,CAACC;wBACfrB,QAAQC,GAAG,CAAC,GAAGoB,IAAIX,KAAK,GAAGI,QAAQI,KAAK,GAAGJ,QAAQG,IAAI,CAAC,CAAC,EAAEI,IAAIC,OAAO,GAAGD,IAAIX,KAAK,GAAG,CAAC,QAAQ,EAAEW,IAAIX,KAAK,CAACJ,OAAO,EAAE,GAAG,IAAI;oBAC5H;oBACAN,QAAQC,GAAG,CAAC;oBACZD,QAAQC,GAAG,CAAC,GAAGjB,KAAK,CAAC,EAAE+B,gBAAgBlB,MAAM0B,IAAI,CAAC,MAAM;oBACxDvB,QAAQC,GAAG,CAAC,GAAGa,QAAQG,IAAI,CAAC,CAAC,EAAEZ,QAAQN,MAAM,GAAGQ,OAAOR,MAAM,CAAC,UAAU,CAAC;oBACzE,IAAIQ,OAAOR,MAAM,EAAEC,QAAQC,GAAG,CAAC,GAAGa,QAAQI,KAAK,CAAC,CAAC,EAAEX,OAAOR,MAAM,CAAC,OAAO,CAAC;gBAC3E;gBACArB,KAAK0B,OAAOG,OAAOR,MAAM,GAAGjB,aAAa;YAC3C;QACF,OAAO;YACLJ,KAAK0B,OAAOG,OAAOR,MAAM,GAAGjB,aAAa;QAC3C;IACF;AACF,CAAA,EAAE"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/cli.ts"],"sourcesContent":["import exit from 'exit';\nimport fs from 'fs';\nimport getopts from 'getopts-compat';\nimport path from 'path';\nimport url from 'url';\nimport run from './index.ts';\nimport loadSpawnTerm from './lib/loadSpawnTerm.ts';\nimport type { UseError, UseOptions, UseResult } from './types.ts';\n\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\nconst ERROR_CODE = 13;\n\nfunction getVersion(): string {\n const packagePath = path.join(__dirname, '..', '..', 'package.json');\n const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8'));\n return packageJson.version;\n}\n\nfunction printHelp(name: string): void {\n const version = getVersion();\n console.log(`${name} v${version}`);\n console.log('');\n console.log(`Usage: ${name} [options] <version> <command> [args...]`);\n console.log('');\n console.log('Run commands with specific Node.js versions');\n console.log('');\n console.log('Options:');\n console.log(' -v, --version Print version number');\n console.log(' -h, --help Print this help message');\n console.log(' -r, --range Range type (major, minor, patch) with filters (lts, even, odd)');\n console.log(' Default: major,even');\n console.log(' -d, --desc Sort versions in descending order');\n console.log(' -e, --expanded Use expanded version format');\n console.log(' -s, --streaming Enable streaming output');\n console.log(' --silent Suppress logging');\n console.log('');\n console.log('Examples:');\n console.log(` ${name} 22 node --version`);\n console.log(` ${name} 22,20,18 npm test`);\n console.log(` ${name} engines node --version`);\n}\n\nexport default (argv: string[], name: string): undefined => {\n const options = getopts(argv, {\n alias: { range: 'r', desc: 'd', expanded: 'e', streaming: 's', silent: 'si', version: 'v', help: 'h' },\n default: { range: 'major,even', interactive: true },\n boolean: ['silent', 'desc', 'expanded', 'streaming', 'interactive', 'version', 'help'],\n stopEarly: true,\n });\n\n if (options.version) {\n console.log(getVersion());\n exit(0);\n return;\n }\n\n if (options.help) {\n printHelp(name);\n exit(0);\n return;\n }\n\n // define.option('-r, --range [range]', 'range type of major, minor, or patch with filters of lts, even, odd for version string expressions', 'major,even');\n // define.option('-s, --silent', 'suppress logging', false);\n options.sort = options.desc ? -1 : 1;\n\n const args = options._;\n if (args.length === 0) {\n console.log(`Missing version expression. Example usage: ${name} version command arg1 arg2`);\n exit(ERROR_CODE);\n return;\n }\n if (args.length === 1) {\n console.log(`Missing command. Example usage: ${name} version command arg1 arg2`);\n exit(ERROR_CODE);\n return;\n }\n\n options.stdio = 'inherit'; // pass through stdio\n run(args[0], args[1], args.slice(2), options as unknown as UseOptions, (err: UseError, results: UseResult[]): undefined => {\n if (err && !err.results) {\n console.log(err.message);\n exit(ERROR_CODE);\n return;\n }\n if (err) results = err.results;\n const errors = results.filter((result) => !!result.error);\n\n if (!options.silent) {\n // Load spawn-term to get figures/formatArguments for output formatting\n loadSpawnTerm((_loadErr, mod) => {\n const { createSession, figures, formatArguments } = mod || { createSession: undefined, figures: { tick: '✓', cross: '✗' }, formatArguments: (x: string[]) => x };\n if (!createSession) {\n console.log('\\n======================');\n results.forEach((res) => {\n console.log(`${res.error ? figures.cross : figures.tick} ${res.version}${res.error ? ` Error: ${res.error.message}` : ''}`);\n });\n console.log('\\n----------------------');\n console.log(`${name} ${formatArguments(args).join(' ')}`);\n console.log(`${figures.tick} ${results.length - errors.length} succeeded`);\n if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);\n }\n exit(err || errors.length ? ERROR_CODE : 0);\n });\n } else {\n exit(err || errors.length ? ERROR_CODE : 0);\n }\n });\n};\n"],"names":["exit","fs","getopts","path","url","run","loadSpawnTerm","__dirname","dirname","__filename","fileURLToPath","ERROR_CODE","getVersion","packagePath","join","packageJson","JSON","parse","readFileSync","version","printHelp","name","console","log","argv","options","alias","range","desc","expanded","streaming","silent","help","default","interactive","boolean","stopEarly","sort","args","_","length","stdio","slice","err","results","message","errors","filter","result","error","_loadErr","mod","createSession","figures","formatArguments","undefined","tick","cross","x","forEach","res"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-version-use",
3
- "version": "1.9.0",
3
+ "version": "1.9.1",
4
4
  "description": "Cross-platform solution for using multiple versions of node. Useful for compatibility testing",
5
5
  "keywords": [
6
6
  "node",