@dxos/cli 2.18.5-dev.5b370dc9 → 2.19.1-dev.50eb4801

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.
Files changed (68) hide show
  1. package/README.md +25 -16
  2. package/dist/dx.yml +13 -0
  3. package/dist/known-extensions.yml +51 -67
  4. package/dist/src/extensions/index.d.ts +4 -0
  5. package/dist/src/extensions/index.d.ts.map +1 -0
  6. package/dist/src/extensions/index.js +23 -0
  7. package/dist/src/extensions/index.js.map +1 -0
  8. package/dist/src/extensions/manager.d.ts +15 -0
  9. package/dist/src/extensions/manager.d.ts.map +1 -0
  10. package/dist/src/extensions/manager.js +52 -0
  11. package/dist/src/extensions/manager.js.map +1 -0
  12. package/dist/src/extensions/module.d.ts +19 -0
  13. package/dist/src/extensions/module.d.ts.map +1 -0
  14. package/dist/src/extensions/module.js +56 -0
  15. package/dist/src/extensions/module.js.map +1 -0
  16. package/dist/src/extensions/pluggable.d.ts +67 -0
  17. package/dist/src/extensions/pluggable.d.ts.map +1 -0
  18. package/dist/src/{pluggable.js → extensions/pluggable.js} +45 -89
  19. package/dist/src/extensions/pluggable.js.map +1 -0
  20. package/dist/src/extensions/utils.d.ts +9 -0
  21. package/dist/src/extensions/utils.d.ts.map +1 -0
  22. package/dist/src/extensions/utils.js +58 -0
  23. package/dist/src/extensions/utils.js.map +1 -0
  24. package/dist/src/main.js +42 -62
  25. package/dist/src/main.js.map +1 -1
  26. package/dist/src/modules/devtools.d.ts +1 -1
  27. package/dist/src/modules/devtools.d.ts.map +1 -1
  28. package/dist/src/modules/devtools.js +5 -4
  29. package/dist/src/modules/devtools.js.map +1 -1
  30. package/dist/src/modules/extension.d.ts.map +1 -1
  31. package/dist/src/modules/extension.js +18 -16
  32. package/dist/src/modules/extension.js.map +1 -1
  33. package/dist/src/modules/halo.d.ts +1 -1
  34. package/dist/src/modules/index.d.ts +9 -0
  35. package/dist/src/modules/index.d.ts.map +1 -0
  36. package/dist/src/modules/index.js +28 -0
  37. package/dist/src/modules/index.js.map +1 -0
  38. package/dist/src/modules/info.d.ts +6 -0
  39. package/dist/src/modules/info.d.ts.map +1 -0
  40. package/dist/src/modules/info.js +25 -0
  41. package/dist/src/modules/info.js.map +1 -0
  42. package/dist/src/modules/{installation.d.ts → install.d.ts} +1 -1
  43. package/dist/src/modules/install.d.ts.map +1 -0
  44. package/dist/src/modules/{installation.js → install.js} +12 -11
  45. package/dist/src/modules/install.js.map +1 -0
  46. package/dist/src/modules/profile.d.ts +2 -2
  47. package/dist/src/modules/profile.d.ts.map +1 -1
  48. package/dist/src/modules/profile.js.map +1 -1
  49. package/dist/src/modules/services.d.ts.map +1 -1
  50. package/dist/src/modules/services.js +8 -5
  51. package/dist/src/modules/services.js.map +1 -1
  52. package/dist/src/modules/storage.d.ts.map +1 -1
  53. package/dist/src/modules/storage.js.map +1 -1
  54. package/dist/tsconfig.tsbuildinfo +1 -1
  55. package/package.json +10 -10
  56. package/dist/src/extensions.d.ts +0 -6
  57. package/dist/src/extensions.d.ts.map +0 -1
  58. package/dist/src/extensions.js +0 -47
  59. package/dist/src/extensions.js.map +0 -1
  60. package/dist/src/modules/installation.d.ts.map +0 -1
  61. package/dist/src/modules/installation.js.map +0 -1
  62. package/dist/src/modules/pluggable.d.ts +0 -14
  63. package/dist/src/modules/pluggable.d.ts.map +0 -1
  64. package/dist/src/modules/pluggable.js +0 -48
  65. package/dist/src/modules/pluggable.js.map +0 -1
  66. package/dist/src/pluggable.d.ts +0 -68
  67. package/dist/src/pluggable.d.ts.map +0 -1
  68. package/dist/src/pluggable.js.map +0 -1
