From c42205bea5df5e7f26cb29fa442c9206d1b13d47 Mon Sep 17 00:00:00 2001 From: eleanorjboyd <26030610+eleanorjboyd@users.noreply.github.com> Date: Wed, 28 May 2025 14:52:10 -0700 Subject: [PATCH 1/2] feat: enhance project creation with quick create option in new project command --- src/extension.ts | 49 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 189455de..765b9c74 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,5 +1,5 @@ import { commands, ExtensionContext, LogOutputChannel, Terminal, Uri, window } from 'vscode'; -import { PythonEnvironment, PythonEnvironmentApi } from './api'; +import { PythonEnvironment, PythonEnvironmentApi, PythonProjectCreator, PythonProjectCreatorOptions } from './api'; import { ensureCorrectVersion } from './common/extVersion'; import { registerTools } from './common/lm.apis'; import { registerLogger, traceError, traceInfo } from './common/logging'; @@ -114,13 +114,21 @@ export async function activate(context: ExtensionContext): Promise { - const selected = await newProjectSelection(projectCreators.getProjectCreators()); - if (selected) { - await selected.create(); - } - }), + commands.registerCommand( + 'python-envs.createNewProjectFromTemplate', + async (projectType: string, quickCreate: boolean, newProjectName: string, newProjectPath: string) => { + if (quickCreate) { + if (!projectType || !newProjectName || !newProjectPath) { + throw new Error('Project type, name, and path are required for quick create.'); + } + const creators = projectCreators.getProjectCreators(); + let selected: PythonProjectCreator | undefined; + if (projectType === 'python-package') { + selected = creators.find((c) => c.name === 'newPackage'); + } + if (projectType === 'python-script') { + selected = creators.find((c) => c.name === 'newScript'); + } + if (!selected) { + throw new Error(`Project creator for type "${projectType}" not found.`); + } + await selected.create({ + quickCreate: true, + name: newProjectName, + rootUri: Uri.file(newProjectPath), + }); + } else { + const selected = await newProjectSelection(projectCreators.getProjectCreators()); + if (selected) { + await selected.create(); + } + } + }, + ), terminalActivation.onDidChangeTerminalActivationState(async (e) => { await setActivateMenuButtonContext(e.terminal, e.environment, e.activated); }), From b03265170ea21b6c62ab3c5de1500b1784f1582a Mon Sep 17 00:00:00 2001 From: eleanorjboyd <26030610+eleanorjboyd@users.noreply.github.com> Date: Wed, 28 May 2025 14:53:33 -0700 Subject: [PATCH 2/2] remove left-over edits --- src/extension.ts | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 765b9c74..7c8a3251 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,5 +1,5 @@ import { commands, ExtensionContext, LogOutputChannel, Terminal, Uri, window } from 'vscode'; -import { PythonEnvironment, PythonEnvironmentApi, PythonProjectCreator, PythonProjectCreatorOptions } from './api'; +import { PythonEnvironment, PythonEnvironmentApi, PythonProjectCreator } from './api'; import { ensureCorrectVersion } from './common/extVersion'; import { registerTools } from './common/lm.apis'; import { registerLogger, traceError, traceInfo } from './common/logging'; @@ -114,21 +114,13 @@ export async function activate(context: ExtensionContext): Promise