Skip to content

Commit f1a2ce6

Browse files
authored
remove rarely used reinstall extension command (microsoft#236278)
1 parent 58399f1 commit f1a2ce6

File tree

11 files changed

+1
-134
lines changed

11 files changed

+1
-134
lines changed

src/vs/platform/extensionManagement/common/abstractExtensionManagementService.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ export abstract class CommontExtensionManagementService extends Disposable imple
111111
abstract getInstalled(type?: ExtensionType, profileLocation?: URI, productVersion?: IProductVersion): Promise<ILocalExtension[]>;
112112
abstract copyExtensions(fromProfileLocation: URI, toProfileLocation: URI): Promise<void>;
113113
abstract download(extension: IGalleryExtension, operation: InstallOperation, donotVerifySignature: boolean): Promise<URI>;
114-
abstract reinstallFromGallery(extension: ILocalExtension): Promise<ILocalExtension>;
115114
abstract cleanUp(): Promise<void>;
116115
abstract updateMetadata(local: ILocalExtension, metadata: Partial<Metadata>, profileLocation: URI): Promise<ILocalExtension>;
117116
}

src/vs/platform/extensionManagement/common/extensionManagement.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,6 @@ export interface IExtensionManagementService {
572572
uninstall(extension: ILocalExtension, options?: UninstallOptions): Promise<void>;
573573
uninstallExtensions(extensions: UninstallExtensionInfo[]): Promise<void>;
574574
toggleAppliationScope(extension: ILocalExtension, fromProfileLocation: URI): Promise<ILocalExtension>;
575-
reinstallFromGallery(extension: ILocalExtension): Promise<ILocalExtension>;
576575
getInstalled(type?: ExtensionType, profileLocation?: URI, productVersion?: IProductVersion): Promise<ILocalExtension[]>;
577576
getExtensionsControlManifest(): Promise<IExtensionsControlManifest>;
578577
copyExtensions(fromProfileLocation: URI, toProfileLocation: URI): Promise<void>;

src/vs/platform/extensionManagement/common/extensionManagementIpc.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,6 @@ export class ExtensionManagementChannel implements IServerChannel {
144144
const arg: UninstallExtensionInfo[] = args[0];
145145
return this.service.uninstallExtensions(arg.map(({ extension, options }) => ({ extension: transformIncomingExtension(extension, uriTransformer), options: transformIncomingOptions(options, uriTransformer) })));
146146
}
147-
case 'reinstallFromGallery': {
148-
return this.service.reinstallFromGallery(transformIncomingExtension(args[0], uriTransformer));
149-
}
150147
case 'getInstalled': {
151148
const extensions = await this.service.getInstalled(args[0], transformIncomingURI(args[1], uriTransformer), args[2]);
152149
return extensions.map(e => transformOutgoingExtension(e, uriTransformer));
@@ -299,10 +296,6 @@ export class ExtensionManagementChannelClient extends CommontExtensionManagement
299296

300297
}
301298

302-
reinstallFromGallery(extension: ILocalExtension): Promise<ILocalExtension> {
303-
return Promise.resolve(this.channel.call<ILocalExtension>('reinstallFromGallery', [extension])).then(local => transformIncomingExtension(local, null));
304-
}
305-
306299
getInstalled(type: ExtensionType | null = null, extensionsProfileResource?: URI, productVersion?: IProductVersion): Promise<ILocalExtension[]> {
307300
return Promise.resolve(this.channel.call<ILocalExtension[]>('getInstalled', [type, extensionsProfileResource, productVersion]))
308301
.then(extensions => extensions.map(extension => transformIncomingExtension(extension, null)));

src/vs/platform/extensionManagement/node/extensionManagementService.ts

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import { Promises, Queue } from '../../../base/common/async.js';
88
import { VSBuffer } from '../../../base/common/buffer.js';
99
import { CancellationToken } from '../../../base/common/cancellation.js';
1010
import { IStringDictionary } from '../../../base/common/collections.js';
11-
import { toErrorMessage } from '../../../base/common/errorMessage.js';
1211
import { CancellationError, getErrorMessage } from '../../../base/common/errors.js';
1312
import { Emitter } from '../../../base/common/event.js';
1413
import { hash } from '../../../base/common/hash.js';
@@ -215,27 +214,6 @@ export class ExtensionManagementService extends AbstractExtensionManagementServi
215214
return local;
216215
}
217216

218-
async reinstallFromGallery(extension: ILocalExtension): Promise<ILocalExtension> {
219-
this.logService.trace('ExtensionManagementService#reinstallFromGallery', extension.identifier.id);
220-
if (!this.galleryService.isEnabled()) {
221-
throw new Error(nls.localize('MarketPlaceDisabled', "Marketplace is not enabled"));
222-
}
223-
224-
const targetPlatform = await this.getTargetPlatform();
225-
const [galleryExtension] = await this.galleryService.getExtensions([{ ...extension.identifier, preRelease: extension.preRelease }], { targetPlatform, compatible: true }, CancellationToken.None);
226-
if (!galleryExtension) {
227-
throw new Error(nls.localize('Not a Marketplace extension', "Only Marketplace Extensions can be reinstalled"));
228-
}
229-
230-
await this.extensionsScanner.setUninstalled(extension);
231-
try {
232-
await this.extensionsScanner.removeUninstalledExtension(extension);
233-
} catch (e) {
234-
throw new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)));
235-
}
236-
return this.installFromGallery(galleryExtension);
237-
}
238-
239217
protected copyExtension(extension: ILocalExtension, fromProfileLocation: URI, toProfileLocation: URI, metadata: Partial<Metadata>): Promise<ILocalExtension> {
240218
return this.extensionsScanner.copyExtension(extension, fromProfileLocation, toProfileLocation, metadata);
241219
}

