Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 7 additions & 9 deletions src/features/creators/autoFindProjects.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import * as path from 'path';
import { Uri } from 'vscode';
import { showErrorMessage, showQuickPickWithButtons, showWarningMessage } from '../../common/window.apis';
import { ProjectCreatorString } from '../../common/localize';
import { PythonProject, PythonProjectCreator, PythonProjectCreatorOptions } from '../../api';
import { PythonProjectManager } from '../../internal.api';
import { findFiles } from '../../common/workspace.apis';
import { ProjectCreatorString } from '../../common/localize';
import { traceInfo } from '../../common/logging';
import { showErrorMessage, showQuickPickWithButtons, showWarningMessage } from '../../common/window.apis';
import { findFiles } from '../../common/workspace.apis';
import { PythonProjectManager, PythonProjectsImpl } from '../../internal.api';

function getUniqueUri(uris: Uri[]): {
label: string;
Expand Down Expand Up @@ -96,11 +96,9 @@ export class AutoFindProjects implements PythonProjectCreator {
traceInfo('User cancelled project selection.');
return;
}

const projects = projectUris.map((uri) => ({
name: path.basename(uri.fsPath),
uri,
})) as PythonProject[];
const projects = projectUris.map(
(uri) => new PythonProjectsImpl(path.basename(uri.fsPath), uri),
) as PythonProject[];
// Add the projects to the project manager
this.pm.add(projects);
return projects;
Expand Down
14 changes: 6 additions & 8 deletions src/features/creators/existingProjects.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import * as path from 'path';
import { Uri, window, workspace } from 'vscode';
import { PythonProject, PythonProjectCreator, PythonProjectCreatorOptions } from '../../api';
import { ProjectCreatorString } from '../../common/localize';
import { traceInfo, traceLog } from '../../common/logging';
import { showOpenDialog, showWarningMessage } from '../../common/window.apis';
import { PythonProjectManager } from '../../internal.api';
import { traceInfo } from '../../common/logging';
import { Uri, window, workspace } from 'vscode';
import { traceLog } from '../../common/logging';
import { PythonProjectManager, PythonProjectsImpl } from '../../internal.api';

export class ExistingProjects implements PythonProjectCreator {
public readonly name = 'existingProjects';
Expand Down Expand Up @@ -90,10 +89,9 @@ export class ExistingProjects implements PythonProjectCreator {
}
return;
} else {
const projects = resultsInWorkspace.map((uri) => ({
name: path.basename(uri.fsPath),
uri,
})) as PythonProject[];
const projects = resultsInWorkspace.map(
(uri) => new PythonProjectsImpl(path.basename(uri.fsPath), uri),
) as PythonProject[];
// Add the projects to the project manager
this.pm.add(projects);
return projects;
Expand Down
17 changes: 12 additions & 5 deletions src/features/projectManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,19 @@ export class PythonProjectManagerImpl implements PythonProjectManager {
const defaultEnvManager = globalConfig.get<string>('defaultEnvManager', DEFAULT_ENV_MANAGER_ID);
const defaultPkgManager = globalConfig.get<string>('defaultPackageManager', DEFAULT_PACKAGE_MANAGER_ID);

_projects.forEach((w) => {
// if the package manager and env manager are not the default ones, then add them to the edits
if (envManagerId !== defaultEnvManager || pkgManagerId !== defaultPkgManager) {
edits.push({ project: w, envManager: envManagerId, packageManager: pkgManagerId });
_projects.forEach((currProject) => {
const workspaces = getWorkspaceFolders() ?? [];
const isRoot = workspaces.some((w) => w.uri.toString() === currProject.uri.toString());
if (isRoot) {
// for root projects, add setting if not default
if (envManagerId !== defaultEnvManager || pkgManagerId !== defaultPkgManager) {
edits.push({ project: currProject, envManager: envManagerId, packageManager: pkgManagerId });
}
} else {
// for non-root projects, always add setting
edits.push({ project: currProject, envManager: envManagerId, packageManager: pkgManagerId });
}
return this._projects.set(w.uri.toString(), w);
return this._projects.set(currProject.uri.toString(), currProject);
});
this._onDidChangeProjects.fire(Array.from(this._projects.values()));

Expand Down