mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-24 12:19:20 +00:00
build: cache built-in extensions to avoid rate limiting (#156918)
This commit is contained in:
@@ -68,10 +68,26 @@ function isUpToDate(extension: IExtensionDefinition): boolean {
|
||||
}
|
||||
}
|
||||
|
||||
function getExtensionDownloadStream(extension: IExtensionDefinition) {
|
||||
const galleryServiceUrl = productjson.extensionsGallery?.serviceUrl;
|
||||
return (galleryServiceUrl ? ext.fromMarketplace(galleryServiceUrl, extension) : ext.fromGithub(extension))
|
||||
.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
|
||||
}
|
||||
|
||||
export function getExtensionStream(extension: IExtensionDefinition) {
|
||||
// if the extension exists on disk, use those files instead of downloading anew
|
||||
if (isUpToDate(extension)) {
|
||||
log('[extensions]', `${extension.name}@${extension.version} up to date`, ansiColors.green('✔︎'));
|
||||
return vfs.src(['**'], { cwd: getExtensionPath(extension), dot: true })
|
||||
.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
|
||||
}
|
||||
|
||||
return getExtensionDownloadStream(extension);
|
||||
}
|
||||
|
||||
function syncMarketplaceExtension(extension: IExtensionDefinition): Stream {
|
||||
const galleryServiceUrl = productjson.extensionsGallery?.serviceUrl;
|
||||
const source = ansiColors.blue(galleryServiceUrl ? '[marketplace]' : '[github]');
|
||||
|
||||
if (isUpToDate(extension)) {
|
||||
log(source, `${extension.name}@${extension.version}`, ansiColors.green('✔︎'));
|
||||
return es.readArray([]);
|
||||
@@ -79,8 +95,7 @@ function syncMarketplaceExtension(extension: IExtensionDefinition): Stream {
|
||||
|
||||
rimraf.sync(getExtensionPath(extension));
|
||||
|
||||
return (galleryServiceUrl ? ext.fromMarketplace(galleryServiceUrl, extension) : ext.fromGithub(extension))
|
||||
.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`))
|
||||
return getExtensionDownloadStream(extension)
|
||||
.pipe(vfs.dest('.build/builtInExtensions'))
|
||||
.on('end', () => log(source, extension.name, ansiColors.green('✔︎')));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user