Skip to content

Commit 932aaad

Browse files
authored
Merge pull request microsoft#100755 from microsoft/sandy081/serverless/inlineBuiltinExtensions
Scan builtin extensions task
2 parents 4f76209 + 7bfb55e commit 932aaad

2 files changed

Lines changed: 58 additions & 2 deletions

File tree

build/lib/extensions.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Licensed under the MIT License. See License.txt in the project root for license information.
55
*--------------------------------------------------------------------------------------------*/
66
Object.defineProperty(exports, "__esModule", { value: true });
7-
exports.packageMarketplaceWebExtensionsStream = exports.packageMarketplaceExtensionsStream = exports.packageLocalWebExtensionsStream = exports.packageLocalExtensionsStream = exports.fromMarketplace = void 0;
7+
exports.scanBuiltinExtensions = exports.packageMarketplaceWebExtensionsStream = exports.packageMarketplaceExtensionsStream = exports.packageLocalWebExtensionsStream = exports.packageLocalExtensionsStream = exports.fromMarketplace = void 0;
88
const es = require("event-stream");
99
const fs = require("fs");
1010
const glob = require("glob");
@@ -261,3 +261,27 @@ function packageMarketplaceWebExtensionsStream(builtInExtensions) {
261261
return es.merge(extensions);
262262
}
263263
exports.packageMarketplaceWebExtensionsStream = packageMarketplaceWebExtensionsStream;
264+
function scanBuiltinExtensions(extensionsRoot, forWeb) {
265+
const scannedExtensions = [];
266+
const extensionsFolders = fs.readdirSync(extensionsRoot);
267+
for (const extensionFolder of extensionsFolders) {
268+
const packageJSON = JSON.parse(fs.readFileSync(path.join(extensionsRoot, extensionFolder, 'package.json')).toString('utf8'));
269+
const extensionKind = packageJSON['extensionKind'] || [];
270+
if (forWeb && extensionKind.indexOf('web') === -1) {
271+
continue;
272+
}
273+
const children = fs.readdirSync(path.join(extensionsRoot, extensionFolder));
274+
const packageNLS = children.filter(child => child === 'package.nls.json')[0];
275+
const readme = children.filter(child => /^readme(\.txt|\.md|)$/i.test(child))[0];
276+
const changelog = children.filter(child => /^changelog(\.txt|\.md|)$/i.test(child))[0];
277+
scannedExtensions.push({
278+
extensionPath: extensionFolder,
279+
packageJSON: packageJSON,
280+
packagsNLSPath: packageNLS ? path.join(extensionFolder, packageNLS) : undefined,
281+
readmePath: readme ? path.join(extensionFolder, readme) : undefined,
282+
changelogPath: changelog ? path.join(extensionFolder, changelog) : undefined,
283+
});
284+
}
285+
return scannedExtensions;
286+
}
287+
exports.scanBuiltinExtensions = scanBuiltinExtensions;

build/lib/extensions.ts

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ function fromLocal(extensionPath: string, forWeb: boolean): Stream {
7878
});
7979
}
8080

81-
return minimizeLanguageJSON(input)
81+
return minimizeLanguageJSON(input);
8282
}
8383

8484

@@ -307,3 +307,35 @@ export function packageMarketplaceWebExtensionsStream(builtInExtensions: IBuiltI
307307
});
308308
return es.merge(extensions);
309309
}
310+
311+
export interface IScannedBuiltinExtension {
312+
extensionPath: string,
313+
packageJSON: any,
314+
packagsNLSPath?: string,
315+
readmePath?: string,
316+
changelogPath?: string,
317+
}
318+
319+
export function scanBuiltinExtensions(extensionsRoot: string, forWeb: boolean): IScannedBuiltinExtension[] {
320+
const scannedExtensions: IScannedBuiltinExtension[] = [];
321+
const extensionsFolders = fs.readdirSync(extensionsRoot);
322+
for (const extensionFolder of extensionsFolders) {
323+
const packageJSON = JSON.parse(fs.readFileSync(path.join(extensionsRoot, extensionFolder, 'package.json')).toString('utf8'));
324+
const extensionKind: string[] = packageJSON['extensionKind'] || [];
325+
if (forWeb && extensionKind.indexOf('web') === -1) {
326+
continue;
327+
}
328+
const children = fs.readdirSync(path.join(extensionsRoot, extensionFolder));
329+
const packageNLS = children.filter(child => child === 'package.nls.json')[0];
330+
const readme = children.filter(child => /^readme(\.txt|\.md|)$/i.test(child))[0];
331+
const changelog = children.filter(child => /^changelog(\.txt|\.md|)$/i.test(child))[0];
332+
scannedExtensions.push({
333+
extensionPath: extensionFolder,
334+
packageJSON: packageJSON,
335+
packagsNLSPath: packageNLS ? path.join(extensionFolder, packageNLS) : undefined,
336+
readmePath: readme ? path.join(extensionFolder, readme) : undefined,
337+
changelogPath: changelog ? path.join(extensionFolder, changelog) : undefined,
338+
});
339+
}
340+
return scannedExtensions;
341+
}

0 commit comments

Comments
 (0)