Skip to content

Commit 336a365

Browse files
committed
Tweak how activation commands are generated
1 parent 3b1ea6d commit 336a365

File tree

4 files changed

+60
-39
lines changed

4 files changed

+60
-39
lines changed

src/client/common/terminal/environmentActivationProviders/pixiActivationProvider.ts

Lines changed: 3 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@ import { inject, injectable } from 'inversify';
88
import { Uri } from 'vscode';
99
import { IInterpreterService } from '../../../interpreter/contracts';
1010
import { ITerminalActivationCommandProvider, TerminalShellType } from '../types';
11-
import {
12-
getPixiEnvironmentFromInterpreter,
13-
isNonDefaultPixiEnvironmentName,
14-
} from '../../../pythonEnvironments/common/environmentManagers/pixi';
11+
import { getPixiActivationCommands } from '../../../pythonEnvironments/common/environmentManagers/pixi';
1512

1613
@injectable()
1714
export class PixiActivationCommandProvider implements ITerminalActivationCommandProvider {
@@ -36,42 +33,9 @@ export class PixiActivationCommandProvider implements ITerminalActivationCommand
3633

3734
public async getActivationCommandsForInterpreter(
3835
pythonPath: string,
39-
_targetShell: TerminalShellType,
36+
targetShell: TerminalShellType,
4037
): Promise<string[] | undefined> {
41-
const pixiEnv = await getPixiEnvironmentFromInterpreter(pythonPath);
42-
if (!pixiEnv) {
43-
return undefined;
44-
}
45-
46-
const args = [
47-
pixiEnv.pixi.command.toCommandArgumentForPythonExt(),
48-
'shell',
49-
'--manifest-path',
50-
pixiEnv.manifestPath.toCommandArgumentForPythonExt(),
51-
];
52-
if (isNonDefaultPixiEnvironmentName(pixiEnv.envName)) {
53-
args.push('--environment');
54-
args.push(pixiEnv.envName.toCommandArgumentForPythonExt());
55-
}
56-
57-
// const pixiTargetShell = shellTypeToPixiShell(targetShell);
58-
// if (pixiTargetShell) {
59-
// args.push('--shell');
60-
// args.push(pixiTargetShell);
61-
// }
62-
63-
// const shellHookOutput = await exec(pixiEnv.pixi.command, args, {
64-
// throwOnStdErr: false,
65-
// }).catch(traceError);
66-
// if (!shellHookOutput) {
67-
// return undefined;
68-
// }
69-
70-
// return splitLines(shellHookOutput.stdout, {
71-
// removeEmptyEntries: true,
72-
// trim: true,
73-
// });
74-
return [args.join(' ')];
38+
return await getPixiActivationCommands(pythonPath, targetShell);
7539
}
7640
}
7741

src/client/common/terminal/helper.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
TerminalActivationProviders,
2323
TerminalShellType,
2424
} from './types';
25+
import { isPixiEnvironment } from '../../pythonEnvironments/common/environmentManagers/pixi';
2526

2627
@injectable()
2728
export class TerminalHelper implements ITerminalHelper {
@@ -143,6 +144,19 @@ export class TerminalHelper implements ITerminalHelper {
143144
): Promise<string[] | undefined> {
144145
const settings = this.configurationService.getSettings(resource);
145146

147+
const isPixiEnv = interpreter
148+
? interpreter.envType === EnvironmentType.Pixi
149+
: await isPixiEnvironment(settings.pythonPath);
150+
if (isPixiEnv) {
151+
const activationCommands = interpreter
152+
? await this.pixi.getActivationCommandsForInterpreter(interpreter.path, terminalShellType)
153+
: await this.pixi.getActivationCommands(resource, terminalShellType);
154+
155+
if (Array.isArray(activationCommands)) {
156+
return activationCommands;
157+
}
158+
}
159+
146160
const condaService = this.serviceContainer.get<IComponentAdapter>(IComponentAdapter);
147161
// If we have a conda environment, then use that.
148162
const isCondaEnvironment = interpreter

src/client/extensionActivation.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ import { StopWatch } from './common/utils/stopWatch';
5454
import { registerReplCommands, registerReplExecuteOnEnter, registerStartNativeReplCommand } from './repl/replCommands';
5555
import { registerTriggerForTerminalREPL } from './terminals/codeExecution/terminalReplWatcher';
5656
import { registerPythonStartup } from './terminals/pythonStartup';
57+
import { registerPixiFeatures } from './pythonEnvironments/common/environmentManagers/pixi';
5758

5859
export async function activateComponents(
5960
// `ext` is passed to any extra activation funcs.
@@ -100,6 +101,7 @@ export function activateFeatures(ext: ExtensionState, _components: Components):
100101
IInterpreterService,
101102
);
102103
const pathUtils = ext.legacyIOC.serviceContainer.get<IPathUtils>(IPathUtils);
104+
registerPixiFeatures(ext.disposables);
103105
registerAllCreateEnvironmentFeatures(
104106
ext.disposables,
105107
interpreterQuickPick,

src/client/pythonEnvironments/common/environmentManagers/pixi.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { isWindows } from '../../../common/platform/platformService';
1515
import { IDisposableRegistry } from '../../../common/types';
1616
import { getWorkspaceFolderPaths } from '../../../common/vscodeApis/workspaceApis';
1717
import { isTestExecution } from '../../../common/constants';
18+
import { TerminalShellType } from '../../../common/terminal/types';
1819

1920
export const PIXITOOLPATH_SETTING_KEY = 'pixiToolPath';
2021

@@ -339,3 +340,43 @@ export async function getRunPixiPythonCommand(pythonPath: string): Promise<strin
339340
args.push('python');
340341
return args;
341342
}
343+
344+
export async function getPixiActivationCommands(
345+
pythonPath: string,
346+
_targetShell?: TerminalShellType,
347+
): Promise<string[] | undefined> {
348+
const pixiEnv = await getPixiEnvironmentFromInterpreter(pythonPath);
349+
if (!pixiEnv) {
350+
return undefined;
351+
}
352+
353+
const args = [
354+
pixiEnv.pixi.command.toCommandArgumentForPythonExt(),
355+
'shell',
356+
'--manifest-path',
357+
pixiEnv.manifestPath.toCommandArgumentForPythonExt(),
358+
];
359+
if (isNonDefaultPixiEnvironmentName(pixiEnv.envName)) {
360+
args.push('--environment');
361+
args.push(pixiEnv.envName.toCommandArgumentForPythonExt());
362+
}
363+
364+
// const pixiTargetShell = shellTypeToPixiShell(targetShell);
365+
// if (pixiTargetShell) {
366+
// args.push('--shell');
367+
// args.push(pixiTargetShell);
368+
// }
369+
370+
// const shellHookOutput = await exec(pixiEnv.pixi.command, args, {
371+
// throwOnStdErr: false,
372+
// }).catch(traceError);
373+
// if (!shellHookOutput) {
374+
// return undefined;
375+
// }
376+
377+
// return splitLines(shellHookOutput.stdout, {
378+
// removeEmptyEntries: true,
379+
// trim: true,
380+
// });
381+
return [args.join(' ')];
382+
}

0 commit comments

Comments
 (0)