forked from DonJayamanne/pythonVSCode
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Expand file tree
/
Copy pathindex.ts
More file actions
47 lines (44 loc) · 1.74 KB
/
index.ts
File metadata and controls
47 lines (44 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
import { commands, extensions, lm } from 'vscode';
import { PythonExtension } from '../api/types';
import { IServiceContainer } from '../ioc/types';
import { GetEnvironmentInfoTool } from './getPythonEnvTool';
import { InstallPackagesTool } from './installPackagesTool';
import { IExtensionContext } from '../common/types';
import { DisposableStore } from '../common/utils/resourceLifecycle';
import { ENVS_EXTENSION_ID } from '../envExt/api.internal';
import { IDiscoveryAPI } from '../pythonEnvironments/base/locator';
export function registerTools(
context: IExtensionContext,
discoverApi: IDiscoveryAPI,
environmentsApi: PythonExtension['environments'],
serviceContainer: IServiceContainer,
) {
if (extensions.getExtension(ENVS_EXTENSION_ID)) {
return;
}
const contextKey = 'pythonEnvExtensionInstalled';
commands.executeCommand('setContext', contextKey, false);
const ourTools = new DisposableStore();
context.subscriptions.push(ourTools);
ourTools.add(
lm.registerTool(GetEnvironmentInfoTool.toolName, new GetEnvironmentInfoTool(environmentsApi, serviceContainer)),
);
ourTools.add(
lm.registerTool(
InstallPackagesTool.toolName,
new InstallPackagesTool(environmentsApi, serviceContainer, discoverApi),
),
);
ourTools.add(
extensions.onDidChange(() => {
const envExtension = extensions.getExtension(ENVS_EXTENSION_ID);
if (envExtension) {
envExtension.activate();
commands.executeCommand('setContext', contextKey, true);
ourTools.dispose();
}
}),
);
}