Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/extensions/electron-browser/extensionsActions.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { localize2 } from '../../../../nls.js';
7
import { IFileService } from '../../../../platform/files/common/files.js';
8
import { URI } from '../../../../base/common/uri.js';
9
import { INativeWorkbenchEnvironmentService } from '../../../services/environment/electron-browser/environmentService.js';
10
import { INativeHostService } from '../../../../platform/native/common/native.js';
11
import { Schemas } from '../../../../base/common/network.js';
12
import { Action2 } from '../../../../platform/actions/common/actions.js';
13
import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';
14
import { ExtensionsLocalizedLabel, IExtensionManagementService } from '../../../../platform/extensionManagement/common/extensionManagement.js';
15
import { Categories } from '../../../../platform/action/common/actionCommonCategories.js';
16
17
export class OpenExtensionsFolderAction extends Action2 {
18
19
constructor() {
20
super({
21
id: 'workbench.extensions.action.openExtensionsFolder',
22
title: localize2('openExtensionsFolder', 'Open Extensions Folder'),
23
category: ExtensionsLocalizedLabel,
24
f1: true
25
});
26
}
27
28
async run(accessor: ServicesAccessor): Promise<void> {
29
const nativeHostService = accessor.get(INativeHostService);
30
const fileService = accessor.get(IFileService);
31
const environmentService = accessor.get(INativeWorkbenchEnvironmentService);
32
33
const extensionsHome = URI.file(environmentService.extensionsPath);
34
const file = await fileService.resolve(extensionsHome);
35
36
let itemToShow: URI;
37
if (file.children && file.children.length > 0) {
38
itemToShow = file.children[0].resource;
39
} else {
40
itemToShow = extensionsHome;
41
}
42
43
if (itemToShow.scheme === Schemas.file) {
44
return nativeHostService.showItemInFolder(itemToShow.fsPath);
45
}
46
}
47
}
48
49
export class CleanUpExtensionsFolderAction extends Action2 {
50
51
constructor() {
52
super({
53
id: '_workbench.extensions.action.cleanUpExtensionsFolder',
54
title: localize2('cleanUpExtensionsFolder', 'Cleanup Extensions Folder'),
55
category: Categories.Developer,
56
f1: true
57
});
58
}
59
60
async run(accessor: ServicesAccessor): Promise<void> {
61
const extensionManagementService = accessor.get(IExtensionManagementService);
62
return extensionManagementService.cleanUp();
63
}
64
}
65
66
67