Skip to content
This repository was archived by the owner on Nov 28, 2022. It is now read-only.

Commit 6de861e

Browse files
Tim Etchellsjopit
authored andcommitted
Block project create/add under codewind-data (#300)
eclipse-archived/codewind#1202 Signed-off-by: Tim Etchells <timetchells@ibm.com>
1 parent ff94862 commit 6de861e

File tree

3 files changed

+20
-16
lines changed

3 files changed

+20
-16
lines changed

dev/src/MCUtil.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,13 @@ namespace MCUtil {
194194
return path.join(os.homedir(), "codewind-workspace");
195195
}
196196

197+
export function getCWDataPath(): string {
198+
if (MCUtil.getOS() === "windows") {
199+
return "C:\\codewind-data";
200+
}
201+
return path.join(os.homedir(), "codewind-data");
202+
}
203+
197204
/**
198205
* Joins a string array into a user-friendly list.
199206
* Eg, `joinWithAnd([ "tim", "erin", "john" ])` => "tim, erin, and john"

dev/src/codewind/connection/UserProjectCreator.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import SocketEvents from "./SocketEvents";
1818
import Requester from "../project/Requester";
1919
import { ProjectType, IProjectSubtypesDescriptor } from "../project/ProjectType";
2020
import { CLICommandRunner } from "./CLICommands";
21+
import MCUtil from "../../MCUtil";
2122

2223
export interface ICWTemplateData {
2324
label: string;
@@ -300,10 +301,6 @@ namespace UserProjectCreator {
300301
}
301302

302303
export async function promptForDir(btnLabel: string, defaultUri: vscode.Uri | undefined): Promise<vscode.Uri | undefined> {
303-
// if (!defaultUri && vscode.workspace.workspaceFolders != null) {
304-
// defaultUri = vscode.workspace.workspaceFolders[0].uri;
305-
// }
306-
307304
const selectedDirs = await vscode.window.showOpenDialog({
308305
canSelectFiles: false,
309306
canSelectFolders: true,
@@ -312,10 +309,17 @@ namespace UserProjectCreator {
312309
defaultUri
313310
});
314311
if (selectedDirs == null) {
315-
return;
312+
return undefined;
313+
}
314+
// canSelectMany is false so we just use [0]
315+
const selectedDir = selectedDirs[0];
316+
317+
const cwDataPath = MCUtil.getCWDataPath();
318+
if (selectedDir.fsPath.startsWith(cwDataPath)) {
319+
vscode.window.showErrorMessage(`You cannot create or add a project under ${cwDataPath}. Select a different directory.`);
320+
return undefined;
316321
}
317-
// canSelectMany is false
318-
return selectedDirs[0];
322+
return selectedDir;
319323
}
320324
}
321325

dev/src/command/connection/CreateUserProjectCmd.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -95,18 +95,11 @@ export default async function createProject(connection: Connection): Promise<voi
9595
const defaultUri = vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders[0] ?
9696
vscode.workspace.workspaceFolders[0].uri : undefined;
9797

98-
const selection = await vscode.window.showOpenDialog({
99-
canSelectFiles: false,
100-
canSelectFolders: true,
101-
canSelectMany: false,
102-
defaultUri,
103-
openLabel: "Select Parent Directory",
104-
});
105-
98+
const selection = await UserProjectCreator.promptForDir("Select Parent Directory", defaultUri);
10699
if (!selection) {
107100
return undefined;
108101
}
109-
parentDir = selection[0];
102+
parentDir = selection;
110103
}
111104

112105
const response = await UserProjectCreator.createProject(connection, template, parentDir, projectName);

0 commit comments

Comments
 (0)