src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { IExtensionIgnoredRecommendationsService, IExtensionRecommendationsServi
1414
import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWorkbenchContribution } from '../../../common/contributions.js';
1515
import { SyncDescriptor } from '../../../../platform/instantiation/common/descriptors.js';
1616
import { VIEWLET_ID, IExtensionsWorkbenchService, IExtensionsViewPaneContainer, TOGGLE_IGNORE_EXTENSION_ACTION_ID, INSTALL_EXTENSION_FROM_VSIX_COMMAND_ID, WORKSPACE_RECOMMENDATIONS_VIEW_ID, IWorkspaceRecommendedExtensionsView, AutoUpdateConfigurationKey, HasOutdatedExtensionsContext, SELECT_INSTALL_VSIX_EXTENSION_COMMAND_ID, LIST_WORKSPACE_UNSUPPORTED_EXTENSIONS_COMMAND_ID, ExtensionEditorTab, THEME_ACTIONS_GROUP, INSTALL_ACTIONS_GROUP, OUTDATED_EXTENSIONS_VIEW_ID, CONTEXT_HAS_GALLERY, extensionsSearchActionsMenu, UPDATE_ACTIONS_GROUP, IExtensionArg, ExtensionRuntimeActionType, EXTENSIONS_CATEGORY } from '../common/extensions.js';
17-
import { ReinstallAction, InstallSpecificVersionOfExtensionAction, ConfigureWorkspaceRecommendedExtensionsAction, ConfigureWorkspaceFolderRecommendedExtensionsAction, SetColorThemeAction, SetFileIconThemeAction, SetProductIconThemeAction, ClearLanguageAction, ToggleAutoUpdateForExtensionAction, ToggleAutoUpdatesForPublisherAction, TogglePreReleaseExtensionAction, InstallAnotherVersionAction, InstallAction } from './extensionsActions.js';
17+
import { InstallSpecificVersionOfExtensionAction, ConfigureWorkspaceRecommendedExtensionsAction, ConfigureWorkspaceFolderRecommendedExtensionsAction, SetColorThemeAction, SetFileIconThemeAction, SetProductIconThemeAction, ClearLanguageAction, ToggleAutoUpdateForExtensionAction, ToggleAutoUpdatesForPublisherAction, TogglePreReleaseExtensionAction, InstallAnotherVersionAction, InstallAction } from './extensionsActions.js';
1818
import { ExtensionsInput } from '../common/extensionsInput.js';
1919
import { ExtensionEditor } from './extensionEditor.js';
2020
import { StatusUpdater, MaliciousExtensionChecker, ExtensionsViewletViewsContribution, ExtensionsViewPaneContainer, BuiltInExtensionsContext, SearchMarketplaceExtensionsContext, RecommendedExtensionsContext, DefaultViewsContext, ExtensionsSortByContext, SearchHasTextContext, ExtensionsSearchValueContext } from './extensionsViewlet.js';
@@ -1292,17 +1292,6 @@ class ExtensionsContributions extends Disposable implements IWorkbenchContributi
12921292
},
12931293
run: () => runAction(this.instantiationService.createInstance(InstallSpecificVersionOfExtensionAction, InstallSpecificVersionOfExtensionAction.ID, InstallSpecificVersionOfExtensionAction.LABEL))
12941294
});
1295-
1296-
this.registerExtensionAction({
1297-
id: ReinstallAction.ID,
1298-
title: { value: ReinstallAction.LABEL, original: 'Reinstall Extension...' },
1299-
category: Categories.Developer,
1300-
menu: {
1301-
id: MenuId.CommandPalette,
1302-
when: ContextKeyExpr.and(CONTEXT_HAS_GALLERY, ContextKeyExpr.or(CONTEXT_HAS_LOCAL_SERVER, CONTEXT_HAS_REMOTE_SERVER))
1303-
},
1304-
run: () => runAction(this.instantiationService.createInstance(ReinstallAction, ReinstallAction.ID, ReinstallAction.LABEL))
1305-
});
13061295
}
13071296

