@dxos/cli 2.18.5-dev.0ef7f7b5 → 2.18.5-dev.5022f9cf

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.
@@ -0,0 +1,6 @@
1
+ export const EXTENSIONS_CONFIG: ".dx/extensions.yml";
2
+ export function getInfo(name: any): Promise<any>;
3
+ export function addInstalled(name: any, info: any): Promise<void>;
4
+ export function removeInstalled(name: any): Promise<void>;
5
+ export function listInstalled(): Promise<any>;
6
+ //# sourceMappingURL=extensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../src/extensions.js"],"names":[],"mappings":"AASA,qDAAsD;AAI/C,iDAGN;AAEM,kEAeN;AAEM,0DAIN;AAEM,8CAIN"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2020 DXOS.org
4
+ //
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.listInstalled = exports.removeInstalled = exports.addInstalled = exports.getInfo = exports.EXTENSIONS_CONFIG = void 0;
10
+ const os_1 = __importDefault(require("os"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const cli_core_1 = require("@dxos/cli-core");
13
+ exports.EXTENSIONS_CONFIG = '.dx/extensions.yml';
14
+ const filePath = path_1.default.join(os_1.default.homedir(), exports.EXTENSIONS_CONFIG);
15
+ const getInfo = async (name) => {
16
+ const { extensions = [] } = await (0, cli_core_1.readFile)(filePath, { absolute: true });
17
+ return extensions.find(({ moduleName }) => moduleName === name);
18
+ };
19
+ exports.getInfo = getInfo;
20
+ const addInstalled = async (name, info) => {
21
+ const { package: { version }, command, description, initRequired, destroyRequired } = info;
22
+ let { extensions = [] } = await (0, cli_core_1.readFile)(filePath, { absolute: true });
23
+ extensions = extensions.filter(({ moduleName }) => moduleName !== name);
24
+ extensions.push({
25
+ moduleName: name,
26
+ version,
27
+ describe: description,
28
+ command,
29
+ initRequired: !!initRequired,
30
+ destroyRequired: !!destroyRequired
31
+ });
32
+ return (0, cli_core_1.writeFile)({ extensions }, filePath, { absolute: true });
33
+ };
34
+ exports.addInstalled = addInstalled;
35
+ const removeInstalled = async (name) => {
36
+ let { extensions = [] } = await (0, cli_core_1.readFile)(filePath, { absolute: true });
37
+ extensions = extensions.filter(({ moduleName }) => moduleName !== name);
38
+ return (0, cli_core_1.writeFile)({ extensions }, filePath, { absolute: true });
39
+ };
40
+ exports.removeInstalled = removeInstalled;
41
+ const listInstalled = async () => {
42
+ const { extensions = [] } = await (0, cli_core_1.readFile)(filePath, { absolute: true });
43
+ extensions.sort(({ moduleName: a }, { moduleName: b }) => a > b ? 1 : a < b ? -1 : 0);
44
+ return extensions;
45
+ };
46
+ exports.listInstalled = listInstalled;
47
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/extensions.js"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,4CAAoB;AACpB,gDAAwB;AAExB,6CAAqD;AAExC,QAAA,iBAAiB,GAAG,oBAAoB,CAAC;AAEtD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,yBAAiB,CAAC,CAAC;AAErD,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE;IACpC,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;AAClE,CAAC,CAAC;AAHW,QAAA,OAAO,WAGlB;AAEK,MAAM,YAAY,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAC/C,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAC3F,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;IAExE,UAAU,CAAC,IAAI,CAAC;QACd,UAAU,EAAE,IAAI;QAChB,OAAO;QACP,QAAQ,EAAE,WAAW;QACrB,OAAO;QACP,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,eAAe,EAAE,CAAC,CAAC,eAAe;KACnC,CAAC,CAAC;IAEH,OAAO,IAAA,oBAAS,EAAC,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC,CAAC;AAfW,QAAA,YAAY,gBAevB;AAEK,MAAM,eAAe,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE;IAC5C,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;IACxE,OAAO,IAAA,oBAAS,EAAC,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC,CAAC;AAJW,QAAA,eAAe,mBAI1B;AAEK,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;IACtC,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAJW,QAAA,aAAa,iBAIxB"}
@@ -0,0 +1,5 @@
1
+ export function UninstallModule(): object;
2
+ export function UpgradeModule({ config }: {
3
+ config: any;
4
+ }): object;
5
+ //# sourceMappingURL=installation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../../src/modules/installation.js"],"names":[],"mappings":"AAoBO,mCAFM,MAAM,CA+BjB;AAMK;;IAFM,MAAM,CAiDjB"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2020 DXOS.org
4
+ //
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.UpgradeModule = exports.UninstallModule = void 0;
10
+ const assert_1 = __importDefault(require("assert"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const read_pkg_up_1 = __importDefault(require("read-pkg-up"));
13
+ const cli_core_1 = require("@dxos/cli-core");
14
+ const debug_1 = require("@dxos/debug");
15
+ const extensions_1 = require("../extensions");
16
+ const pluggable_1 = require("../pluggable");
17
+ const pkg = read_pkg_up_1.default.sync({ cwd: path_1.default.join(__dirname, '../') });
18
+ /**
19
+ * Uninstall CLI module.
20
+ * @returns {object}
21
+ */
22
+ const UninstallModule = () => ({
23
+ command: ['uninstall'],
24
+ describe: 'Uninstall CLI and extensions.',
25
+ builder: yargs => yargs
26
+ .version(false)
27
+ .option('npm-client'),
28
+ handler: (0, cli_core_1.asyncHandler)(async (argv) => {
29
+ const { npmClient } = argv;
30
+ const extensions = await (0, extensions_1.listInstalled)();
31
+ // Remove extensions.
32
+ if (extensions.length) {
33
+ (0, debug_1.log)(`Found extensions: ${extensions.map(({ moduleName }) => moduleName).join(', ')}`);
34
+ const pluggableModules = extensions.map(module => new pluggable_1.Pluggable(module));
35
+ for await (const pluggableModule of pluggableModules) {
36
+ const spinner = `Uninstalling ${pluggableModule.moduleName}`;
37
+ await pluggableModule.uninstallModule(npmClient, { spinner });
38
+ await (0, extensions_1.removeInstalled)(pluggableModule.moduleName);
39
+ }
40
+ }
41
+ // Remove main cli.
42
+ const cli = new pluggable_1.Pluggable({ moduleName: pkg.package.name });
43
+ const spinner = `Uninstalling ${cli.moduleName}`;
44
+ await cli.uninstallModule(npmClient, { spinner });
45
+ })
46
+ });
47
+ exports.UninstallModule = UninstallModule;
48
+ /**
49
+ * Upgrade CLI module.
50
+ * @returns {object}
51
+ */
52
+ const UpgradeModule = ({ config }) => ({
53
+ command: ['upgrade'],
54
+ describe: 'Upgrade CLI.',
55
+ builder: yargs => yargs
56
+ .version(false)
57
+ .option('npm-client')
58
+ .option('channel', { default: config.get('runtime.cli.channel') })
59
+ .option('force', { type: 'boolean', default: false })
60
+ .option('version'),
61
+ handler: (0, cli_core_1.asyncHandler)(async (argv) => {
62
+ const { channel, version, force, npmClient } = argv;
63
+ const newVersion = version || channel;
64
+ (0, assert_1.default)(newVersion, 'Invalid Version.');
65
+ const extensions = await (0, extensions_1.listInstalled)();
66
+ let modules = [];
67
+ if (force) {
68
+ if (extensions.length) {
69
+ (0, debug_1.log)(`Found extensions: ${extensions.map(({ moduleName }) => moduleName).join(', ')}`);
70
+ modules = extensions.map(({ moduleName }) => new pluggable_1.Pluggable({ moduleName, version: newVersion }));
71
+ }
72
+ modules.push(new pluggable_1.Pluggable({ moduleName: pkg.package.name, version: newVersion }));
73
+ }
74
+ // Remove old modules.
75
+ for await (const module of modules) {
76
+ const spinner = `Uninstalling ${module.moduleName}`;
77
+ try {
78
+ await module.uninstallModule(npmClient, { spinner });
79
+ }
80
+ catch (error) {
81
+ (0, debug_1.log)(`Unable to uninstall ${module.moduleName}: ${error.message}`);
82
+ }
83
+ await (0, extensions_1.removeInstalled)(module.moduleName);
84
+ }
85
+ // Install new modules.
86
+ for await (const module of modules.reverse()) {
87
+ const spinner = `Installing ${module.moduleName}`;
88
+ await module.installModule(npmClient, { spinner });
89
+ if (module.moduleName !== pkg.package.name) {
90
+ await (0, extensions_1.addInstalled)(module.moduleName, module.getInfo());
91
+ }
92
+ }
93
+ })
94
+ });
95
+ exports.UpgradeModule = UpgradeModule;
96
+ //# sourceMappingURL=installation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installation.js","sourceRoot":"","sources":["../../../src/modules/installation.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Wrapper class for CLI extension.
3
+ */
4
+ export class PluggableModule {
5
+ constructor(config: any, state: any);
6
+ _pluggable: null;
7
+ _config: any;
8
+ _state: any;
9
+ get pluggable(): null;
10
+ init(): Promise<void>;
11
+ destroy(): Promise<void>;
12
+ export(): any;
13
+ }
14
+ //# sourceMappingURL=pluggable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluggable.d.ts","sourceRoot":"","sources":["../../../src/modules/pluggable.js"],"names":[],"mappings":"AAQA;;GAEG;AACH;IAGE,qCAGC;IALD,iBAAkB;IAGhB,aAAqB;IACrB,YAAmB;IAGrB,sBAMC;IAED,sBAIC;IAED,yBAIC;IAED,cAYC;CACF"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2020 DXOS.org
4
+ //
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PluggableModule = void 0;
7
+ const cli_core_1 = require("@dxos/cli-core");
8
+ const pluggable_1 = require("../pluggable");
9
+ /**
10
+ * Wrapper class for CLI extension.
11
+ */
12
+ class PluggableModule {
13
+ constructor(config, state) {
14
+ this._pluggable = null;
15
+ this._config = config;
16
+ this._state = state;
17
+ }
18
+ get pluggable() {
19
+ if (!this._pluggable) {
20
+ this._pluggable = pluggable_1.Pluggable.create(this._config);
21
+ }
22
+ return this._pluggable;
23
+ }
24
+ async init() {
25
+ if (this.pluggable.installed) {
26
+ await this.pluggable.init(this._state);
27
+ }
28
+ }
29
+ async destroy() {
30
+ if (this.pluggable.installed) {
31
+ await this.pluggable.destroy(this._state);
32
+ }
33
+ }
34
+ export() {
35
+ const { command, describe } = this._config;
36
+ return command.map(cmd => (() => ({
37
+ command: typeof cmd === 'object' ? cmd.command : cmd,
38
+ describe: typeof cmd === 'object' ? cmd.describe : describe,
39
+ builder: yargs => yargs.help(false).strict(false),
40
+ handler: (0, cli_core_1.asyncHandler)(async (argv) => {
41
+ return this.pluggable.run(this._state, argv);
42
+ })
43
+ // eslint-disable-next-line
44
+ })).bind(this));
45
+ }
46
+ }
47
+ exports.PluggableModule = PluggableModule;
48
+ //# sourceMappingURL=pluggable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluggable.js","sourceRoot":"","sources":["../../../src/modules/pluggable.js"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,6CAA8C;AAE9C,4CAAyC;AAEzC;;GAEG;AACH,MAAa,eAAe;IAG1B,YAAa,MAAM,EAAE,KAAK;QAF1B,eAAU,GAAG,IAAI,CAAC;QAGhB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,SAAS;QACX,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,qBAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAClD;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC5B,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACxC;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC5B,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3C;IACH,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAE3C,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAChC,OAAO,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YACpD,QAAQ,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;YAC3D,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,OAAO,EAAE,IAAA,uBAAY,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE;gBACjC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC;YACJ,2BAA2B;SAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClB,CAAC;CACF;AAzCD,0CAyCC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Pluggable CLI module.
3
+ */
4
+ export class Pluggable {
5
+ /**
6
+ * Pluggable factory.
7
+ * @param {Object} options
8
+ */
9
+ static create(options: Object): Pluggable;
10
+ /**
11
+ * @constructor
12
+ * @param {String} moduleName
13
+ * @param {String} version
14
+ */
15
+ constructor({ moduleName, version }: string);
16
+ _modulePath: any;
17
+ _moduleName: any;
18
+ _version: any;
19
+ _workspaceRoot: any;
20
+ _workspacePackages: any;
21
+ _workspaceInfo: any;
22
+ _isInWorkspace: any;
23
+ _isInCWD: boolean;
24
+ _installed: boolean;
25
+ get moduleName(): any;
26
+ get version(): any;
27
+ get workspaceRoot(): any;
28
+ get installed(): boolean;
29
+ get isInWorkspace(): any;
30
+ get modulePath(): any;
31
+ get module(): any;
32
+ /**
33
+ * Checks if workspace is defined.
34
+ */
35
+ isWorkspace(): boolean;
36
+ /**
37
+ * Checks if extension is installed.
38
+ */
39
+ isInstalled(): boolean;
40
+ /**
41
+ * Install CLI extension.
42
+ */
43
+ installModule(npmClient: any, options?: {}): Promise<any>;
44
+ /**
45
+ * Uninstall CLI extension.
46
+ */
47
+ uninstallModule(npmClient: any, options?: {}): Promise<any>;
48
+ /**
49
+ * Init extension in a scope of main CLI.
50
+ * @param {Object} state
51
+ */
52
+ init(state: Object): Promise<any>;
53
+ /**
54
+ * Destroy extension in a scope of main CLI.
55
+ * @param {Object} state
56
+ */
57
+ destroy(state: Object): Promise<any>;
58
+ /**
59
+ * Runs command of an CLI extension.
60
+ * @param {Object} state
61
+ * @param {Object} argv
62
+ */
63
+ run(state: Object, argv: Object): Promise<any>;
64
+ getInfo(): any;
65
+ getDockerCompose(): any;
66
+ _cleanCache(): void;
67
+ }
68
+ //# sourceMappingURL=pluggable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluggable.d.ts","sourceRoot":"","sources":["../../src/pluggable.js"],"names":[],"mappings":"AAiEA;;GAEG;AACH;IAGE;;;OAGG;IACH,uBAFW,MAAM,aAIhB;IAED;;;;OAIG;IACH,6CAYC;IA3BD,iBAAY;IAgBV,iBAA6B;IAC7B,cAAuB;IAEvB,oBAAiD;IACjD,wBAAgK;IAChK,oBAAgI;IAEhI,oBAA6H;IAC7H,kBAAuJ;IAEvJ,oBAAoC;IAGtC,sBAEC;IAED,mBAEC;IAED,yBAEC;IAED,yBAEC;IAED,yBAEC;IAED,sBAeC;IAED,kBAIC;IAED;;OAEG;IACH,uBAEC;IAED;;OAEG;IACH,uBAeC;IAED;;OAEG;IACH,0DAgBC;IAED;;OAEG;IACH,4DAeC;IAED;;;OAGG;IACH,YAFW,MAAM,gBAIhB;IAED;;;OAGG;IACH,eAFW,MAAM,gBAIhB;IAED;;;;OAIG;IACH,WAHW,MAAM,QACN,MAAM,gBAsBhB;IAED,eAGC;IAED,wBAGC;IAED,oBAEC;CACF"}
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2020 DXOS.org
4
+ //
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Pluggable = void 0;
10
+ /* eslint import/no-dynamic-require: 0 */
11
+ /* eslint @typescript-eslint/no-var-requires: 0 */
12
+ /* eslint global-require: 0 */
13
+ const child_process_1 = require("child_process");
14
+ const find_root_1 = __importDefault(require("find-root"));
15
+ const fs_1 = __importDefault(require("fs"));
16
+ const ora_1 = __importDefault(require("ora"));
17
+ const path_1 = __importDefault(require("path"));
18
+ const read_pkg_up_1 = __importDefault(require("read-pkg-up"));
19
+ const strip_json_comments_1 = __importDefault(require("strip-json-comments"));
20
+ const cli_core_1 = require("@dxos/cli-core");
21
+ const extensions_1 = require("./extensions");
22
+ const pkg = read_pkg_up_1.default.sync({ cwd: path_1.default.join(__dirname, '../') });
23
+ /**
24
+ * @param {String} command
25
+ * @param {Array} args
26
+ * @param {Object} options
27
+ */
28
+ const runCommand = async (command, args, options) => {
29
+ return new Promise((resolve, reject) => {
30
+ const { spinner: spinnerText } = options;
31
+ const spinner = (0, ora_1.default)(spinnerText);
32
+ spinner.start();
33
+ (0, child_process_1.exec)(`${(0, cli_core_1.prepareExec)(command)} ${args.join(' ')}`, (err) => {
34
+ if (err) {
35
+ spinner.fail();
36
+ reject(err);
37
+ }
38
+ else {
39
+ spinner.succeed();
40
+ spinner.clear();
41
+ resolve();
42
+ }
43
+ });
44
+ });
45
+ };
46
+ /**
47
+ * Finds root dir of a workspace.
48
+ * @param {String} from
49
+ */
50
+ const getWorkspaceRoot = from => {
51
+ try {
52
+ return (0, find_root_1.default)(from, dir => {
53
+ const pkgPath = path_1.default.join(dir, 'package.json');
54
+ if (fs_1.default.existsSync(pkgPath)) {
55
+ const { workspaces } = require(pkgPath);
56
+ return workspaces && (Array.isArray(workspaces) || workspaces.packages);
57
+ }
58
+ });
59
+ }
60
+ catch (err) {
61
+ return '';
62
+ }
63
+ };
64
+ /**
65
+ * Pluggable CLI module.
66
+ */
67
+ class Pluggable {
68
+ /**
69
+ * @constructor
70
+ * @param {String} moduleName
71
+ * @param {String} version
72
+ */
73
+ constructor({ moduleName, version }) {
74
+ var _a;
75
+ this._moduleName = moduleName;
76
+ this._version = version;
77
+ this._workspaceRoot = getWorkspaceRoot(__dirname);
78
+ this._workspacePackages = this._workspaceRoot && JSON.parse((0, strip_json_comments_1.default)(fs_1.default.readFileSync(path_1.default.join(this._workspaceRoot, 'rush.json')).toString())).projects;
79
+ this._workspaceInfo = this._workspacePackages && this._workspacePackages.find(module => module.packageName === this._moduleName);
80
+ this._isInWorkspace = this._workspaceInfo && fs_1.default.existsSync(path_1.default.join(this._workspaceRoot, this._workspaceInfo.projectFolder));
81
+ this._isInCWD = fs_1.default.existsSync(path_1.default.join(process.cwd(), 'package.json')) && ((_a = require(path_1.default.join(process.cwd(), 'package.json'))) === null || _a === void 0 ? void 0 : _a.name) === this._moduleName;
82
+ this._installed = this.isInstalled();
83
+ }
84
+ /**
85
+ * Pluggable factory.
86
+ * @param {Object} options
87
+ */
88
+ static create(options) {
89
+ return new Pluggable(options);
90
+ }
91
+ get moduleName() {
92
+ return this._moduleName;
93
+ }
94
+ get version() {
95
+ return this._version;
96
+ }
97
+ get workspaceRoot() {
98
+ return this._workspaceRoot;
99
+ }
100
+ get installed() {
101
+ return this._installed;
102
+ }
103
+ get isInWorkspace() {
104
+ return this._isInWorkspace;
105
+ }
106
+ get modulePath() {
107
+ if (!this._modulePath) {
108
+ let pkgPath;
109
+ if (this._isInCWD) {
110
+ pkgPath = path_1.default.join(process.cwd(), 'package.json');
111
+ }
112
+ else if (this._isInWorkspace) {
113
+ pkgPath = path_1.default.join(this._workspaceRoot, this._workspaceInfo.projectFolder, 'package.json');
114
+ }
115
+ else {
116
+ pkgPath = `${this.moduleName}/package.json`;
117
+ }
118
+ const pkg = require(pkgPath);
119
+ this._modulePath = path_1.default.join(pkgPath.replace('package.json', ''), pkg.main);
120
+ }
121
+ return this._modulePath;
122
+ }
123
+ get module() {
124
+ var _a;
125
+ const module = require(this.modulePath);
126
+ const moduleCli = (_a = module.default) !== null && _a !== void 0 ? _a : module; // Difference between `module.exports` and `export default`.
127
+ return moduleCli;
128
+ }
129
+ /**
130
+ * Checks if workspace is defined.
131
+ */
132
+ isWorkspace() {
133
+ return !!this.workspaceRoot;
134
+ }
135
+ /**
136
+ * Checks if extension is installed.
137
+ */
138
+ isInstalled() {
139
+ const { moduleName } = this;
140
+ if (this._isInWorkspace || this._isInCWD) {
141
+ return true;
142
+ }
143
+ try {
144
+ const pkgPath = require.resolve(`${moduleName}/package.json`);
145
+ const pkg = require(pkgPath);
146
+ // Check if module is installed and version matches cli version.
147
+ return !!pkg;
148
+ // TODO(egorgripasov): Extension compatibility. Semver?
149
+ // && pkg.version === this.version;
150
+ }
151
+ catch (err) {
152
+ return false;
153
+ }
154
+ }
155
+ /**
156
+ * Install CLI extension.
157
+ */
158
+ async installModule(npmClient, options = {}) {
159
+ const moduleName = this._moduleName;
160
+ const version = this._version;
161
+ if (this.isWorkspace()) {
162
+ console.error(`The module ${moduleName}@${version} has to be added to devDependencies.`);
163
+ return;
164
+ }
165
+ const isYarn = npmClient ? npmClient === 'yarn' : await (0, cli_core_1.isGlobalYarn)(pkg.package.name);
166
+ const command = isYarn ? 'yarn' : 'npm';
167
+ const args = isYarn ? ['global', 'add'] : ['install', '-g'];
168
+ args.push(`${moduleName}${version ? `@${version}` : ''}`);
169
+ return runCommand(command, args, options);
170
+ }
171
+ /**
172
+ * Uninstall CLI extension.
173
+ */
174
+ async uninstallModule(npmClient, options = {}) {
175
+ const moduleName = this._moduleName;
176
+ if (this.isWorkspace()) {
177
+ console.error(`The module ${moduleName} has to be removed from devDependencies.`);
178
+ return;
179
+ }
180
+ const isYarn = npmClient ? npmClient === 'yarn' : await (0, cli_core_1.isGlobalYarn)(pkg.package.name);
181
+ const command = isYarn ? 'yarn' : 'npm';
182
+ const args = isYarn ? ['global', 'remove'] : ['uninstall', '-g'];
183
+ args.push(`${moduleName}`);
184
+ return runCommand(command, args, options);
185
+ }
186
+ /**
187
+ * Init extension in a scope of main CLI.
188
+ * @param {Object} state
189
+ */
190
+ async init(state) {
191
+ return this.module.init(state);
192
+ }
193
+ /**
194
+ * Destroy extension in a scope of main CLI.
195
+ * @param {Object} state
196
+ */
197
+ async destroy(state) {
198
+ return this.module.destroy(state);
199
+ }
200
+ /**
201
+ * Runs command of an CLI extension.
202
+ * @param {Object} state
203
+ * @param {Object} argv
204
+ */
205
+ async run(state, argv) {
206
+ const { installed, moduleName, version } = this;
207
+ if (!installed) {
208
+ const spinner = `Installing ${moduleName}${version ? `@${version}` : ''}`;
209
+ try {
210
+ await this.installModule(null, { spinner });
211
+ await (0, extensions_1.addInstalled)(moduleName, this.getInfo());
212
+ const { init, destroy } = this.module;
213
+ if (init || destroy) {
214
+ console.log(`${moduleName} was successfully installed. Please run your command again.`);
215
+ return;
216
+ }
217
+ }
218
+ catch (err) {
219
+ console.error(err);
220
+ return;
221
+ }
222
+ }
223
+ return this.module.runAsExtension(state, argv);
224
+ }
225
+ getInfo() {
226
+ this._cleanCache();
227
+ return this.module.info;
228
+ }
229
+ getDockerCompose() {
230
+ this._cleanCache();
231
+ return this.module.dockerCompose;
232
+ }
233
+ _cleanCache() {
234
+ delete require.cache[require.resolve(this.modulePath)];
235
+ }
236
+ }
237
+ exports.Pluggable = Pluggable;
238
+ //# sourceMappingURL=pluggable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluggable.js","sourceRoot":"","sources":["../../src/pluggable.js"],"names":[],"mappings":"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"}