From 39f3ab5b534222463f8ac77491da4e202d06512b Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 7 Sep 2022 16:43:07 +0200 Subject: [PATCH] Fix #159447 (#160310) --- src/vs/code/node/cliProcessMain.ts | 22 ++++++++--------- .../common/extensionManagement.ts | 10 -------- ...LIService.ts => extensionManagementCLI.ts} | 24 +++++++++---------- .../server/node/remoteAgentEnvironmentImpl.ts | 9 +++---- .../node/remoteExtensionHostAgentCli.ts | 18 +++++++------- src/vs/server/node/serverServices.ts | 9 +++---- .../api/browser/mainThreadCLICommands.ts | 10 ++++---- 7 files changed, 43 insertions(+), 59 deletions(-) rename src/vs/platform/extensionManagement/common/{extensionManagementCLIService.ts => extensionManagementCLI.ts} (94%) diff --git a/src/vs/code/node/cliProcessMain.ts b/src/vs/code/node/cliProcessMain.ts index c1233e21e3a..83b93b7898d 100644 --- a/src/vs/code/node/cliProcessMain.ts +++ b/src/vs/code/node/cliProcessMain.ts @@ -23,8 +23,8 @@ import { NativeParsedArgs } from 'vs/platform/environment/common/argv'; import { INativeEnvironmentService } from 'vs/platform/environment/common/environment'; import { NativeEnvironmentService } from 'vs/platform/environment/node/environmentService'; import { ExtensionGalleryServiceWithNoStorageService } from 'vs/platform/extensionManagement/common/extensionGalleryService'; -import { IExtensionGalleryService, IExtensionManagementCLIService, InstallOptions } from 'vs/platform/extensionManagement/common/extensionManagement'; -import { ExtensionManagementCLIService } from 'vs/platform/extensionManagement/common/extensionManagementCLIService'; +import { IExtensionGalleryService, InstallOptions } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { ExtensionManagementCLI } from 'vs/platform/extensionManagement/common/extensionManagementCLI'; import { ExtensionsProfileScannerService, IExtensionsProfileScannerService } from 'vs/platform/extensionManagement/common/extensionsProfileScannerService'; import { IExtensionsScannerService } from 'vs/platform/extensionManagement/common/extensionsScannerService'; import { ExtensionManagementService, INativeServerExtensionManagementService } from 'vs/platform/extensionManagement/node/extensionManagementService'; @@ -85,7 +85,7 @@ class CliMain extends Disposable { const logService = accessor.get(ILogService); const fileService = accessor.get(IFileService); const environmentService = accessor.get(INativeEnvironmentService); - const extensionManagementCLIService = accessor.get(IExtensionManagementCLIService); + const userDataProfilesService = accessor.get(IUserDataProfilesService); // Log info logService.info('CLI main', this.argv); @@ -94,7 +94,7 @@ class CliMain extends Disposable { this.registerErrorHandler(logService); // Run based on argv - await this.doRun(environmentService, extensionManagementCLIService, fileService); + await this.doRun(environmentService, fileService, userDataProfilesService, instantiationService); // Flush the remaining data in AI adapter (with 1s timeout) await Promise.all(appenders.map(a => { @@ -180,7 +180,6 @@ class CliMain extends Disposable { services.set(IExtensionsScannerService, new SyncDescriptor(ExtensionsScannerService, undefined, true)); services.set(INativeServerExtensionManagementService, new SyncDescriptor(ExtensionManagementService, undefined, true)); services.set(IExtensionGalleryService, new SyncDescriptor(ExtensionGalleryServiceWithNoStorageService, undefined, true)); - services.set(IExtensionManagementCLIService, new SyncDescriptor(ExtensionManagementCLIService, undefined, true)); // Localizations services.set(ILanguagePackService, new SyncDescriptor(NativeLanguagePackService, undefined, false)); @@ -240,7 +239,8 @@ class CliMain extends Disposable { process.on('unhandledRejection', (reason: unknown) => onUnexpectedError(reason)); } - private async doRun(environmentService: INativeEnvironmentService, extensionManagementCLIService: IExtensionManagementCLIService, fileService: IFileService): Promise { + private async doRun(environmentService: INativeEnvironmentService, fileService: IFileService, userDataProfilesService: IUserDataProfilesService, instantiationService: IInstantiationService): Promise { + const profileLocation = environmentService.args.profile ? userDataProfilesService.profiles.find(p => p.name === environmentService.args.profile)?.extensionsResource : userDataProfilesService.defaultProfile.extensionsResource; // Install Source if (this.argv['install-source']) { @@ -249,23 +249,23 @@ class CliMain extends Disposable { // List Extensions if (this.argv['list-extensions']) { - return extensionManagementCLIService.listExtensions(!!this.argv['show-versions'], this.argv['category']); + return instantiationService.createInstance(ExtensionManagementCLI).listExtensions(!!this.argv['show-versions'], this.argv['category'], profileLocation); } // Install Extension else if (this.argv['install-extension'] || this.argv['install-builtin-extension']) { - const installOptions: InstallOptions = { isMachineScoped: !!this.argv['do-not-sync'], installPreReleaseVersion: !!this.argv['pre-release'] }; - return extensionManagementCLIService.installExtensions(this.asExtensionIdOrVSIX(this.argv['install-extension'] || []), this.argv['install-builtin-extension'] || [], installOptions, !!this.argv['force']); + const installOptions: InstallOptions = { isMachineScoped: !!this.argv['do-not-sync'], installPreReleaseVersion: !!this.argv['pre-release'], profileLocation }; + return instantiationService.createInstance(ExtensionManagementCLI).installExtensions(this.asExtensionIdOrVSIX(this.argv['install-extension'] || []), this.argv['install-builtin-extension'] || [], installOptions, !!this.argv['force']); } // Uninstall Extension else if (this.argv['uninstall-extension']) { - return extensionManagementCLIService.uninstallExtensions(this.asExtensionIdOrVSIX(this.argv['uninstall-extension']), !!this.argv['force']); + return instantiationService.createInstance(ExtensionManagementCLI).uninstallExtensions(this.asExtensionIdOrVSIX(this.argv['uninstall-extension']), !!this.argv['force'], profileLocation); } // Locate Extension else if (this.argv['locate-extension']) { - return extensionManagementCLIService.locateExtension(this.argv['locate-extension']); + return instantiationService.createInstance(ExtensionManagementCLI).locateExtension(this.argv['locate-extension']); } // Telemetry diff --git a/src/vs/platform/extensionManagement/common/extensionManagement.ts b/src/vs/platform/extensionManagement/common/extensionManagement.ts index 4d61d8d2fa0..3b4958cba2b 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagement.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagement.ts @@ -505,13 +505,3 @@ export interface CLIOutput { log(s: string): void; error(s: string): void; } - -export const IExtensionManagementCLIService = createDecorator('IExtensionManagementCLIService'); -export interface IExtensionManagementCLIService { - readonly _serviceBrand: undefined; - - listExtensions(showVersions: boolean, category?: string, output?: CLIOutput): Promise; - installExtensions(extensions: (string | URI)[], builtinExtensionIds: string[], installOptions: InstallOptions, force: boolean, output?: CLIOutput): Promise; - uninstallExtensions(extensions: (string | URI)[], force: boolean, output?: CLIOutput): Promise; - locateExtension(extensions: string[], output?: CLIOutput): Promise; -} diff --git a/src/vs/platform/extensionManagement/common/extensionManagementCLIService.ts b/src/vs/platform/extensionManagement/common/extensionManagementCLI.ts similarity index 94% rename from src/vs/platform/extensionManagement/common/extensionManagementCLIService.ts rename to src/vs/platform/extensionManagement/common/extensionManagementCLI.ts index 65b2cea1af6..da71203302f 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagementCLIService.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagementCLI.ts @@ -10,7 +10,7 @@ import { basename } from 'vs/base/common/resources'; import { gt } from 'vs/base/common/semver/semver'; import { URI } from 'vs/base/common/uri'; import { localize } from 'vs/nls'; -import { CLIOutput, IExtensionGalleryService, IExtensionManagementCLIService, IExtensionManagementService, IGalleryExtension, ILocalExtension, InstallOptions } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { CLIOutput, IExtensionGalleryService, IExtensionManagementService, IGalleryExtension, ILocalExtension, InstallOptions } from 'vs/platform/extensionManagement/common/extensionManagement'; import { areSameExtensions, getGalleryExtensionId, getIdAndVersion } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { ExtensionType, EXTENSION_CATEGORIES, IExtensionManifest } from 'vs/platform/extensions/common/extensions'; @@ -30,9 +30,7 @@ function getId(manifest: IExtensionManifest, withVersion?: boolean): string { type InstallExtensionInfo = { id: string; version?: string; installOptions: InstallOptions }; -export class ExtensionManagementCLIService implements IExtensionManagementCLIService { - - _serviceBrand: any; +export class ExtensionManagementCLI { constructor( @IExtensionManagementService private readonly extensionManagementService: IExtensionManagementService, @@ -43,8 +41,8 @@ export class ExtensionManagementCLIService implements IExtensionManagementCLISer return undefined; } - public async listExtensions(showVersions: boolean, category?: string, output: CLIOutput = console): Promise { - let extensions = await this.extensionManagementService.getInstalled(ExtensionType.User); + public async listExtensions(showVersions: boolean, category?: string, profileLocation?: URI, output: CLIOutput = console): Promise { + let extensions = await this.extensionManagementService.getInstalled(ExtensionType.User, profileLocation); const categories = EXTENSION_CATEGORIES.map(c => c.toLowerCase()); if (category && category !== '') { if (categories.indexOf(category.toLowerCase()) < 0) { @@ -86,7 +84,7 @@ export class ExtensionManagementCLIService implements IExtensionManagementCLISer output.log(this.location ? localize('installingExtensionsOnLocation', "Installing extensions on {0}...", this.location) : localize('installingExtensions', "Installing extensions...")); } - const installed = await this.extensionManagementService.getInstalled(ExtensionType.User); + const installed = await this.extensionManagementService.getInstalled(ExtensionType.User, installOptions.profileLocation); const checkIfNotInstalled = (id: string, version?: string): boolean => { const installedExtension = installed.find(i => areSameExtensions(i.identifier, { id })); if (installedExtension) { @@ -173,7 +171,7 @@ export class ExtensionManagementCLIService implements IExtensionManagementCLISer throw new Error('Invalid vsix'); } - const valid = await this.validateVSIX(manifest, force, output); + const valid = await this.validateVSIX(manifest, force, installOptions.profileLocation, output); if (valid) { try { await this.extensionManagementService.install(vsix, installOptions); @@ -240,9 +238,9 @@ export class ExtensionManagementCLIService implements IExtensionManagementCLISer return true; } - private async validateVSIX(manifest: IExtensionManifest, force: boolean, output: CLIOutput): Promise { + private async validateVSIX(manifest: IExtensionManifest, force: boolean, profileLocation: URI | undefined, output: CLIOutput): Promise { const extensionIdentifier = { id: getGalleryExtensionId(manifest.publisher, manifest.name) }; - const installedExtensions = await this.extensionManagementService.getInstalled(ExtensionType.User); + const installedExtensions = await this.extensionManagementService.getInstalled(ExtensionType.User, profileLocation); const newer = installedExtensions.find(local => areSameExtensions(extensionIdentifier, local.identifier) && gt(local.manifest.version, manifest.version)); if (newer && !force) { @@ -253,7 +251,7 @@ export class ExtensionManagementCLIService implements IExtensionManagementCLISer return this.validateExtensionKind(manifest, output); } - public async uninstallExtensions(extensions: (string | URI)[], force: boolean, output: CLIOutput = console): Promise { + public async uninstallExtensions(extensions: (string | URI)[], force: boolean, profileLocation?: URI, output: CLIOutput = console): Promise { const getExtensionId = async (extensionDescription: string | URI): Promise => { if (extensionDescription instanceof URI) { const manifest = await this.extensionManagementService.getManifest(extensionDescription); @@ -265,7 +263,7 @@ export class ExtensionManagementCLIService implements IExtensionManagementCLISer const uninstalledExtensions: ILocalExtension[] = []; for (const extension of extensions) { const id = await getExtensionId(extension); - const installed = await this.extensionManagementService.getInstalled(); + const installed = await this.extensionManagementService.getInstalled(undefined, profileLocation); const extensionsToUninstall = installed.filter(e => areSameExtensions(e.identifier, { id })); if (!extensionsToUninstall.length) { throw new Error(`${this.notInstalled(id)}\n${useId}`); @@ -280,7 +278,7 @@ export class ExtensionManagementCLIService implements IExtensionManagementCLISer } output.log(localize('uninstalling', "Uninstalling {0}...", id)); for (const extensionToUninstall of extensionsToUninstall) { - await this.extensionManagementService.uninstall(extensionToUninstall); + await this.extensionManagementService.uninstall(extensionToUninstall, { profileLocation }); uninstalledExtensions.push(extensionToUninstall); } diff --git a/src/vs/server/node/remoteAgentEnvironmentImpl.ts b/src/vs/server/node/remoteAgentEnvironmentImpl.ts index 8db0397aab1..7f581f36ea5 100644 --- a/src/vs/server/node/remoteAgentEnvironmentImpl.ts +++ b/src/vs/server/node/remoteAgentEnvironmentImpl.ts @@ -21,13 +21,14 @@ import { getMachineInfo, collectWorkspaceStats } from 'vs/platform/diagnostics/n import { IDiagnosticInfoOptions, IDiagnosticInfo } from 'vs/platform/diagnostics/common/diagnostics'; import { basename, isAbsolute, join, resolve } from 'vs/base/common/path'; import { ProcessItem } from 'vs/base/common/processes'; -import { IExtensionManagementCLIService, InstallOptions } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { InstallOptions } from 'vs/platform/extensionManagement/common/extensionManagement'; import { cwd } from 'vs/base/common/process'; import { ServerConnectionToken, ServerConnectionTokenType } from 'vs/server/node/serverConnectionToken'; import { IExtensionHostStatusService } from 'vs/server/node/extensionHostStatusService'; import { IExtensionsScannerService, toExtensionDescription } from 'vs/platform/extensionManagement/common/extensionsScannerService'; import { dedupExtensions } from 'vs/workbench/services/extensions/common/extensionsUtil'; import { IUserDataProfilesService } from 'vs/platform/userDataProfile/common/userDataProfile'; +import { ExtensionManagementCLI } from 'vs/platform/extensionManagement/common/extensionManagementCLI'; export class RemoteAgentEnvironmentChannel implements IServerChannel { @@ -39,14 +40,14 @@ export class RemoteAgentEnvironmentChannel implements IServerChannel { private readonly _connectionToken: ServerConnectionToken, private readonly _environmentService: IServerEnvironmentService, private readonly _userDataProfilesService: IUserDataProfilesService, - extensionManagementCLIService: IExtensionManagementCLIService, + extensionManagementCLI: ExtensionManagementCLI, private readonly _logService: ILogService, private readonly _extensionHostStatusService: IExtensionHostStatusService, private readonly _extensionsScannerService: IExtensionsScannerService, ) { if (_environmentService.args['install-builtin-extension']) { const installOptions: InstallOptions = { isMachineScoped: !!_environmentService.args['do-not-sync'], installPreReleaseVersion: !!_environmentService.args['pre-release'] }; - this.whenExtensionsReady = extensionManagementCLIService.installExtensions([], _environmentService.args['install-builtin-extension'], installOptions, !!_environmentService.args['force']) + this.whenExtensionsReady = extensionManagementCLI.installExtensions([], _environmentService.args['install-builtin-extension'], installOptions, !!_environmentService.args['force']) .then(null, error => { _logService.error(error); }); @@ -58,7 +59,7 @@ export class RemoteAgentEnvironmentChannel implements IServerChannel { if (extensionsToInstall) { const idsOrVSIX = extensionsToInstall.map(input => /\.vsix$/i.test(input) ? URI.file(isAbsolute(input) ? input : join(cwd(), input)) : input); this.whenExtensionsReady - .then(() => extensionManagementCLIService.installExtensions(idsOrVSIX, [], { isMachineScoped: !!_environmentService.args['do-not-sync'], installPreReleaseVersion: !!_environmentService.args['pre-release'] }, !!_environmentService.args['force'])) + .then(() => extensionManagementCLI.installExtensions(idsOrVSIX, [], { isMachineScoped: !!_environmentService.args['do-not-sync'], installPreReleaseVersion: !!_environmentService.args['pre-release'] }, !!_environmentService.args['force'])) .then(null, error => { _logService.error(error); }); diff --git a/src/vs/server/node/remoteExtensionHostAgentCli.ts b/src/vs/server/node/remoteExtensionHostAgentCli.ts index 52647624f79..086f7dec035 100644 --- a/src/vs/server/node/remoteExtensionHostAgentCli.ts +++ b/src/vs/server/node/remoteExtensionHostAgentCli.ts @@ -12,7 +12,7 @@ import { IRequestService } from 'vs/platform/request/common/request'; import { RequestService } from 'vs/platform/request/node/requestService'; import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; -import { IExtensionGalleryService, IExtensionManagementCLIService, InstallOptions } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { IExtensionGalleryService, InstallOptions } from 'vs/platform/extensionManagement/common/extensionManagement'; import { ExtensionGalleryServiceWithNoStorageService } from 'vs/platform/extensionManagement/common/extensionGalleryService'; import { ExtensionManagementService, INativeServerExtensionManagementService } from 'vs/platform/extensionManagement/node/extensionManagementService'; import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService'; @@ -27,7 +27,7 @@ import { IProductService } from 'vs/platform/product/common/productService'; import { SpdLogLogger } from 'vs/platform/log/node/spdlogLog'; import { RemoteExtensionLogFileName } from 'vs/workbench/services/remote/common/remoteAgentService'; import { IServerEnvironmentService, ServerEnvironmentService, ServerParsedArgs } from 'vs/server/node/serverEnvironmentService'; -import { ExtensionManagementCLIService } from 'vs/platform/extensionManagement/common/extensionManagementCLIService'; +import { ExtensionManagementCLI } from 'vs/platform/extensionManagement/common/extensionManagementCLI'; import { ILanguagePackService } from 'vs/platform/languagePacks/common/languagePacks'; import { NativeLanguagePackService } from 'vs/platform/languagePacks/node/languagePacks'; import { getErrorMessage } from 'vs/base/common/errors'; @@ -63,9 +63,8 @@ class CliMain extends Disposable { const instantiationService = await this.initServices(); await instantiationService.invokeFunction(async accessor => { const logService = accessor.get(ILogService); - const extensionManagementCLIService = accessor.get(IExtensionManagementCLIService); try { - await this.doRun(extensionManagementCLIService); + await this.doRun(instantiationService.createInstance(ExtensionManagementCLI)); } catch (error) { logService.error(error); console.error(getErrorMessage(error)); @@ -112,33 +111,32 @@ class CliMain extends Disposable { services.set(IExtensionsProfileScannerService, new SyncDescriptor(ExtensionsProfileScannerService)); services.set(IExtensionsScannerService, new SyncDescriptor(ExtensionsScannerService)); services.set(INativeServerExtensionManagementService, new SyncDescriptor(ExtensionManagementService)); - services.set(IExtensionManagementCLIService, new SyncDescriptor(ExtensionManagementCLIService)); services.set(ILanguagePackService, new SyncDescriptor(NativeLanguagePackService)); return new InstantiationService(services); } - private async doRun(extensionManagementCLIService: IExtensionManagementCLIService): Promise { + private async doRun(extensionManagementCLI: ExtensionManagementCLI): Promise { // List Extensions if (this.args['list-extensions']) { - return extensionManagementCLIService.listExtensions(!!this.args['show-versions'], this.args['category']); + return extensionManagementCLI.listExtensions(!!this.args['show-versions'], this.args['category']); } // Install Extension else if (this.args['install-extension'] || this.args['install-builtin-extension']) { const installOptions: InstallOptions = { isMachineScoped: !!this.args['do-not-sync'], installPreReleaseVersion: !!this.args['pre-release'] }; - return extensionManagementCLIService.installExtensions(this.asExtensionIdOrVSIX(this.args['install-extension'] || []), this.args['install-builtin-extension'] || [], installOptions, !!this.args['force']); + return extensionManagementCLI.installExtensions(this.asExtensionIdOrVSIX(this.args['install-extension'] || []), this.args['install-builtin-extension'] || [], installOptions, !!this.args['force']); } // Uninstall Extension else if (this.args['uninstall-extension']) { - return extensionManagementCLIService.uninstallExtensions(this.asExtensionIdOrVSIX(this.args['uninstall-extension']), !!this.args['force']); + return extensionManagementCLI.uninstallExtensions(this.asExtensionIdOrVSIX(this.args['uninstall-extension']), !!this.args['force']); } // Locate Extension else if (this.args['locate-extension']) { - return extensionManagementCLIService.locateExtension(this.args['locate-extension']); + return extensionManagementCLI.locateExtension(this.args['locate-extension']); } } diff --git a/src/vs/server/node/serverServices.ts b/src/vs/server/node/serverServices.ts index bc2d71f8f03..0dc354e378b 100644 --- a/src/vs/server/node/serverServices.ts +++ b/src/vs/server/node/serverServices.ts @@ -24,8 +24,8 @@ import { IEncryptionMainService } from 'vs/platform/encryption/common/encryption import { EncryptionMainService } from 'vs/platform/encryption/node/encryptionMainService'; import { IEnvironmentService, INativeEnvironmentService } from 'vs/platform/environment/common/environment'; import { ExtensionGalleryServiceWithNoStorageService } from 'vs/platform/extensionManagement/common/extensionGalleryService'; -import { IExtensionGalleryService, IExtensionManagementCLIService } from 'vs/platform/extensionManagement/common/extensionManagement'; -import { ExtensionManagementCLIService } from 'vs/platform/extensionManagement/common/extensionManagementCLIService'; +import { IExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { ExtensionManagementCLI } from 'vs/platform/extensionManagement/common/extensionManagementCLI'; import { ExtensionManagementChannel } from 'vs/platform/extensionManagement/common/extensionManagementIpc'; import { ExtensionManagementService, INativeServerExtensionManagementService } from 'vs/platform/extensionManagement/node/extensionManagementService'; import { IFileService } from 'vs/platform/files/common/files'; @@ -172,9 +172,6 @@ export async function setupServerServices(connectionToken: ServerConnectionToken const instantiationService: IInstantiationService = new InstantiationService(services); services.set(ILanguagePackService, instantiationService.createInstance(NativeLanguagePackService)); - const extensionManagementCLIService = instantiationService.createInstance(ExtensionManagementCLIService); - services.set(IExtensionManagementCLIService, extensionManagementCLIService); - const ptyService = instantiationService.createInstance( PtyHostService, { @@ -192,7 +189,7 @@ export async function setupServerServices(connectionToken: ServerConnectionToken instantiationService.invokeFunction(accessor => { const extensionManagementService = accessor.get(INativeServerExtensionManagementService); const extensionsScannerService = accessor.get(IExtensionsScannerService); - const remoteExtensionEnvironmentChannel = new RemoteAgentEnvironmentChannel(connectionToken, environmentService, userDataProfilesService, extensionManagementCLIService, logService, extensionHostStatusService, extensionsScannerService); + const remoteExtensionEnvironmentChannel = new RemoteAgentEnvironmentChannel(connectionToken, environmentService, userDataProfilesService, instantiationService.createInstance(ExtensionManagementCLI), logService, extensionHostStatusService, extensionsScannerService); socketServer.registerChannel('remoteextensionsenvironment', remoteExtensionEnvironmentChannel); const telemetryChannel = new ServerTelemetryChannel(accessor.get(IServerTelemetryService), oneDsAppender); diff --git a/src/vs/workbench/api/browser/mainThreadCLICommands.ts b/src/vs/workbench/api/browser/mainThreadCLICommands.ts index 5264d5f3f15..180f9863fab 100644 --- a/src/vs/workbench/api/browser/mainThreadCLICommands.ts +++ b/src/vs/workbench/api/browser/mainThreadCLICommands.ts @@ -11,7 +11,7 @@ import { localize } from 'vs/nls'; import { CommandsRegistry, ICommandService } from 'vs/platform/commands/common/commands'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { CLIOutput, IExtensionGalleryService, IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement'; -import { ExtensionManagementCLIService } from 'vs/platform/extensionManagement/common/extensionManagementCLIService'; +import { ExtensionManagementCLI } from 'vs/platform/extensionManagement/common/extensionManagementCLI'; import { getExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { IExtensionManifest } from 'vs/platform/extensions/common/extensions'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; @@ -61,13 +61,13 @@ CommandsRegistry.registerCommand('_remoteCLI.manageExtensions', async function ( return; } - const cliService = instantiationService.createChild(new ServiceCollection([IExtensionManagementService, remoteExtensionManagementService])).createInstance(RemoteExtensionCLIManagementService); + const cliService = instantiationService.createChild(new ServiceCollection([IExtensionManagementService, remoteExtensionManagementService])).createInstance(RemoteExtensionManagementCLI); const lines: string[] = []; const output = { log: lines.push.bind(lines), error: lines.push.bind(lines) }; if (args.list) { - await cliService.listExtensions(!!args.list.showVersions, args.list.category, output); + await cliService.listExtensions(!!args.list.showVersions, args.list.category, undefined, output); } else { const revive = (inputs: (string | UriComponents)[]) => inputs.map(input => isString(input) ? input : URI.revive(input)); if (Array.isArray(args.install) && args.install.length) { @@ -79,7 +79,7 @@ CommandsRegistry.registerCommand('_remoteCLI.manageExtensions', async function ( } if (Array.isArray(args.uninstall) && args.uninstall.length) { try { - await cliService.uninstallExtensions(revive(args.uninstall), !!args.force, output); + await cliService.uninstallExtensions(revive(args.uninstall), !!args.force, undefined, output); } catch (e) { lines.push(e.message); } @@ -88,7 +88,7 @@ CommandsRegistry.registerCommand('_remoteCLI.manageExtensions', async function ( return lines.join('\n'); }); -class RemoteExtensionCLIManagementService extends ExtensionManagementCLIService { +class RemoteExtensionManagementCLI extends ExtensionManagementCLI { private _location: string | undefined;