13081297
// Extension Context Menu

src/vs/workbench/contrib/extensions/browser/extensionsActions.ts

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -2843,72 +2843,6 @@ export class ExtensionStatusAction extends ExtensionAction {
28432843
}
28442844
}
28452845

2846-
export class ReinstallAction extends Action {
2847-
2848-
static readonly ID = 'workbench.extensions.action.reinstall';
2849-
static readonly LABEL = localize('reinstall', "Reinstall Extension...");
2850-
2851-
constructor(
2852-
id: string = ReinstallAction.ID, label: string = ReinstallAction.LABEL,
2853-
@IExtensionsWorkbenchService private readonly extensionsWorkbenchService: IExtensionsWorkbenchService,
2854-
@IExtensionManagementServerService private readonly extensionManagementServerService: IExtensionManagementServerService,
2855-
@IQuickInputService private readonly quickInputService: IQuickInputService,
2856-
@INotificationService private readonly notificationService: INotificationService,
2857-
@IHostService private readonly hostService: IHostService,
2858-
@IExtensionService private readonly extensionService: IExtensionService
2859-
) {
2860-
super(id, label);
2861-
}
2862-
2863-
override get enabled(): boolean {
2864-
return this.extensionsWorkbenchService.local.filter(l => !l.isBuiltin && l.local).length > 0;
2865-
}
2866-
2867-
override run(): Promise<any> {
2868-
return this.quickInputService.pick(this.getEntries(), { placeHolder: localize('selectExtensionToReinstall', "Select Extension to Reinstall") })
2869-
.then(pick => pick && this.reinstallExtension(pick.extension));
2870-
}
2871-
2872-
private getEntries(): Promise<(IQuickPickItem & { extension: IExtension })[]> {
2873-
return this.extensionsWorkbenchService.queryLocal()
2874-
.then(local => {
2875-
const entries = local
2876-
.filter(extension => !extension.isBuiltin && extension.server !== this.extensionManagementServerService.webExtensionManagementServer)
2877-
.map(extension => {
2878-
return {
2879-
id: extension.identifier.id,
2880-
label: extension.displayName,
2881-
description: extension.identifier.id,
2882-
extension,
2883-
};
2884-
});
2885-
return entries;
2886-
});
2887-
}
2888-
2889-
private reinstallExtension(extension: IExtension): Promise<void> {
2890-
return this.extensionsWorkbenchService.openSearch('@installed ')
2891-
.then(() => {
2892-
return this.extensionsWorkbenchService.reinstall(extension)
2893-
.then(extension => {
2894-
const requireReload = !(extension.local && this.extensionService.canAddExtension(toExtensionDescription(extension.local)));
2895-
const message = requireReload ? localize('ReinstallAction.successReload', "Please reload Visual Studio Code to complete reinstalling the extension {0}.", extension.identifier.id)
2896-
: localize('ReinstallAction.success', "Reinstalling the extension {0} is completed.", extension.identifier.id);
2897-
const actions = requireReload ? [{
2898-
label: localize('InstallVSIXAction.reloadNow', "Reload Now"),
2899-
run: () => this.hostService.reload()
2900-
}] : [];
2901-
this.notificationService.prompt(
2902-
Severity.Info,
2903-
message,
2904-
actions,
2905-
{ sticky: true }
2906-
);
2907-
}, error => this.notificationService.error(error));
2908-
});
2909-
}
2910-
}
2911-
29122846
export class InstallSpecificVersionOfExtensionAction extends Action {
29132847

29142848
static readonly ID = 'workbench.extensions.action.install.specificVersion';

src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2618,17 +2618,6 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension
26182618
extension.displayName, dependents[0].displayName, dependents[1].displayName);
26192619
}
26202620

