()
| 11 | import * as wsl from "./wslUtils"; |
| 12 | |
| 13 | export async function selectWorkspaceFolder(): Promise<string> { |
| 14 | let workspaceFolderSetting: string = getWorkspaceFolder(); |
| 15 | if (workspaceFolderSetting.trim() === "") { |
| 16 | workspaceFolderSetting = await determineLeetCodeFolder(); |
| 17 | if (workspaceFolderSetting === "") { |
| 18 | // User cancelled |
| 19 | return workspaceFolderSetting; |
| 20 | } |
| 21 | } |
| 22 | let needAsk: boolean = true; |
| 23 | await fse.ensureDir(workspaceFolderSetting); |
| 24 | for (const folder of vscode.workspace.workspaceFolders || []) { |
| 25 | if (isSubFolder(folder.uri.fsPath, workspaceFolderSetting)) { |
| 26 | needAsk = false; |
| 27 | } |
| 28 | } |
| 29 | |
| 30 | if (needAsk) { |
| 31 | const choice: string | undefined = await vscode.window.showQuickPick( |
| 32 | [ |
| 33 | OpenOption.justOpenFile, |
| 34 | OpenOption.openInCurrentWindow, |
| 35 | OpenOption.openInNewWindow, |
| 36 | OpenOption.addToWorkspace, |
| 37 | ], |
| 38 | { placeHolder: "The LeetCode workspace folder is not opened in VS Code, would you like to open it?" }, |
| 39 | ); |
| 40 | |
| 41 | // Todo: generate file first |
| 42 | switch (choice) { |
| 43 | case OpenOption.justOpenFile: |
| 44 | return workspaceFolderSetting; |
| 45 | case OpenOption.openInCurrentWindow: |
| 46 | await vscode.commands.executeCommand("vscode.openFolder", vscode.Uri.file(workspaceFolderSetting), false); |
| 47 | return ""; |
| 48 | case OpenOption.openInNewWindow: |
| 49 | await vscode.commands.executeCommand("vscode.openFolder", vscode.Uri.file(workspaceFolderSetting), true); |
| 50 | return ""; |
| 51 | case OpenOption.addToWorkspace: |
| 52 | vscode.workspace.updateWorkspaceFolders(vscode.workspace.workspaceFolders?.length ?? 0, 0, { uri: vscode.Uri.file(workspaceFolderSetting) }); |
| 53 | break; |
| 54 | default: |
| 55 | return ""; |
| 56 | } |
| 57 | } |
| 58 | |
| 59 | return wsl.useWsl() ? wsl.toWslPath(workspaceFolderSetting) : workspaceFolderSetting; |
| 60 | } |
| 61 | |
| 62 | export async function getActiveFilePath(uri?: vscode.Uri): Promise<string | undefined> { |
| 63 | let textEditor: vscode.TextEditor | undefined; |
no test coverage detected