@theia/cli 1.18.0 → 1.19.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.
@@ -19,7 +19,6 @@ declare global {
19
19
  }
20
20
  }
21
21
  import { RequestInit, Response } from 'node-fetch';
22
- export declare const extensionPackCacheName = ".packs";
23
22
  /**
24
23
  * Available options when downloading.
25
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"download-plugins.d.ts","sourceRoot":"","sources":["../src/download-plugins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAIlF,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAC5B;CACJ;AAOD,OAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAW1D,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAA8B,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEjG;AA8FD;;GAEG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAO5E"}
1
+ {"version":3,"file":"download-plugins.d.ts","sourceRoot":"","sources":["../src/download-plugins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAIlF,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAC5B;CACJ;AAOD,OAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAY1D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAA8B,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFjG;AA8FD;;GAEG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAO5E"}
@@ -15,7 +15,7 @@
15
15
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
16
  ********************************************************************************/
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.xfetch = exports.extensionPackCacheName = void 0;
18
+ exports.xfetch = void 0;
19
19
  const ovsx_client_1 = require("@theia/ovsx-client/lib/ovsx-client");
20
20
  const safe_1 = require("colors/safe");
21
21
  const decompress = require("decompress");
@@ -27,11 +27,11 @@ const proxy_from_env_1 = require("proxy-from-env");
27
27
  const stream = require("stream");
28
28
  const temp = require("temp");
29
29
  const util_1 = require("util");
30
+ const api_1 = require("@theia/application-package/lib/api");
30
31
  const pipelineAsPromised = util_1.promisify(stream.pipeline);
31
32
  temp.track();
