提交 4b5a9c4b 编写于 作者: S Sandeep Somavarapu

change remote cli to manage only remtoe

上级 7a9e5651
......@@ -232,6 +232,10 @@ export class ExtensionManagementCLIService implements IExtensionManagementCLISer
} else {
output.log(localize('installing', "Installing extension '{0}' v{1}...", id, galleryExtension.version));
}
if (!this.canInstall(manifest!)) {
output.log(localize('cannot install', "Cannot install extension '{0}'.", id));
return null;
}
await this.extensionManagementService.installFromGallery(galleryExtension, installOptions);
output.log(localize('successInstall', "Extension '{0}' v{1} was successfully installed.", id, galleryExtension.version));
return manifest;
......@@ -245,6 +249,10 @@ export class ExtensionManagementCLIService implements IExtensionManagementCLISer
}
}
protected canInstall(manifest: IExtensionManifest): boolean {
return true;
}
private async validate(manifest: IExtensionManifest, force: boolean, output: CLIOutput): Promise<boolean> {
if (!manifest) {
throw new Error('Invalid vsix');
......
......@@ -6,9 +6,12 @@
import { isString } from 'vs/base/common/types';
import { URI, UriComponents } from 'vs/base/common/uri';
import { CommandsRegistry } from 'vs/platform/commands/common/commands';
import { IExtensionManagementCLIService } from 'vs/platform/extensionManagement/common/extensionManagement';
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
import { IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement';
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
import { IOpenerService } from 'vs/platform/opener/common/opener';
import { IExtensionManagementServerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement';
import { RemoteExtensionCLIManagementService } from 'vs/workbench/services/extensionManagement/common/extensionManagementService';
// this class contains the command that the CLI server is reying on
......@@ -28,7 +31,13 @@ interface ManageExtensionsArgs {
CommandsRegistry.registerCommand('_remoteCLI.manageExtensions', async function (accessor: ServicesAccessor, args: ManageExtensionsArgs) {
const cliService = accessor.get(IExtensionManagementCLIService);
const instantiationService = accessor.get(IInstantiationService);
const extensionManagementServerService = accessor.get(IExtensionManagementServerService);
if (!extensionManagementServerService.remoteExtensionManagementServer) {
return;
}
const cliService = instantiationService.createChild(new ServiceCollection([IExtensionManagementService, extensionManagementServerService.remoteExtensionManagementServer.extensionManagementService])).createInstance(RemoteExtensionCLIManagementService);
const lines: string[] = [];
const output = { log: lines.push.bind(lines), error: lines.push.bind(lines) };
......
......@@ -5,7 +5,7 @@
import { Event, EventMultiplexer } from 'vs/base/common/event';
import {
ILocalExtension, IGalleryExtension, InstallExtensionEvent, DidInstallExtensionEvent, IExtensionIdentifier, DidUninstallExtensionEvent, IReportedExtension, IGalleryMetadata, IExtensionGalleryService, INSTALL_ERROR_NOT_SUPPORTED, InstallOptions, UninstallOptions
ILocalExtension, IGalleryExtension, InstallExtensionEvent, DidInstallExtensionEvent, IExtensionIdentifier, DidUninstallExtensionEvent, IReportedExtension, IGalleryMetadata, IExtensionGalleryService, INSTALL_ERROR_NOT_SUPPORTED, InstallOptions, UninstallOptions, IExtensionManagementService
} from 'vs/platform/extensionManagement/common/extensionManagement';
import { IExtensionManagementServer, IExtensionManagementServerService, IWorkbenchExtensioManagementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement';
import { ExtensionType, isLanguagePackExtension, IExtensionManifest } from 'vs/platform/extensions/common/extensions';
......@@ -15,7 +15,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
import { CancellationToken } from 'vs/base/common/cancellation';
import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
import { localize } from 'vs/nls';
import { prefersExecuteOnUI, getExtensionKind } from 'vs/workbench/services/extensions/common/extensionsUtil';
import { prefersExecuteOnUI, getExtensionKind, canExecuteOnWorkspace } from 'vs/workbench/services/extensions/common/extensionsUtil';
import { IProductService } from 'vs/platform/product/common/productService';
import { Schemas } from 'vs/base/common/network';
import { IDownloadService } from 'vs/platform/download/common/download';
......@@ -24,6 +24,8 @@ import { IDialogService } from 'vs/platform/dialogs/common/dialogs';
import Severity from 'vs/base/common/severity';
import { canceled } from 'vs/base/common/errors';
import { IUserDataAutoSyncEnablementService, IUserDataSyncResourceEnablementService, SyncResource } from 'vs/platform/userDataSync/common/userDataSync';
import { ExtensionManagementCLIService } from 'vs/platform/extensionManagement/common/extensionManagementCLIService';
import { ILocalizationsService } from 'vs/platform/localizations/common/localizations';
export class ExtensionManagementService extends Disposable implements IWorkbenchExtensioManagementService {
......@@ -348,3 +350,20 @@ export class ExtensionManagementService extends Disposable implements IWorkbench
return this.extensionManagementServerService.getExtensionManagementServer(extension);
}
}
export class RemoteExtensionCLIManagementService extends ExtensionManagementCLIService {
constructor(
@IExtensionManagementService extensionManagementService: IExtensionManagementService,
@IProductService private readonly productService: IProductService,
@IConfigurationService private readonly configurationService: IConfigurationService,
@IExtensionGalleryService extensionGalleryService: IExtensionGalleryService,
@ILocalizationsService localizationsService: ILocalizationsService,
) {
super(extensionManagementService, extensionGalleryService, localizationsService);
}
canInstall(manifest: IExtensionManifest): boolean {
return canExecuteOnWorkspace(manifest, this.productService, this.configurationService);
}
}
......@@ -93,9 +93,8 @@ import 'vs/workbench/services/outline/browser/outlineService';
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
import { ExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionGalleryService';
import { ExtensionManagementCLIService } from 'vs/platform/extensionManagement/common/extensionManagementCLIService';
import { GlobalExtensionEnablementService } from 'vs/platform/extensionManagement/common/extensionEnablementService';
import { IExtensionGalleryService, IExtensionManagementCLIService, IGlobalExtensionEnablementService } from 'vs/platform/extensionManagement/common/extensionManagement';
import { IExtensionGalleryService, IGlobalExtensionEnablementService } from 'vs/platform/extensionManagement/common/extensionManagement';
import { ContextViewService } from 'vs/platform/contextview/browser/contextViewService';
import { IContextViewService } from 'vs/platform/contextview/browser/contextView';
import { IListService, ListService } from 'vs/platform/list/browser/listService';
......@@ -127,7 +126,6 @@ registerSingleton(IIgnoredExtensionsManagementService, IgnoredExtensionsManageme
registerSingleton(IGlobalExtensionEnablementService, GlobalExtensionEnablementService);
registerSingleton(IExtensionsStorageSyncService, ExtensionsStorageSyncService);
registerSingleton(IExtensionGalleryService, ExtensionGalleryService, true);
registerSingleton(IExtensionManagementCLIService, ExtensionManagementCLIService);
registerSingleton(IContextViewService, ContextViewService, true);
registerSingleton(IListService, ListService, true);
registerSingleton(IEditorWorkerService, EditorWorkerServiceImpl);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册