@@ -7,101 +7,49 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.Pluggable = void 0;
10
- /* eslint import/no-dynamic-require: 0 */
11
10
  /* eslint @typescript-eslint/no-var-requires: 0 */
12
11
  /* eslint global-require: 0 */
13
- const child_process_1 = require("child_process");
14
- const find_root_1 = __importDefault(require("find-root"));
15
12
  const fs_1 = __importDefault(require("fs"));
16
- const ora_1 = __importDefault(require("ora"));
17
13
  const path_1 = __importDefault(require("path"));
18
14
  const read_pkg_up_1 = __importDefault(require("read-pkg-up"));
19
15
  const strip_json_comments_1 = __importDefault(require("strip-json-comments"));
20
16
  const cli_core_1 = require("@dxos/cli-core");
21
- const extensions_1 = require("./extensions");
17
+ const manager_1 = require("./manager");
18
+ const utils_1 = require("./utils");
22
19
  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
20
  /**
65
21
  * Pluggable CLI module.
66
22
  */
67
23
  class Pluggable {
68
- /**
69
- * @constructor
70
- * @param {String} moduleName
71
- * @param {String} version
72
- */
73
24
  constructor({ moduleName, version }) {
74
25
  var _a;
75
26
  this._moduleName = moduleName;
76
27
  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;
28
+ this._workspaceRoot = (0, utils_1.getWorkspaceRoot)(__dirname);
29
+ this._workspacePackages = this._workspaceRoot &&
30
+ JSON.parse((0, strip_json_comments_1.default)(fs_1.default.readFileSync(path_1.default.join(this._workspaceRoot, 'rush.json')).toString())).projects;
31
+ this._workspaceInfo = this._workspacePackages &&
32
+ this._workspacePackages.find(module => module.packageName === this._moduleName);
33
+ this._isInWorkspace = this._workspaceInfo &&
34
+ fs_1.default.existsSync(path_1.default.join(this._workspaceRoot, this._workspaceInfo.projectFolder));
35
+ this._isInCWD = fs_1.default.existsSync(path_1.default.join(process.cwd(), 'package.json')) &&
36
+ ((_a = require(path_1.default.join(process.cwd(), 'package.json'))) === null || _a === void 0 ? void 0 : _a.name) === this._moduleName;
82
37
  this._installed = this.isInstalled();
83
38
  }
84
39
  /**
85
40
  * Pluggable factory.
86
- * @param {Object} options
87
41
  */
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;
42
+ static create(extension) {
43
+ return new Pluggable(extension);
102
44
  }
103
- get isInWorkspace() {
104
- return this._isInWorkspace;
45
+ /**
46
+ * Returns the exported info.
47
+ */
48
+ get module() {
49
+ var _a;
50
+ const module = require(this.modulePath);
51
+ const cli = (_a = module.default) !== null && _a !== void 0 ? _a : module; // Difference between `module.exports` and `export default`.
52
+ return cli;
105
53
  }
106
54
  get modulePath() {
107
55
  if (!this._modulePath) {
@@ -120,11 +68,20 @@ class Pluggable {
120
68
  }
121
69
  return this._modulePath;
122
70
  }
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;
71
+ get moduleName() {
72
+ return this._moduleName;
73
+ }
74
+ get version() {
75
+ return this._version;
76
+ }
77
+ get workspaceRoot() {
78
+ return this._workspaceRoot;
79
+ }
80
+ get installed() {
81
+ return this._installed;
82
+ }
83
+ get isInWorkspace() {
84
+ return this._isInWorkspace;
128
85
  }
129
86
  /**
130
87
  * Checks if workspace is defined.
@@ -166,7 +123,7 @@ class Pluggable {
166
123
  const command = isYarn ? 'yarn' : 'npm';
167
124
  const args = isYarn ? ['global', 'add'] : ['install', '-g'];
168
125
  args.push(`${moduleName}${version ? `@${version}` : ''}`);
169
- return runCommand(command, args, options);
126
+ return (0, utils_1.runCommand)(command, args, options);
170
127
  }
171
128
  /**
172
129
  * Uninstall CLI extension.
@@ -181,34 +138,33 @@ class Pluggable {
181
138
  const command = isYarn ? 'yarn' : 'npm';
182
139
  const args = isYarn ? ['global', 'remove'] : ['uninstall', '-g'];
183
140
  args.push(`${moduleName}`);
184
- return runCommand(command, args, options);
141
+ return (0, utils_1.runCommand)(command, args, options);
185
142
  }
186
143
  /**
187
144
  * Init extension in a scope of main CLI.
188
- * @param {Object} state
189
145
  */
190
146
  async init(state) {
191
- return this.module.init(state);
147
+ var _a, _b;
148
+ return (_b = (_a = this.module).init) === null || _b === void 0 ? void 0 : _b.call(_a, state);
192
149
  }
193
150
  /**
194
151
  * Destroy extension in a scope of main CLI.
195
- * @param {Object} state
196
152
  */
197
153
  async destroy(state) {
198
- return this.module.destroy(state);
154
+ var _a, _b;
155
+ return (_b = (_a = this.module).destroy) === null || _b === void 0 ? void 0 : _b.call(_a, state);
199
156
  }
200
157
  /**
201
158
  * Runs command of an CLI extension.
202
- * @param {Object} state
203
- * @param {Object} argv
204
159
  */
205
160
  async run(state, argv) {
206
161
  const { installed, moduleName, version } = this;
207
162
  if (!installed) {
208
163
  const spinner = `Installing ${moduleName}${version ? `@${version}` : ''}`;
209
164
  try {
210
- await this.installModule(null, { spinner });
211
- await (0, extensions_1.addInstalled)(moduleName, this.getInfo());
165
+ await this.installModule(undefined, { spinner });
166
+ const extensionManager = new manager_1.ExtensionManager();
167
+ await extensionManager.add(moduleName, this.getInfo());
212
168
  const { init, destroy } = this.module;
213
169
  if (init || destroy) {
214
170
  console.log(`${moduleName} was successfully installed. Please run your command again.`);
@@ -228,7 +184,7 @@ class Pluggable {
228
184
  }
229
185
  getDockerCompose() {
230
186
  this._cleanCache();
231
- return this.module.dockerCompose;
187
+ return this.module.docker;
232
188
  }
233
189
  _cleanCache() {
234
190
  delete require.cache[require.resolve(this.modulePath)];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluggable.js","sourceRoot":"","sources":["../../../src/extensions/pluggable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Asynchronosly run the shell command.
3
+ */
4
+ export declare const runCommand: (command: string, args: string[], options: any) => Promise<unknown>;
5
+ /**
6
+ * Finds root dir of a workspace.
7
+ */
8
+ export declare const getWorkspaceRoot: (from: string) => string;
9
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/extensions/utils.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,eAAO,MAAM,UAAU,YAAmB,MAAM,QAAQ,MAAM,EAAE,WAAW,GAAG,qBAiB7E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,SAAU,MAAM,WAY5C,CAAC"}
@@ -0,0 +1,58 @@
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.getWorkspaceRoot = exports.runCommand = void 0;
10
+ /* eslint @typescript-eslint/no-var-requires: 0 */
11
+ /* eslint global-require: 0 */
12
+ const child_process_1 = require("child_process");
13
+ const find_root_1 = __importDefault(require("find-root"));
14
+ const fs_1 = __importDefault(require("fs"));
15
+ const ora_1 = __importDefault(require("ora"));
16
+ const path_1 = __importDefault(require("path"));
17
+ const cli_core_1 = require("@dxos/cli-core");
18
+ /**
19
+ * Asynchronosly run the shell command.
20
+ */
21
+ const runCommand = async (command, args, options) => {
22
+ return new Promise((resolve, reject) => {
23
+ const { spinner: spinnerText } = options;
24
+ const spinner = (0, ora_1.default)(spinnerText);
25
+ spinner.start();
26
+ (0, child_process_1.exec)(`${(0, cli_core_1.prepareExec)(command)} ${args.join(' ')}`, (err) => {
27
+ if (err) {
28
+ spinner.fail();
29
+ reject(err);
30
+ }
31
+ else {
32
+ spinner.succeed();
33
+ spinner.clear();
34
+ resolve(true);
35
+ }
36
+ });
37
+ });
38
+ };
39
+ exports.runCommand = runCommand;
40
+ /**
41
+ * Finds root dir of a workspace.
42
+ */
43
+ const getWorkspaceRoot = (from) => {
44
+ try {
45
+ return (0, find_root_1.default)(from, dir => {
46
+ const pkgPath = path_1.default.join(dir, 'package.json');
47
+ if (fs_1.default.existsSync(pkgPath)) {
48
+ const { workspaces } = require(pkgPath);
49
+ return workspaces && (Array.isArray(workspaces) || workspaces.packages);
50
+ }
51
+ });
52
+ }
53
+ catch (err) {
54
+ return '';
55
+ }
56
+ };
57
+ exports.getWorkspaceRoot = getWorkspaceRoot;
58
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/extensions/utils.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,kDAAkD;AAClD,8BAA8B;AAE9B,iDAAqC;AACrC,0DAAiC;AACjC,4CAAoB;AACpB,8CAAsB;AACtB,gDAAwB;AAExB,6CAA6C;AAE7C;;GAEG;AACI,MAAM,UAAU,GAAG,KAAK,EAAE,OAAe,EAAE,IAAc,EAAE,OAAY,EAAE,EAAE;IAChF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QACzC,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,WAAW,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,IAAA,oBAAI,EAAC,GAAG,IAAA,sBAAW,EAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YACxD,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;iBAAM;gBACL,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,CAAC;aACf;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAjBW,QAAA,UAAU,cAiBrB;AAEF;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC/C,IAAI;QACF,OAAO,IAAA,mBAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,EAAE;YAC1B,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC/C,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;gBACxC,OAAO,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;aACzE;QACH,CAAC,CAAC,CAAC;KACJ;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,EAAE,CAAC;KACX;AACH,CAAC,CAAC;AAZW,QAAA,gBAAgB,oBAY3B"}
package/dist/src/main.js CHANGED
@@ -7,91 +7,71 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  const fs_1 = require("fs");
10
- const js_yaml_1 = __importDefault(require("js-yaml"));
11
10
  const lodash_uniqby_1 = __importDefault(require("lodash.uniqby"));
12
11
  const path_1 = __importDefault(require("path"));
13
- const read_pkg_up_1 = __importDefault(require("read-pkg-up"));
14
12
  const cli_core_1 = require("@dxos/cli-core");
15
13
  const extensions_1 = require("./extensions");
16
- const devtools_1 = require("./modules/devtools");
17
- const extension_1 = require("./modules/extension");
18
- const halo_1 = require("./modules/halo");
19
- const installation_1 = require("./modules/installation");
20
- const pluggable_1 = require("./modules/pluggable");
21
- const profile_1 = require("./modules/profile");
22
- const services_1 = require("./modules/services");
23
- const storage_1 = require("./modules/storage");
24
- const KNOWN_EXTENSIONS = (0, fs_1.readFileSync)(path_1.default.join(__dirname, '../known-extensions.yml')).toString();
25
- const { logError } = (0, cli_core_1.getLoggers)();
26
- const knownExtensions = js_yaml_1.default.load(KNOWN_EXTENSIONS);
27
- const pkg = read_pkg_up_1.default.sync({ cwd: __dirname });
14
+ const modules_1 = require("./modules");
28
15
  const CLI_BASE_COMMAND = 'dx';
29
- const EXTENSION_INFO_FILE = 'extension.yml';
16
+ const { logError } = (0, cli_core_1.getLoggers)();
30
17
  const CLI_CONFIG = {
31
18
  prompt: CLI_BASE_COMMAND,
32
19
  baseCommand: '',
33
20
  enableInteractive: true
34
21
  };
35
- const extensions = [];
36
- const destroyers = [];
22
+ const modules = [
23
+ modules_1.InfoModule,
24
+ modules_1.ProfileModule,
25
+ modules_1.DevtoolsModule,
26
+ modules_1.ServicesModule,
27
+ modules_1.StorageModule,
28
+ modules_1.HaloModule,
29
+ modules_1.UpgradeModule,
30
+ modules_1.UninstallModule,
31
+ modules_1.ExtensionModule
32
+ ];
33
+ const pluggableModules = [];
37
34
  const init = async (state) => {
38
- const installedExtensions = await (0, extensions_1.listInstalled)();
35
+ // Generated by package script from Yargs definitions.
36
+ const knownExtensions = (0, cli_core_1.loadYml)(path_1.default.join(__dirname, '../known-extensions.yml'));
39
37
  // If developing new extension - read info from cwd.
40
- const localExtensionFile = path_1.default.join(process.cwd(), EXTENSION_INFO_FILE);
38
+ const localExtensionFile = path_1.default.join(process.cwd(), cli_core_1.EXTENSION_CONFIG_FILENAME);
41
39
  if ((0, fs_1.existsSync)(localExtensionFile)) {
42
- const devExtension = ((0, fs_1.readFileSync)(localExtensionFile)).toString();
43
- const devExtensionInfo = js_yaml_1.default.load(devExtension);
44
- const { name, description, command, initRequired, destroyRequired } = devExtensionInfo;
45
- knownExtensions.push({
46
- moduleName: `@${name}`,
47
- describe: description,
48
- command,
49
- initRequired,
50
- destroyRequired
51
- });
52
- }
53
- const pluggableModules = (0, lodash_uniqby_1.default)(knownExtensions.concat(installedExtensions), 'moduleName');
54
- for await (const extension of pluggableModules) {
55
- const version = extension.version || (pkg === null || pkg === void 0 ? void 0 : pkg.package.version);
56
- const pluggableModule = new pluggable_1.PluggableModule({ ...extension, version }, state);
57
- if (extension.initRequired) {
58
- await pluggableModule.init();
59
- }
60
- // eslint-disable-next-line
61
- extensions.push(...pluggableModule.export.call(pluggableModule));
62
- if (extension.destroyRequired) {
63
- destroyers.push(pluggableModule.destroy.bind(pluggableModule));
40
+ const devExtensionInfo = (0, cli_core_1.loadYml)(localExtensionFile);
41
+ // TODO(egorgripasov): Once proper dx.yml in place check if DXNS type == 'extension' instead.
42
+ if (devExtensionInfo.moduleName) {
43
+ knownExtensions.push(devExtensionInfo);
64
44
  }
65
45
  }
46
+ const extensionManager = new extensions_1.ExtensionManager();
47
+ const installedExtensions = await extensionManager.list();
48
+ const pluggableExtensions = (0, lodash_uniqby_1.default)(knownExtensions.concat(installedExtensions), 'moduleName');
49
+ for await (const pluggableExtension of pluggableExtensions) {
50
+ const pluggableModule = new extensions_1.PluggableModule(pluggableExtension, state);
51
+ await pluggableModule.init();
52
+ pluggableModules.push(pluggableModule);
53
+ const exportedModules = pluggableModule.export();
54
+ modules.push(...exportedModules);
55
+ }
66
56
  };
67
57
  const destroy = async () => {
68
- for await (const destroyer of destroyers) {
69
- await destroyer();
58
+ for await (const pluggableModule of pluggableModules) {
59
+ await pluggableModule.destroy();
70
60
  }
71
61
  };
72
- const modules = [
73
- profile_1.ProfileModule,
74
- devtools_1.DevToolsModule,
75
- services_1.ServicesModule,
76
- storage_1.StorageModule,
77
- halo_1.HaloModule,
78
- installation_1.UpgradeModule,
79
- installation_1.UninstallModule,
80
- extension_1.ExtensionModule
81
- ];
82
- module.exports = (0, cli_core_1.createCLI)({
83
- options: CLI_CONFIG,
84
- dir: __dirname,
85
- main: !module.parent,
86
- init,
87
- destroy,
88
- getModules: async () => [...modules, ...extensions],
89
- info: {}
90
- });
91
62
  const handleError = (err) => {
92
63
  logError(err);
93
64
  process.exit(1);
94
65
  };
95
66
  process.on('uncaughtException', handleError);
96
67
  process.on('unhandledRejection', handleError);
68
+ module.exports = (0, cli_core_1.createCLI)({
69
+ dir: __dirname,
70
+ main: !module.parent,
71
+ info: (0, cli_core_1.loadYml)(path_1.default.join(__dirname, `../${cli_core_1.EXTENSION_CONFIG_FILENAME}`)),
72
+ init,
73
+ destroy,
74
+ getModules: async () => modules,
75
+ options: CLI_CONFIG
76
+ });
97
77
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;AAEF,2BAA8C;AAC9C,sDAA2B;AAC3B,kEAAmC;AACnC,gDAAwB;AACxB,8DAAoC;AAEpC,6CAAkE;AAElE,6CAA6C;AAC7C,iDAAoD;AACpD,mDAAsD;AACtD,yCAA4C;AAC5C,yDAAwE;AACxE,mDAAsD;AACtD,+CAAkD;AAClD,iDAAoD;AACpD,+CAAkD;AAElD,MAAM,gBAAgB,GAAG,IAAA,iBAAY,EAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAElG,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,qBAAU,GAAE,CAAC;AAElC,MAAM,eAAe,GAAG,iBAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAEpD,MAAM,GAAG,GAAG,qBAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;AAE/C,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAE5C,MAAM,UAAU,GAAG;IACjB,MAAM,EAAE,gBAAgB;IACxB,WAAW,EAAE,EAAE;IACf,iBAAiB,EAAE,IAAI;CACxB,CAAC;AAEF,MAAM,UAAU,GAAU,EAAE,CAAC;AAC7B,MAAM,UAAU,GAAU,EAAE,CAAC;AAE7B,MAAM,IAAI,GAAG,KAAK,EAAE,KAAgB,EAAE,EAAE;IACtC,MAAM,mBAAmB,GAAG,MAAM,IAAA,0BAAa,GAAE,CAAC;IAElD,oDAAoD;IACpD,MAAM,kBAAkB,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACzE,IAAI,IAAA,eAAU,EAAC,kBAAkB,CAAC,EAAE;QAClC,MAAM,YAAY,GAAG,CAAC,IAAA,iBAAY,EAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnE,MAAM,gBAAgB,GAAG,iBAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEjD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,gBAAgB,CAAC;QAEvF,eAAe,CAAC,IAAI,CAAC;YACnB,UAAU,EAAE,IAAI,IAAI,EAAE;YACtB,QAAQ,EAAE,WAAW;YACrB,OAAO;YACP,YAAY;YACZ,eAAe;SAChB,CAAC,CAAC;KACJ;IAED,MAAM,gBAAgB,GAAG,IAAA,uBAAM,EAAC,eAAe,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,YAAY,CAAC,CAAC;IAE3F,IAAI,KAAK,EAAE,MAAM,SAAS,IAAI,gBAAgB,EAAE;QAC9C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,KAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,OAAO,CAAA,CAAC;QAC1D,MAAM,eAAe,GAAG,IAAI,2BAAe,CAAC,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;QAC9E,IAAI,SAAS,CAAC,YAAY,EAAE;YAC1B,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;SAC9B;QAED,2BAA2B;QAC3B,UAAU,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAEjE,IAAI,SAAS,CAAC,eAAe,EAAE;YAC7B,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;SAChE;KACF;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;IACzB,IAAI,KAAK,EAAE,MAAM,SAAS,IAAI,UAAU,EAAE;QACxC,MAAM,SAAS,EAAE,CAAC;KACnB;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG;IACd,uBAAa;IACb,yBAAc;IACd,yBAAc;IACd,uBAAa;IACb,iBAAU;IACV,4BAAa;IACb,8BAAe;IACf,2BAAe;CAChB,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG,IAAA,oBAAS,EAAC;IACzB,OAAO,EAAE,UAAU;IACnB,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM;IACpB,IAAI;IACJ,OAAO;IACP,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,UAAU,CAAC;IACnD,IAAI,EAAE,EAAE;CACT,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,GAAQ,EAAE,EAAE;IAC/B,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;AAC7C,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export function DevToolsModule({ config }: {
1
+ export function DevtoolsModule({ config }: {
2
2
  config: any;
3
3
  }): object;
4
4
  //# sourceMappingURL=devtools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"devtools.d.ts","sourceRoot":"","sources":["../../../src/modules/devtools.js"],"names":[],"mappings":"AAsBO;;IAFM,MAAM,CA+DjB"}
1
+ {"version":3,"file":"devtools.d.ts","sourceRoot":"","sources":["../../../src/modules/devtools.js"],"names":[],"mappings":"AAuBO;;IAHM,MAAM,CA6DjB"}
@@ -6,7 +6,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  return (mod && mod.__esModule) ? mod : { "default": mod };
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.DevToolsModule = void 0;
9
+ exports.DevtoolsModule = void 0;
10
10
  const assert_1 = __importDefault(require("assert"));
11
11
  const download_1 = __importDefault(require("download"));
12
12
  const octokit_1 = require("octokit");
@@ -21,9 +21,10 @@ const CONFIG = { timeout: 30000, extract: false, strip: 1, mode: '755' };
21
21
  * Cert CLI module.
22
22
  * @returns {object}
23
23
  */
24
- const DevToolsModule = ({ config }) => ({
24
+ // TODO(burdon): Move to debug CLI?
25
+ const DevtoolsModule = ({ config }) => ({
25
26
  command: ['devtools'],
26
- describe: 'Development tools.',
27
+ describe: 'Browser development tools.',
27
28
  builder: yargs => yargs
28
29
  .command({
29
30
  command: ['collect'],
@@ -61,5 +62,5 @@ const DevToolsModule = ({ config }) => ({
61
62
  })
62
63
  })
63
64
  });
64
- exports.DevToolsModule = DevToolsModule;
65
+ exports.DevtoolsModule = DevtoolsModule;
65
66
  //# sourceMappingURL=devtools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"devtools.js","sourceRoot":"","sources":["../../../src/modules/devtools.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devtools.js","sourceRoot":"","sources":["../../../src/modules/devtools.js"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../src/modules/extension.js"],"names":[],"mappings":"AAoBO;;IAFM,MAAM,CA6LjB"}
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../src/modules/extension.js"],"names":[],"mappings":"AAmBO;;IAFM,MAAM,CA6LjB"}
@@ -8,12 +8,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.ExtensionModule = void 0;
10
10
  const assert_1 = __importDefault(require("assert"));
11
- const lodash_get_1 = __importDefault(require("lodash.get"));
12
11
  const semver_1 = require("semver");
13
12
  const cli_core_1 = require("@dxos/cli-core");
14
13
  const debug_1 = require("@dxos/debug");
15
14
  const extensions_1 = require("../extensions");
16
- const pluggable_1 = require("../pluggable");
15
+ // TODO(burdon): Move to config.
17
16
  const DEFAULT_TEMPLATE = 'https://github.com/dxos/templates/tree/main/cli-template';
18
17
  /**
19
18
  * Extension CLI module.
@@ -30,12 +29,13 @@ const ExtensionModule = ({ getReadlineInterface }) => ({
30
29
  builder: yargs => yargs,
31
30
  handler: (0, cli_core_1.asyncHandler)(async (argv) => {
32
31
  const { json } = argv;
33
- let extensions = await (0, extensions_1.listInstalled)();
34
- extensions = extensions.map(({ moduleName, version, describe, command }) => ({
32
+ const extensionManager = new extensions_1.ExtensionManager();
33
+ let extensions = await extensionManager.list();
34
+ extensions = extensions.map(({ moduleName, version, description, modules }) => ({
35
35
  extension: moduleName,
36
- command,
36
+ modules: modules.map(module => module.command),
37
37
  version,
38
- description: describe
38
+ description
39
39
  }));
40
40
  (0, cli_core_1.print)(extensions, { json });
41
41
  })
@@ -59,16 +59,16 @@ const ExtensionModule = ({ getReadlineInterface }) => ({
59
59
  handler: (0, cli_core_1.asyncHandler)(async (argv) => {
60
60
  const { module: moduleName, version, npmClient } = argv;
61
61
  (0, assert_1.default)(moduleName, 'Invalid extension.');
62
- const pluggable = new pluggable_1.Pluggable({ moduleName, version });
62
+ const pluggable = new extensions_1.Pluggable({ moduleName, version });
63
63
  if (pluggable.isInWorkspace) {
64
64
  (0, debug_1.log)(`Local version of "${moduleName}" from workspace is used, aborting.`);
65
65
  return;
66
66
  }
67
67
  if (pluggable.installed) {
68
68
  const info = pluggable.getInfo();
69
- const installedVersion = (0, lodash_get_1.default)(info, 'package.version');
69
+ const installedVersion = info.version;
70
70
  let action = 'upgrade';
71
- // TODO(egorgripasov): Read verison number from WNS.
71
+ // TODO(egorgripasov): Read verison number from DXNS.
72
72
  if (version && (0, semver_1.valid)(version) && installedVersion) {
73
73
  const comp = (0, semver_1.compare)(version, installedVersion);
74
74
  switch (comp) {
@@ -94,14 +94,16 @@ const ExtensionModule = ({ getReadlineInterface }) => ({
94
94
  rl.close();
95
95
  if (!(/^y/i.test(wishToUpgrade))) {
96
96
  (0, debug_1.log)('Abotring.');
97
- await (0, extensions_1.addInstalled)(moduleName, info);
97
+ const extensionManager = new extensions_1.ExtensionManager();
98
+ await extensionManager.add(moduleName, info);
98
99
  return;
99
100
  }
100
101
  }
101
102
  const spinner = `Installing ${moduleName}${version ? `@${version}` : ''}`;
102
103
  await pluggable.installModule(npmClient, { spinner });
103
104
  const updatedInfo = pluggable.getInfo();
104
- await (0, extensions_1.addInstalled)(moduleName, updatedInfo);
105
+ const extensionManager = new extensions_1.ExtensionManager();
106
+ await extensionManager.add(moduleName, updatedInfo);
105
107
  })
106
108
  })
107
109
  // Uninstall.
@@ -114,20 +116,20 @@ const ExtensionModule = ({ getReadlineInterface }) => ({
114
116
  handler: (0, cli_core_1.asyncHandler)(async (argv) => {
115
117
  const { module: moduleName, npmClient } = argv;
116
118
  (0, assert_1.default)(moduleName, 'Invalid extension.');
117
- const pluggable = new pluggable_1.Pluggable({ moduleName });
119
+ const pluggable = new extensions_1.Pluggable({ moduleName });
118
120
  if (pluggable.isInWorkspace) {
119
121
  (0, debug_1.log)(`Local version of "${moduleName}" from workspace is used, aborting.`);
120
122
  return;
121
123
  }
124
+ const extensionManager = new extensions_1.ExtensionManager();
122
125
  if (!pluggable.installed) {
123
- await (0, extensions_1.removeInstalled)(moduleName);
126
+ await extensionManager.remove(moduleName);
124
127
  return;
125
128
  }
126
129
  const info = pluggable.getInfo();
127
- const installedVersion = (0, lodash_get_1.default)(info, 'package.version');
128
130
  const rl = getReadlineInterface();
129
131
  const wishToProceed = await new Promise(resolve => {
130
- rl.question(`Found Extension ${moduleName}${installedVersion ? `@${installedVersion}` : ''} installed, do you wish to remove it? (Yes/No): `, answer => {
132
+ rl.question(`Found Extension ${moduleName}${info.version ? `@${info.version}` : ''} installed, do you wish to remove it? (Yes/No): `, answer => {
131
133
  resolve(answer);
132
134
  });
133
135
  });
@@ -138,7 +140,7 @@ const ExtensionModule = ({ getReadlineInterface }) => ({
138
140
  }
139
141
  const spinner = `Uninstalling ${moduleName}`;
140
142
  await pluggable.uninstallModule(npmClient, { spinner });
141
- await (0, extensions_1.removeInstalled)(moduleName);
143
+ await extensionManager.remove(moduleName);
142
144
  })
143
145
  })
144
146
  // Create an app from the template.