32
- exports.extensionPackCacheName = '.packs';
33
33
  async function downloadPlugins(options = {}) {
34
- const { packed = false, ignoreErrors = false, apiVersion = '1.50.0', apiUrl = 'https://open-vsx.org/api' } = options;
34
+ const { packed = false, ignoreErrors = false, apiVersion = api_1.DEFAULT_SUPPORTED_API_VERSION, apiUrl = 'https://open-vsx.org/api' } = options;
35
35
  // Collect the list of failures to be appended at the end of the script.
36
36
  const failures = [];
37
37
  // Resolve the `package.json` at the current working directory.
@@ -46,18 +46,12 @@ async function downloadPlugins(options = {}) {
46
46
  return;
47
47
  }
48
48
  try {
49
- // Retrieve the cached extension-packs in order to not re-download them.
50
- const extensionPackCachePath = path.resolve(pluginsDir, exports.extensionPackCacheName);
51
- const cachedExtensionPacks = new Set(fs_1.existsSync(extensionPackCachePath)
52
- ? await fs_1.promises.readdir(extensionPackCachePath)
53
- : []);
54
49
  console.warn('--- downloading plugins ---');
55
50
  // Download the raw plugins defined by the `theiaPlugins` property.
56
51
  // This will include both "normal" plugins as well as "extension packs".
57
52
  const downloads = [];
58
53
  for (const [plugin, pluginUrl] of Object.entries(pck.theiaPlugins)) {
59
- // Skip extension packs that were moved to `.packs`:
60
- if (cachedExtensionPacks.has(plugin) || typeof pluginUrl !== 'string') {
54
+ if (typeof pluginUrl !== 'string') {
61
55
  continue;
62
56
  }
63
57
  downloads.push(downloadPluginAsync(failures, plugin, pluginUrl, pluginsDir, packed));
@@ -66,10 +60,7 @@ async function downloadPlugins(options = {}) {
66
60
  console.warn('--- collecting extension-packs ---');
67
61
  const extensionPacks = await collectExtensionPacks(pluginsDir, excludedIds);
68
62
  if (extensionPacks.size > 0) {
69
- console.warn(`--- found ${extensionPacks.size} extension-packs ---`);
70
- // Move extension-packs to `.packs`
71
- await cacheExtensionPacks(pluginsDir, extensionPacks);
72
- console.warn('--- resolving extension-packs ---');
63
+ console.warn(`--- resolving ${extensionPacks.size} extension-packs ---`);
73
64
  const client = new ovsx_client_1.OVSXClient({ apiVersion, apiUrl });
74
65
  // De-duplicate extension ids to only download each once:
75
66
  const ids = new Set(Array.from(extensionPacks.values()).flat());
@@ -77,7 +68,22 @@ async function downloadPlugins(options = {}) {
77
68
  const extension = await client.getLatestCompatibleExtensionVersion(id);
78
69
  const downloadUrl = extension === null || extension === void 0 ? void 0 : extension.files.download;
79
70
  if (downloadUrl) {
80
- await downloadPluginAsync(failures, id, downloadUrl, pluginsDir, packed);
71
+ await downloadPluginAsync(failures, id, downloadUrl, pluginsDir, packed, extension === null || extension === void 0 ? void 0 : extension.version);
72
+ }
73
+ }));
74
+ }
75
+ console.warn('--- collecting extension dependencies ---');
76
+ const pluginDependencies = await collectPluginDependencies(pluginsDir, excludedIds);
77
+ if (pluginDependencies.length > 0) {
78
+ console.warn(`--- resolving ${pluginDependencies.length} extension dependencies ---`);
79
+ const client = new ovsx_client_1.OVSXClient({ apiVersion, apiUrl });
80
+ // De-duplicate extension ids to only download each once:
81
+ const ids = new Set(pluginDependencies);
82
+ await Promise.all(Array.from(ids, async (id) => {
83
+ const extension = await client.getLatestCompatibleExtensionVersion(id);
84
+ const downloadUrl = extension === null || extension === void 0 ? void 0 : extension.files.download;
85
+ if (downloadUrl) {
86
+ await downloadPluginAsync(failures, id, downloadUrl, pluginsDir, packed, extension === null || extension === void 0 ? void 0 : extension.version);
81
87
  }
82
88
  }));
83
89
  }
@@ -102,7 +108,7 @@ exports.default = downloadPlugins;
102
108
  * @param packed whether to decompress or not.
103
109
  * @param cachedExtensionPacks the list of cached extension packs already downloaded.
104
110
  */
105
- async function downloadPluginAsync(failures, plugin, pluginUrl, pluginsDir, packed) {
111
+ async function downloadPluginAsync(failures, plugin, pluginUrl, pluginsDir, packed, version) {
106
112
  if (!plugin) {
107
113
  return;
108
114
  }
@@ -171,7 +177,7 @@ async function downloadPluginAsync(failures, plugin, pluginUrl, pluginsDir, pack
171
177
  await pipelineAsPromised(response.body, tempFile);
172
178
  await decompress(tempFile.path, targetPath);
173
179
  }
174
- console.warn(safe_1.green(`+ ${plugin}: downloaded successfully ${attempts > 1 ? `(after ${attempts} attempts)` : ''}`));
180
+ console.warn(safe_1.green(`+ ${plugin}${version ? `@${version}` : ''}: downloaded successfully ${attempts > 1 ? `(after ${attempts} attempts)` : ''}`));
175
181
  }
176
182
  /**
177
183
  * Determine if the resource for the given path is already downloaded.
@@ -205,8 +211,7 @@ async function collectPackageJsonPaths(pluginDir) {
205
211
  // Recursively fetch the list of extension `package.json` files.
206
212
  for (const file of files) {
207
213
  const filePath = path.join(pluginDir, file);
208
- // Exclude the `.packs` folder used to store extension-packs after being resolved.
209
- if (!filePath.startsWith(exports.extensionPackCacheName) && (await fs_1.promises.stat(filePath)).isDirectory()) {
214
+ if ((await fs_1.promises.stat(filePath)).isDirectory()) {
210
215
  packageJsonPathList.push(...await collectPackageJsonPaths(filePath));
211
216
  }
212
217
  else if (path.basename(filePath) === 'package.json' && !path.dirname(filePath).includes('node_modules')) {
@@ -228,7 +233,7 @@ async function collectExtensionPacks(pluginDir, excludedIds) {
228
233
  await Promise.all(packageJsonPaths.map(async (packageJsonPath) => {
229
234
  const json = JSON.parse(await fs_1.promises.readFile(packageJsonPath, 'utf8'));
230
235
  const extensionPack = json.extensionPack;
231
- if (extensionPack && Array.isArray(extensionPack)) {
236
+ if (Array.isArray(extensionPack)) {
232
237
  extensionPackPaths.set(packageJsonPath, extensionPack.filter(id => {
233
238
  if (excludedIds.has(id)) {
234
239
  console.log(safe_1.yellow(`'${id}' referenced by '${json.name}' (ext pack) is excluded because of 'theiaPluginsExcludeIds'`));
@@ -241,51 +246,29 @@ async function collectExtensionPacks(pluginDir, excludedIds) {
241
246
  return extensionPackPaths;
242
247
  }
243
248
  /**
244
- * Move extension-packs downloaded from `pluginsDir/x` to `pluginsDir/.packs/x`.
245
- *
246
- * The issue we are trying to solve is the following:
247
- * We may skip some extensions declared in a pack due to the `theiaPluginsExcludeIds` list. But once we start
248
- * a Theia application the plugin system will detect the pack and install the missing extensions.
249
- *
250
- * By moving the packs to a subdirectory it should make it invisible to the plugin system, only leaving
251
- * the plugins that were installed under `pluginsDir` directly.
252
- *
253
- * @param extensionPacksPaths the list of extension-pack paths.
249
+ * Get the mapping of paths and their included plugin ids.
250
+ * - If an extension-pack references an explicitly excluded `id` the `id` will be omitted.
251
+ * @param pluginDir the plugin directory.
252
+ * @param excludedIds the list of plugin ids to exclude.
253
+ * @returns the mapping of extension-pack paths and their included plugin ids.
254
254
  */
255
- async function cacheExtensionPacks(pluginsDir, extensionPacks) {
256
- const packsFolderPath = path.resolve(pluginsDir, exports.extensionPackCacheName);
257
- await fs_1.promises.mkdir(packsFolderPath, { recursive: true });
258
- await Promise.all(Array.from(extensionPacks.entries(), async ([extensionPackPath, value]) => {
259
- extensionPackPath = path.resolve(extensionPackPath);
260
- // Skip entries found in `.packs`
261
- if (extensionPackPath.startsWith(packsFolderPath)) {
262
- return; // skip
263
- }
264
- try {
265
- const oldPath = getExtensionRoot(pluginsDir, extensionPackPath);
266
- const newPath = path.resolve(packsFolderPath, path.basename(oldPath));
267
- if (!fs_1.existsSync(newPath)) {
268
- await fs_1.promises.rename(oldPath, newPath);
255
+ async function collectPluginDependencies(pluginDir, excludedIds) {
256
+ const dependencyIds = [];
257
+ const packageJsonPaths = await collectPackageJsonPaths(pluginDir);
258
+ await Promise.all(packageJsonPaths.map(async (packageJsonPath) => {
259
+ const json = JSON.parse(await fs_1.promises.readFile(packageJsonPath, 'utf8'));
260
+ const extensionDependencies = json.extensionDependencies;
261
+ if (Array.isArray(extensionDependencies)) {
262
+ for (const dependency of extensionDependencies) {
263
+ if (excludedIds.has(dependency)) {
264
+ console.log(safe_1.yellow(`'${dependency}' referenced by '${json.name}' is excluded because of 'theiaPluginsExcludeIds'`));
265
+ }
266
+ else {
267
+ dependencyIds.push(dependency);
268
+ }
269
269
  }
270
270
  }
271
- catch (error) {
272
- console.error(error);
273
- }
274
271
  }));
275
- }
276
- /**
277
- * Walk back to the root of an extension starting from its `package.json`. e.g.
278
- *
279
- * ```ts
280
- * getExtensionRoot('/a/b/c', '/a/b/c/EXT/d/e/f/package.json') === '/a/b/c/EXT'
281
- * ```
282
- */
283
- function getExtensionRoot(root, packageJsonPath) {
284
- root = path.resolve(root);
285
- packageJsonPath = path.resolve(packageJsonPath);
286
- if (!packageJsonPath.startsWith(root)) {
287
- throw new Error(`unexpected paths:\n root: ${root}\n package.json: ${packageJsonPath}`);
288
- }
289
- return packageJsonPath.substr(0, packageJsonPath.indexOf(path.sep, root.length + 1));
272
+ return dependencyIds;
290
273
  }
291
274
  //# sourceMappingURL=download-plugins.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"download-plugins.js","sourceRoot":"","sources":["../src/download-plugins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download-plugins.js","sourceRoot":"","sources":["../src/download-plugins.ts"],"names":[],"mappings":"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"}
package/lib/theia.js CHANGED
@@ -19,9 +19,11 @@ const temp = require("temp");
19
19
  const yargs = require("yargs");
20
20
  const yargsFactory = require("yargs/yargs");
21
21
  const application_manager_1 = require("@theia/application-manager");
22
+ const application_package_1 = require("@theia/application-package");
22
23
  const check_hoisting_1 = require("./check-hoisting");
23
24
  const download_plugins_1 = require("./download-plugins");
24
25
  const run_test_1 = require("./run-test");
26
+ const localization_manager_1 = require("@theia/localization-manager");
25
27
  process.on('unhandledRejection', (reason, promise) => {
26
28
  throw reason;
27
29
  });
@@ -183,7 +185,7 @@ function theiaCli() {
183
185
  'api-version': {
184
186
  alias: 'v',
185
187
  describe: 'Supported API version for plugins',
186
- default: '1.50.0'
188
+ default: application_package_1.DEFAULT_SUPPORTED_API_VERSION
187
189
  },
188
190
  'api-url': {
189
191
  alias: 'u',
@@ -194,7 +196,46 @@ function theiaCli() {
194
196
  handler: async ({ packed }) => {
195
197
  await download_plugins_1.default({ packed });
196
198
  },
197
- }).command({
199
+ })
200
+ .command({
201
+ command: 'nls-extract',
202
+ describe: 'Extract translation key/value pairs from source code',
203
+ builder: {
204
+ 'output': {
205
+ alias: 'o',
206
+ describe: 'Output file for the extracted translations',
207
+ demandOption: true
208
+ },
209
+ 'root': {
210
+ alias: 'r',
211
+ describe: 'The directory which contains the source code',
212
+ default: '.'
213
+ },
214
+ 'merge': {
215
+ alias: 'm',
216
+ describe: 'Whether to merge new with existing translation values',
217
+ boolean: true,
218
+ default: false
219
+ },
220
+ 'exclude': {
221
+ alias: 'e',
222
+ describe: 'Allows to exclude translation keys starting with this value'
223
+ },
224
+ 'files': {
225
+ alias: 'f',
226
+ describe: 'Glob pattern matching the files to extract from (starting from --root).',
227
+ array: true
228
+ },
229
+ 'logs': {
230
+ alias: 'l',
231
+ describe: 'File path to a log file'
232
+ }
233
+ },
234
+ handler: async (options) => {
235
+ await localization_manager_1.extract(options);
236
+ }
237
+ })
238
+ .command({
198
239
  command: 'test [theia-args...]',
199
240
  builder: {
200
241
  'test-inspect': {
package/lib/theia.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"theia.js","sourceRoot":"","sources":["../src/theia.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theia.js","sourceRoot":"","sources":["../src/theia.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/cli",
3
- "version": "1.18.0",
3
+ "version": "1.19.0",
4
4
  "description": "Theia CLI.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -29,9 +29,10 @@
29
29
  "clean": "theiaext clean"
30
30
  },
31
31
  "dependencies": {
32
- "@theia/application-manager": "1.18.0",
33
- "@theia/application-package": "1.18.0",
34
- "@theia/ovsx-client": "1.18.0",
32
+ "@theia/application-manager": "1.19.0",
33
+ "@theia/application-package": "1.19.0",
34
+ "@theia/localization-manager": "1.19.0",
35
+ "@theia/ovsx-client": "1.19.0",
35
36
  "@types/chai": "^4.2.7",
36
37
  "@types/mkdirp": "^0.5.2",
37
38
  "@types/mocha": "^5.2.7",
@@ -54,5 +55,5 @@
54
55
  "devDependencies": {
55
56
  "@types/proxy-from-env": "^1.0.1"
56
57
  },
57
- "gitHead": "76318d01b7b3364cdf35ee456797699363f2634d"
58
+ "gitHead": "cebb5417bb40e320178e3a4e66070af514f0525f"
58
59
  }
@@ -26,7 +26,7 @@ declare global {
26
26
  import { OVSXClient } from '@theia/ovsx-client/lib/ovsx-client';
27
27
  import { green, red, yellow } from 'colors/safe';
28
28
  import * as decompress from 'decompress';
29
- import { createWriteStream, existsSync, promises as fs } from 'fs';
29
+ import { createWriteStream, promises as fs } from 'fs';
30
30
  import { HttpsProxyAgent } from 'https-proxy-agent';
31
31
  import fetch, { RequestInit, Response } from 'node-fetch';
32
32
  import * as path from 'path';
@@ -34,13 +34,12 @@ import { getProxyForUrl } from 'proxy-from-env';
34
34
  import * as stream from 'stream';
35
35
  import * as temp from 'temp';
36
36
  import { promisify } from 'util';
37
+ import { DEFAULT_SUPPORTED_API_VERSION } from '@theia/application-package/lib/api';
37
38
 
38
39
  const pipelineAsPromised = promisify(stream.pipeline);
39
40
 
40
41
  temp.track();
41
42
 
42
- export const extensionPackCacheName = '.packs';
43
-
44
43
  /**
45
44
  * Available options when downloading.
46
45
  */
@@ -73,7 +72,7 @@ export default async function downloadPlugins(options: DownloadPluginsOptions =
73
72
  const {
74
73
  packed = false,
75
74
  ignoreErrors = false,
76
- apiVersion = '1.50.0',
75
+ apiVersion = DEFAULT_SUPPORTED_API_VERSION,
77
76
  apiUrl = 'https://open-vsx.org/api'
78
77
  } = options;
79
78
 
@@ -96,32 +95,22 @@ export default async function downloadPlugins(options: DownloadPluginsOptions =
96
95
  return;
97
96
  }
98
97
  try {
99
- // Retrieve the cached extension-packs in order to not re-download them.
100
- const extensionPackCachePath = path.resolve(pluginsDir, extensionPackCacheName);
101
- const cachedExtensionPacks = new Set<string>(
102
- existsSync(extensionPackCachePath)
103
- ? await fs.readdir(extensionPackCachePath)
104
- : []
105
- );
106
98
  console.warn('--- downloading plugins ---');
107
99
  // Download the raw plugins defined by the `theiaPlugins` property.
108
100
  // This will include both "normal" plugins as well as "extension packs".
109
101
  const downloads = [];
110
102
  for (const [plugin, pluginUrl] of Object.entries(pck.theiaPlugins)) {
111
- // Skip extension packs that were moved to `.packs`:
112
- if (cachedExtensionPacks.has(plugin) || typeof pluginUrl !== 'string') {
103
+ if (typeof pluginUrl !== 'string') {
113
104
  continue;
114
105
  }
115
106
  downloads.push(downloadPluginAsync(failures, plugin, pluginUrl, pluginsDir, packed));
116
107
  }
117
108
  await Promise.all(downloads);
109
+
118
110
  console.warn('--- collecting extension-packs ---');
119
111
  const extensionPacks = await collectExtensionPacks(pluginsDir, excludedIds);
120
112
  if (extensionPacks.size > 0) {
121
- console.warn(`--- found ${extensionPacks.size} extension-packs ---`);
122
- // Move extension-packs to `.packs`
123
- await cacheExtensionPacks(pluginsDir, extensionPacks);
124
- console.warn('--- resolving extension-packs ---');
113
+ console.warn(`--- resolving ${extensionPacks.size} extension-packs ---`);
125
114
  const client = new OVSXClient({ apiVersion, apiUrl });
126
115
  // De-duplicate extension ids to only download each once:
127
116
  const ids = new Set<string>(Array.from(extensionPacks.values()).flat());
@@ -129,10 +118,27 @@ export default async function downloadPlugins(options: DownloadPluginsOptions =
129
118
  const extension = await client.getLatestCompatibleExtensionVersion(id);
130
119
  const downloadUrl = extension?.files.download;
131
120
  if (downloadUrl) {
132
- await downloadPluginAsync(failures, id, downloadUrl, pluginsDir, packed);
121
+ await downloadPluginAsync(failures, id, downloadUrl, pluginsDir, packed, extension?.version);
133
122
  }
134
123
  }));
135
124
  }
125
+
126
+ console.warn('--- collecting extension dependencies ---');
127
+ const pluginDependencies = await collectPluginDependencies(pluginsDir, excludedIds);
128
+ if (pluginDependencies.length > 0) {
129
+ console.warn(`--- resolving ${pluginDependencies.length} extension dependencies ---`);
130
+ const client = new OVSXClient({ apiVersion, apiUrl });
131
+ // De-duplicate extension ids to only download each once:
132
+ const ids = new Set<string>(pluginDependencies);
133
+ await Promise.all(Array.from(ids, async id => {
134
+ const extension = await client.getLatestCompatibleExtensionVersion(id);
135
+ const downloadUrl = extension?.files.download;
136
+ if (downloadUrl) {
137
+ await downloadPluginAsync(failures, id, downloadUrl, pluginsDir, packed, extension?.version);
138
+ }
139
+ }));
140
+ }
141
+
136
142
  } finally {
137
143
  temp.cleanupSync();
138
144
  }
@@ -153,7 +159,7 @@ export default async function downloadPlugins(options: DownloadPluginsOptions =
153
159
  * @param packed whether to decompress or not.
154
160
  * @param cachedExtensionPacks the list of cached extension packs already downloaded.
155
161
  */
156
- async function downloadPluginAsync(failures: string[], plugin: string, pluginUrl: string, pluginsDir: string, packed: boolean): Promise<void> {
162
+ async function downloadPluginAsync(failures: string[], plugin: string, pluginUrl: string, pluginsDir: string, packed: boolean, version?: string): Promise<void> {
157
163
  if (!plugin) {
158
164
  return;
159
165
  }
@@ -223,7 +229,7 @@ async function downloadPluginAsync(failures: string[], plugin: string, pluginUrl
223
229
  await decompress(tempFile.path, targetPath);
224
230
  }
225
231
 
226
- console.warn(green(`+ ${plugin}: downloaded successfully ${attempts > 1 ? `(after ${attempts} attempts)` : ''}`));
232
+ console.warn(green(`+ ${plugin}${version ? `@${version}` : ''}: downloaded successfully ${attempts > 1 ? `(after ${attempts} attempts)` : ''}`));
227
233
  }
228
234
 
229
235
  /**
@@ -259,8 +265,7 @@ async function collectPackageJsonPaths(pluginDir: string): Promise<string[]> {
259
265
  // Recursively fetch the list of extension `package.json` files.
260
266
  for (const file of files) {
261
267
  const filePath = path.join(pluginDir, file);
262
- // Exclude the `.packs` folder used to store extension-packs after being resolved.
263
- if (!filePath.startsWith(extensionPackCacheName) && (await fs.stat(filePath)).isDirectory()) {
268
+ if ((await fs.stat(filePath)).isDirectory()) {
264
269
  packageJsonPathList.push(...await collectPackageJsonPaths(filePath));
265
270
  } else if (path.basename(filePath) === 'package.json' && !path.dirname(filePath).includes('node_modules')) {
266
271
  packageJsonPathList.push(filePath);
@@ -282,7 +287,7 @@ async function collectExtensionPacks(pluginDir: string, excludedIds: Set<string>
282
287
  await Promise.all(packageJsonPaths.map(async packageJsonPath => {
283
288
  const json = JSON.parse(await fs.readFile(packageJsonPath, 'utf8'));
284
289
  const extensionPack: unknown = json.extensionPack;
285
- if (extensionPack && Array.isArray(extensionPack)) {
290
+ if (Array.isArray(extensionPack)) {
286
291
  extensionPackPaths.set(packageJsonPath, extensionPack.filter(id => {
287
292
  if (excludedIds.has(id)) {
288
293
  console.log(yellow(`'${id}' referenced by '${json.name}' (ext pack) is excluded because of 'theiaPluginsExcludeIds'`));
@@ -296,50 +301,27 @@ async function collectExtensionPacks(pluginDir: string, excludedIds: Set<string>
296
301
  }
297
302
 
298
303
  /**
299
- * Move extension-packs downloaded from `pluginsDir/x` to `pluginsDir/.packs/x`.
300
- *
301
- * The issue we are trying to solve is the following:
302
- * We may skip some extensions declared in a pack due to the `theiaPluginsExcludeIds` list. But once we start
303
- * a Theia application the plugin system will detect the pack and install the missing extensions.
304
- *
305
- * By moving the packs to a subdirectory it should make it invisible to the plugin system, only leaving
306
- * the plugins that were installed under `pluginsDir` directly.
307
- *
308
- * @param extensionPacksPaths the list of extension-pack paths.
304
+ * Get the mapping of paths and their included plugin ids.
305
+ * - If an extension-pack references an explicitly excluded `id` the `id` will be omitted.
306
+ * @param pluginDir the plugin directory.
307
+ * @param excludedIds the list of plugin ids to exclude.
308
+ * @returns the mapping of extension-pack paths and their included plugin ids.
309
309
  */
310
- async function cacheExtensionPacks(pluginsDir: string, extensionPacks: Map<string, unknown>): Promise<void> {
311
- const packsFolderPath = path.resolve(pluginsDir, extensionPackCacheName);
312
- await fs.mkdir(packsFolderPath, { recursive: true });
313
- await Promise.all(Array.from(extensionPacks.entries(), async ([extensionPackPath, value]) => {
314
- extensionPackPath = path.resolve(extensionPackPath);
315
- // Skip entries found in `.packs`
316
- if (extensionPackPath.startsWith(packsFolderPath)) {
317
- return; // skip
318
- }
319
- try {
320
- const oldPath = getExtensionRoot(pluginsDir, extensionPackPath);
321
- const newPath = path.resolve(packsFolderPath, path.basename(oldPath));
322
- if (!existsSync(newPath)) {
323
- await fs.rename(oldPath, newPath);
310
+ async function collectPluginDependencies(pluginDir: string, excludedIds: Set<string>): Promise<string[]> {
311
+ const dependencyIds: string[] = [];
312
+ const packageJsonPaths = await collectPackageJsonPaths(pluginDir);
313
+ await Promise.all(packageJsonPaths.map(async packageJsonPath => {
314
+ const json = JSON.parse(await fs.readFile(packageJsonPath, 'utf8'));
315
+ const extensionDependencies: unknown = json.extensionDependencies;
316
+ if (Array.isArray(extensionDependencies)) {
317
+ for (const dependency of extensionDependencies) {
318
+ if (excludedIds.has(dependency)) {
319
+ console.log(yellow(`'${dependency}' referenced by '${json.name}' is excluded because of 'theiaPluginsExcludeIds'`));
320
+ } else {
321
+ dependencyIds.push(dependency);
322
+ }
324
323
  }
325
- } catch (error) {
326
- console.error(error);
327
324
  }
328
325
  }));
329
- }
330
-
331
- /**
332
- * Walk back to the root of an extension starting from its `package.json`. e.g.
333
- *
334
- * ```ts
335
- * getExtensionRoot('/a/b/c', '/a/b/c/EXT/d/e/f/package.json') === '/a/b/c/EXT'
336
- * ```
337
- */
338
- function getExtensionRoot(root: string, packageJsonPath: string): string {
339
- root = path.resolve(root);
340
- packageJsonPath = path.resolve(packageJsonPath);
341
- if (!packageJsonPath.startsWith(root)) {
342
- throw new Error(`unexpected paths:\n root: ${root}\n package.json: ${packageJsonPath}`);
343
- }
344
- return packageJsonPath.substr(0, packageJsonPath.indexOf(path.sep, root.length + 1));
326
+ return dependencyIds;
345
327
  }
package/src/theia.ts CHANGED
@@ -18,10 +18,11 @@ import * as temp from 'temp';
18
18
  import * as yargs from 'yargs';
19
19
  import yargsFactory = require('yargs/yargs');
20
20
  import { ApplicationPackageManager, rebuild } from '@theia/application-manager';
21
- import { ApplicationProps } from '@theia/application-package';
21
+ import { ApplicationProps, DEFAULT_SUPPORTED_API_VERSION } from '@theia/application-package';
22
22
  import checkHoisted from './check-hoisting';
23
23
  import downloadPlugins from './download-plugins';
24
24
  import runTest from './run-test';
25
+ import { extract } from '@theia/localization-manager';
25
26
 
26
27
  process.on('unhandledRejection', (reason, promise) => {
27
28
  throw reason;
@@ -212,7 +213,7 @@ function theiaCli(): void {
212
213
  'api-version': {
213
214
  alias: 'v',
214
215
  describe: 'Supported API version for plugins',
215
- default: '1.50.0'
216
+ default: DEFAULT_SUPPORTED_API_VERSION
216
217
  },
217
218
  'api-url': {
218
219
  alias: 'u',
@@ -223,7 +224,53 @@ function theiaCli(): void {
223
224
  handler: async ({ packed }) => {
224
225
  await downloadPlugins({ packed });
225
226
  },
226
- }).command<{
227
+ })
228
+ .command<{
229
+ root: string,
230
+ output: string,
231
+ merge: boolean,
232
+ exclude?: string,
233
+ logs?: string,
234
+ files?: string[]
235
+ }>({
236
+ command: 'nls-extract',
237
+ describe: 'Extract translation key/value pairs from source code',
238
+ builder: {
239
+ 'output': {
240
+ alias: 'o',
241
+ describe: 'Output file for the extracted translations',
242
+ demandOption: true
243
+ },
244
+ 'root': {
245
+ alias: 'r',
246
+ describe: 'The directory which contains the source code',
247
+ default: '.'
248
+ },
249
+ 'merge': {
250
+ alias: 'm',
251
+ describe: 'Whether to merge new with existing translation values',
252
+ boolean: true,
253
+ default: false
254
+ },
255
+ 'exclude': {
256
+ alias: 'e',
257
+ describe: 'Allows to exclude translation keys starting with this value'
258
+ },
259
+ 'files': {
260
+ alias: 'f',
261
+ describe: 'Glob pattern matching the files to extract from (starting from --root).',
262
+ array: true
263
+ },
264
+ 'logs': {
265
+ alias: 'l',
266
+ describe: 'File path to a log file'
267
+ }
268
+ },
269
+ handler: async options => {
270
+ await extract(options);
271
+ }
272
+ })
273
+ .command<{
227
274
  testInspect: boolean,
228
275
  testExtension: string[],
229
276
  testFile: string[],