Path: blob/main/src/vs/workbench/contrib/extensions/electron-browser/extensionsActions.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { localize2 } from '../../../../nls.js';6import { IFileService } from '../../../../platform/files/common/files.js';7import { URI } from '../../../../base/common/uri.js';8import { INativeWorkbenchEnvironmentService } from '../../../services/environment/electron-browser/environmentService.js';9import { INativeHostService } from '../../../../platform/native/common/native.js';10import { Schemas } from '../../../../base/common/network.js';11import { Action2 } from '../../../../platform/actions/common/actions.js';12import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';13import { ExtensionsLocalizedLabel, IExtensionManagementService } from '../../../../platform/extensionManagement/common/extensionManagement.js';14import { Categories } from '../../../../platform/action/common/actionCommonCategories.js';1516export class OpenExtensionsFolderAction extends Action2 {1718constructor() {19super({20id: 'workbench.extensions.action.openExtensionsFolder',21title: localize2('openExtensionsFolder', 'Open Extensions Folder'),22category: ExtensionsLocalizedLabel,23f1: true24});25}2627async run(accessor: ServicesAccessor): Promise<void> {28const nativeHostService = accessor.get(INativeHostService);29const fileService = accessor.get(IFileService);30const environmentService = accessor.get(INativeWorkbenchEnvironmentService);3132const extensionsHome = URI.file(environmentService.extensionsPath);33const file = await fileService.resolve(extensionsHome);3435let itemToShow: URI;36if (file.children && file.children.length > 0) {37itemToShow = file.children[0].resource;38} else {39itemToShow = extensionsHome;40}4142if (itemToShow.scheme === Schemas.file) {43return nativeHostService.showItemInFolder(itemToShow.fsPath);44}45}46}4748export class CleanUpExtensionsFolderAction extends Action2 {4950constructor() {51super({52id: '_workbench.extensions.action.cleanUpExtensionsFolder',53title: localize2('cleanUpExtensionsFolder', 'Cleanup Extensions Folder'),54category: Categories.Developer,55f1: true56});57}5859async run(accessor: ServicesAccessor): Promise<void> {60const extensionManagementService = accessor.get(IExtensionManagementService);61return extensionManagementService.cleanUp();62}63}64656667