@oclif/core 2.12.0 → 2.14.0
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/lib/cli-ux/action/spinner.js +1 -1
- package/lib/cli-ux/config.js +5 -6
- package/lib/cli-ux/prompt.js +2 -2
- package/lib/config/config.js +23 -7
- package/lib/errors/logger.js +3 -3
- package/lib/index.js +0 -9
- package/lib/module-loader.js +4 -4
- package/package.json +4 -6
|
@@ -4,7 +4,6 @@ const chalk = require("chalk");
|
|
|
4
4
|
const supportsColor = require("supports-color");
|
|
5
5
|
const stripAnsi = require('strip-ansi');
|
|
6
6
|
const ansiStyles = require('ansi-styles');
|
|
7
|
-
const ansiEscapes = require('ansi-escapes');
|
|
8
7
|
const screen_1 = require("../../screen");
|
|
9
8
|
const spinners_1 = require("./spinners");
|
|
10
9
|
const base_1 = require("./base");
|
|
@@ -65,6 +64,7 @@ class SpinnerAction extends base_1.ActionBase {
|
|
|
65
64
|
_reset() {
|
|
66
65
|
if (!this.output)
|
|
67
66
|
return;
|
|
67
|
+
const ansiEscapes = require('ansi-escapes');
|
|
68
68
|
const lines = this._lines(this.output);
|
|
69
69
|
this._write(this.std, ansiEscapes.cursorLeft + ansiEscapes.cursorUp(lines) + ansiEscapes.eraseDown);
|
|
70
70
|
this.output = undefined;
|
package/lib/cli-ux/config.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.config = exports.Config = void 0;
|
|
4
|
-
const semver = require("semver");
|
|
5
4
|
const util_1 = require("../util");
|
|
6
5
|
const spinner_1 = require("./action/spinner");
|
|
7
6
|
const spinner_2 = require("./action/spinner");
|
|
8
7
|
const pride_spinner_1 = require("./action/pride-spinner");
|
|
9
|
-
const version = semver.parse((0, util_1.requireJson)(__dirname, '..', '..', 'package.json').version);
|
|
10
8
|
const g = global;
|
|
11
9
|
const globals = g['cli-ux'] || (g['cli-ux'] = {});
|
|
12
10
|
const actionType = (Boolean(process.stderr.isTTY) &&
|
|
@@ -38,10 +36,11 @@ class Config {
|
|
|
38
36
|
}
|
|
39
37
|
exports.Config = Config;
|
|
40
38
|
function fetch() {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
const major = (0, util_1.requireJson)(__dirname, '..', '..', 'package.json').version.split('.')[0];
|
|
40
|
+
if (globals[major])
|
|
41
|
+
return globals[major];
|
|
42
|
+
globals[major] = new Config();
|
|
43
|
+
return globals[major];
|
|
45
44
|
}
|
|
46
45
|
exports.config = fetch();
|
|
47
46
|
exports.default = exports.config;
|
package/lib/cli-ux/prompt.js
CHANGED
|
@@ -5,8 +5,6 @@ const Errors = require("../errors");
|
|
|
5
5
|
const config_1 = require("./config");
|
|
6
6
|
const chalk = require("chalk");
|
|
7
7
|
const stream_1 = require("./stream");
|
|
8
|
-
const ansiEscapes = require('ansi-escapes');
|
|
9
|
-
const passwordPrompt = require('password-prompt');
|
|
10
8
|
function normal(options, retries = 100) {
|
|
11
9
|
if (retries < 0)
|
|
12
10
|
throw new Error('no input');
|
|
@@ -58,6 +56,7 @@ async function single(options) {
|
|
|
58
56
|
return response;
|
|
59
57
|
}
|
|
60
58
|
function replacePrompt(prompt) {
|
|
59
|
+
const ansiEscapes = require('ansi-escapes');
|
|
61
60
|
stream_1.stderr.write(ansiEscapes.cursorHide + ansiEscapes.cursorUp(1) + ansiEscapes.cursorLeft + prompt +
|
|
62
61
|
ansiEscapes.cursorDown(1) + ansiEscapes.cursorLeft + ansiEscapes.cursorShow);
|
|
63
62
|
}
|
|
@@ -72,6 +71,7 @@ async function _prompt(name, inputOptions = {}) {
|
|
|
72
71
|
default: '',
|
|
73
72
|
...inputOptions,
|
|
74
73
|
};
|
|
74
|
+
const passwordPrompt = require('password-prompt');
|
|
75
75
|
switch (options.type) {
|
|
76
76
|
case 'normal':
|
|
77
77
|
return normal(options);
|
package/lib/config/config.js
CHANGED
|
@@ -15,9 +15,8 @@ const help_1 = require("../help");
|
|
|
15
15
|
const stream_1 = require("../cli-ux/stream");
|
|
16
16
|
const performance_1 = require("../performance");
|
|
17
17
|
const settings_1 = require("../settings");
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const semver_1 = require("semver");
|
|
18
|
+
const os_1 = require("os");
|
|
19
|
+
const path_1 = require("path");
|
|
21
20
|
// eslint-disable-next-line new-cap
|
|
22
21
|
const debug = (0, util_2.Debug)();
|
|
23
22
|
const _pjson = (0, util_3.requireJson)(__dirname, '..', '..', 'package.json');
|
|
@@ -71,8 +70,24 @@ class Config {
|
|
|
71
70
|
this.topicPermutations = new Permutations();
|
|
72
71
|
this._commands = new Map();
|
|
73
72
|
this._topics = new Map();
|
|
74
|
-
if (options.config)
|
|
75
|
-
|
|
73
|
+
if (options.config) {
|
|
74
|
+
if (Array.isArray(options.config.plugins) && Array.isArray(this.plugins)) {
|
|
75
|
+
// incoming config is v2 with plugins array and this config is v2 with plugins array
|
|
76
|
+
Object.assign(this, options.config);
|
|
77
|
+
}
|
|
78
|
+
else if (Array.isArray(options.config.plugins) && !Array.isArray(this.plugins)) {
|
|
79
|
+
// incoming config is v2 with plugins array and this config is v3 with plugin Map
|
|
80
|
+
Object.assign(this, options.config, { plugins: new Map(options.config.plugins.map(p => [p.name, p])) });
|
|
81
|
+
}
|
|
82
|
+
else if (!Array.isArray(options.config.plugins) && Array.isArray(this.plugins)) {
|
|
83
|
+
// incoming config is v3 with plugin Map and this config is v2 with plugins array
|
|
84
|
+
Object.assign(this, options.config, { plugins: options.config.getPluginsList() });
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// incoming config is v3 with plugin Map and this config is v3 with plugin Map
|
|
88
|
+
Object.assign(this, options.config);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
76
91
|
}
|
|
77
92
|
static async load(opts = module.filename || __dirname) {
|
|
78
93
|
// Handle the case when a file URL string is passed in such as 'import.meta.url'; covert to file path.
|
|
@@ -82,6 +97,7 @@ class Config {
|
|
|
82
97
|
if (typeof opts === 'string')
|
|
83
98
|
opts = { root: opts };
|
|
84
99
|
if (isConfig(opts)) {
|
|
100
|
+
const { lt } = await import('semver');
|
|
85
101
|
const currentConfigBase = BASE.replace('@oclif/core@', '');
|
|
86
102
|
const incomingConfigBase = opts._base.replace('@oclif/core@', '');
|
|
87
103
|
/**
|
|
@@ -94,7 +110,7 @@ class Config {
|
|
|
94
110
|
* exists in the version of Config required by the command but may not exist on the
|
|
95
111
|
* root's instance of Config.
|
|
96
112
|
*/
|
|
97
|
-
if (
|
|
113
|
+
if (lt(incomingConfigBase, currentConfigBase)) {
|
|
98
114
|
debug(`reloading config from ${opts._base} to ${BASE}`);
|
|
99
115
|
return new Config({ ...opts.options, config: opts });
|
|
100
116
|
}
|
|
@@ -507,7 +523,7 @@ class Config {
|
|
|
507
523
|
_shell() {
|
|
508
524
|
let shellPath;
|
|
509
525
|
const COMSPEC = process.env.COMSPEC;
|
|
510
|
-
const SHELL = process.env.SHELL ?? (0,
|
|
526
|
+
const SHELL = process.env.SHELL ?? (0, os_1.userInfo)().shell?.split(path_1.sep)?.pop();
|
|
511
527
|
if (SHELL) {
|
|
512
528
|
shellPath = SHELL.split('/');
|
|
513
529
|
}
|
package/lib/errors/logger.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Logger = void 0;
|
|
4
|
-
const fs = require("fs
|
|
5
|
-
const
|
|
4
|
+
const fs = require("fs/promises");
|
|
5
|
+
const path_1 = require("path");
|
|
6
6
|
const stripAnsi = require("strip-ansi");
|
|
7
7
|
const timestamp = () => new Date().toISOString();
|
|
8
8
|
let timer;
|
|
@@ -35,7 +35,7 @@ class Logger {
|
|
|
35
35
|
return;
|
|
36
36
|
const mylines = this.buffer;
|
|
37
37
|
this.buffer = [];
|
|
38
|
-
await fs.
|
|
38
|
+
await fs.mkdir((0, path_1.dirname)(this.file), { recursive: true });
|
|
39
39
|
await fs.appendFile(this.file, mylines.join('\n') + '\n');
|
|
40
40
|
});
|
|
41
41
|
await this.flushing;
|
package/lib/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.stdout = exports.stderr = exports.execute = exports.ux = exports.flush = exports.settings = exports.toConfiguredId = exports.toStandardizedId = exports.tsPath = exports.toCached = exports.run = exports.Performance = exports.Plugin = exports.Parser = exports.Interfaces = exports.HelpBase = exports.Help = exports.loadHelpClass = exports.Flags = exports.Errors = exports.Config = exports.CommandHelp = exports.Command = exports.Args = void 0;
|
|
4
|
-
const semver = require("semver");
|
|
5
4
|
const command_1 = require("./command");
|
|
6
5
|
Object.defineProperty(exports, "Command", { enumerable: true, get: function () { return command_1.Command; } });
|
|
7
6
|
const main_1 = require("./main");
|
|
@@ -34,7 +33,6 @@ const settings_1 = require("./settings");
|
|
|
34
33
|
Object.defineProperty(exports, "settings", { enumerable: true, get: function () { return settings_1.settings; } });
|
|
35
34
|
const ux = require("./cli-ux");
|
|
36
35
|
exports.ux = ux;
|
|
37
|
-
const util_2 = require("./util");
|
|
38
36
|
const stream_1 = require("./cli-ux/stream");
|
|
39
37
|
Object.defineProperty(exports, "stderr", { enumerable: true, get: function () { return stream_1.stderr; } });
|
|
40
38
|
Object.defineProperty(exports, "stdout", { enumerable: true, get: function () { return stream_1.stdout; } });
|
|
@@ -52,11 +50,4 @@ function checkCWD() {
|
|
|
52
50
|
}
|
|
53
51
|
}
|
|
54
52
|
}
|
|
55
|
-
function checkNodeVersion() {
|
|
56
|
-
const pjson = (0, util_2.requireJson)(__dirname, '..', 'package.json');
|
|
57
|
-
if (!semver.satisfies(process.versions.node, pjson.engines.node)) {
|
|
58
|
-
stream_1.stderr.write(`WARNING\nWARNING Node version must be ${pjson.engines.node} to use this CLI\nWARNING Current node version: ${process.versions.node}\nWARNING\n`);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
53
|
checkCWD();
|
|
62
|
-
checkNodeVersion();
|
package/lib/module-loader.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const path = require("path");
|
|
4
4
|
const url = require("url");
|
|
5
|
-
const
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
6
|
const errors_1 = require("./errors");
|
|
7
7
|
const Config = require("./config");
|
|
8
8
|
const getPackageType = require('get-package-type');
|
|
@@ -131,10 +131,10 @@ class ModuleLoader {
|
|
|
131
131
|
filePath = isPlugin(config) ? Config.tsPath(config.root, modulePath, config.type) : Config.tsPath(config.root, modulePath);
|
|
132
132
|
let fileExists = false;
|
|
133
133
|
let isDirectory = false;
|
|
134
|
-
if (
|
|
134
|
+
if ((0, fs_1.existsSync)(filePath)) {
|
|
135
135
|
fileExists = true;
|
|
136
136
|
try {
|
|
137
|
-
if (
|
|
137
|
+
if ((0, fs_1.lstatSync)(filePath)?.isDirectory?.()) {
|
|
138
138
|
fileExists = false;
|
|
139
139
|
isDirectory = true;
|
|
140
140
|
}
|
|
@@ -167,7 +167,7 @@ class ModuleLoader {
|
|
|
167
167
|
// eslint-disable-next-line camelcase
|
|
168
168
|
for (const extension of s_EXTENSIONS) {
|
|
169
169
|
const testPath = `${filePath}${extension}`;
|
|
170
|
-
if (
|
|
170
|
+
if ((0, fs_1.existsSync)(testPath)) {
|
|
171
171
|
return testPath;
|
|
172
172
|
}
|
|
173
173
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oclif/core",
|
|
3
3
|
"description": "base library for oclif CLIs",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.14.0",
|
|
5
5
|
"author": "Salesforce",
|
|
6
6
|
"bugs": "https://github.com/oclif/core/issues",
|
|
7
7
|
"dependencies": {
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
"cli-progress": "^3.12.0",
|
|
15
15
|
"debug": "^4.3.4",
|
|
16
16
|
"ejs": "^3.1.8",
|
|
17
|
-
"fs-extra": "^9.1.0",
|
|
18
17
|
"get-package-type": "^0.1.0",
|
|
19
18
|
"globby": "^11.1.0",
|
|
20
19
|
"hyperlinker": "^1.0.0",
|
|
@@ -24,7 +23,7 @@
|
|
|
24
23
|
"natural-orderby": "^2.0.3",
|
|
25
24
|
"object-treeify": "^1.1.33",
|
|
26
25
|
"password-prompt": "^1.1.2",
|
|
27
|
-
"semver": "^7.5.
|
|
26
|
+
"semver": "^7.5.4",
|
|
28
27
|
"slice-ansi": "^4.0.0",
|
|
29
28
|
"string-width": "^4.2.3",
|
|
30
29
|
"strip-ansi": "^6.0.1",
|
|
@@ -47,7 +46,6 @@
|
|
|
47
46
|
"@types/chai-as-promised": "^7.1.5",
|
|
48
47
|
"@types/clean-stack": "^2.1.1",
|
|
49
48
|
"@types/ejs": "^3.1.2",
|
|
50
|
-
"@types/fs-extra": "^9.0.13",
|
|
51
49
|
"@types/indent-string": "^4.0.1",
|
|
52
50
|
"@types/js-yaml": "^3.12.7",
|
|
53
51
|
"@types/mocha": "^8.2.3",
|
|
@@ -55,7 +53,7 @@
|
|
|
55
53
|
"@types/node": "^16",
|
|
56
54
|
"@types/node-notifier": "^8.0.2",
|
|
57
55
|
"@types/proxyquire": "^1.3.28",
|
|
58
|
-
"@types/semver": "^7.5.
|
|
56
|
+
"@types/semver": "^7.5.1",
|
|
59
57
|
"@types/shelljs": "^0.8.11",
|
|
60
58
|
"@types/slice-ansi": "^4.0.0",
|
|
61
59
|
"@types/strip-ansi": "^5.2.1",
|
|
@@ -120,4 +118,4 @@
|
|
|
120
118
|
"test:perf": "ts-node test/perf/parser.perf.ts"
|
|
121
119
|
},
|
|
122
120
|
"types": "lib/index.d.ts"
|
|
123
|
-
}
|
|
121
|
+
}
|