2621-
reinstall(extension: IExtension): Promise<IExtension> {
2622-
return this.doInstall(extension, () => {
2623-
const ext = extension.local ? extension : this.local.filter(e => areSameExtensions(e.identifier, extension.identifier))[0];
2624-
const toReinstall: ILocalExtension | null = ext && ext.local ? ext.local : null;
2625-
if (!toReinstall) {
2626-
throw new Error('Missing local');
2627-
}
2628-
return this.extensionManagementService.reinstallFromGallery(toReinstall);
2629-
});
2630-
}
2631-
26322621
isExtensionIgnoredToSync(extension: IExtension): boolean {
26332622
return extension.local ? !this.isInstalledExtensionSynced(extension.local)
26342623
: this.extensionsSyncManagementService.hasToNeverSyncExtension(extension.identifier.id);

src/vs/workbench/contrib/extensions/common/extensions.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,6 @@ export interface IExtensionsWorkbenchService {
143143
installInServer(extension: IExtension, server: IExtensionManagementServer): Promise<void>;
144144
downloadVSIX(extension: string, prerelease: boolean): Promise<void>;
145145
uninstall(extension: IExtension): Promise<void>;
146-
reinstall(extension: IExtension): Promise<IExtension>;
147146
togglePreRelease(extension: IExtension): Promise<void>;
148147
canSetLanguage(extension: IExtension): boolean;
149148
setLanguage(extension: IExtension): Promise<void>;

src/vs/workbench/services/extensionManagement/common/extensionManagementService.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -256,15 +256,6 @@ export class ExtensionManagementService extends Disposable implements IWorkbench
256256

257257
}
258258

259-
async reinstallFromGallery(extension: ILocalExtension): Promise<ILocalExtension> {
260-
const server = this.getServer(extension);
261-
if (server) {
262-
await this.checkForWorkspaceTrust(extension.manifest, false);
263-
return server.extensionManagementService.reinstallFromGallery(extension);
264-
}
265-
return Promise.reject(`Invalid location ${extension.location.toString()}`);
266-
}
267-
268259
updateMetadata(extension: ILocalExtension, metadata: Partial<Metadata>): Promise<ILocalExtension> {
269260
const server = this.getServer(extension);
270261
if (server) {

src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,6 @@ export class WebExtensionManagementService extends AbstractExtensionManagementSe
201201
zip(extension: ILocalExtension): Promise<URI> { throw new Error('unsupported'); }
202202
getManifest(vsix: URI): Promise<IExtensionManifest> { throw new Error('unsupported'); }
203203
download(): Promise<URI> { throw new Error('unsupported'); }
204-
reinstallFromGallery(): Promise<ILocalExtension> { throw new Error('unsupported'); }
205204

206205
async cleanUp(): Promise<void> { }
207206

0 commit comments

Comments
 (0)