diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ddc196..ce634ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,16 @@ +## version 2.19.10 + +- workspaceFolder 可以尝试从环境变量中读取数据 +- 例如/home/${USERNAME}/leetcode, 现在会尝试从系统环境变量读取 USERNAME 对应的值 +- 例如环境变量中 USERNAME 是 ccagml,那么就会是/home/ccagml/leetcode + ## version 2.19.9 -- 146题非Solution类时cpp调试报错 +- 146 题非 Solution 类时 cpp 调试报错 ## version 2.19.8 -- 新增尊享100分类 +- 新增尊享 100 分类 ## version 2.19.7 diff --git a/README.md b/README.md index 70661a1..55e97e9 100644 --- a/README.md +++ b/README.md @@ -206,7 +206,7 @@ | leetcode-problem-rating.defaultLanguage | 指定答题时使用的默认语言,可选语言有:`bash`, `c`, `cpp`, `csharp`, `golang`, `java`, `javascript`, `kotlin`, `mysql`, `php`, `python`,`python3`,`ruby`, `rust`, `scala`, `swift`, `typescript` | `N/A` | | leetcode-problem-rating.useWsl | 指定是否启用 WSL | `false` | | leetcode-problem-rating.endpoint | 指定使用的终端,可用终端有:`leetcode`, `leetcode-cn` | leetcode.cn | -| leetcode-problem-rating.workspaceFolder | 指定保存文件的工作区目录 | `""` | +| leetcode-problem-rating.workspaceFolder | 指定保存文件的工作区目例如/home/${USERNAME}/leetcode, 现在会尝试从系统环境变量读取 USERNAME 对应的值, 例如环境变量中 USERNAME 是 ccagml,那么就会是/home/ccagml/leetcode 录 | `""` | | leetcode-problem-rating.filePath | 指定生成题目文件的相对文件夹路径名和文件名。点击查看[更多详细用法](https://github.com/LeetCode-OpenSource/vscode-leetcode/wiki/%E8%87%AA%E5%AE%9A%E4%B9%89%E9%A2%98%E7%9B%AE%E6%96%87%E4%BB%B6%E7%9A%84%E7%9B%B8%E5%AF%B9%E6%96%87%E4%BB%B6%E5%A4%B9%E8%B7%AF%E5%BE%84%E5%92%8C%E6%96%87%E4%BB%B6%E5%90%8D)。 额外拓展\${yyyymmdd}、${timestamp}格式 | | | leetcode-problem-rating.enableStatusBar | 指定是否在 VS Code 下方显示插件状态栏。 增加周赛分数据 | `true` | | leetcode-problem-rating.editor.shortcuts | 指定在编辑器内所自定义的快捷方式。可用的快捷方式有: `submit`, `test`, `star`, `solution`, `description`, case, allcase 。 | ["submit, case, allcase, test, solution"] | diff --git a/package.json b/package.json index e8c507b..3bb8d30 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vscode-leetcode-problem-rating", "displayName": "LeetCode", "description": "%main.description%", - "version": "2.19.9", + "version": "2.19.10", "author": "ccagml", "publisher": "ccagml", "license": "MIT", diff --git a/src/utils/ConfigUtils.ts b/src/utils/ConfigUtils.ts index d8d7d00..23a36dc 100644 --- a/src/utils/ConfigUtils.ts +++ b/src/utils/ConfigUtils.ts @@ -34,6 +34,7 @@ import { useWsl, toWslPath } from "../utils/SystemUtils"; import * as path from "path"; import * as fse from "fs-extra"; import * as os from "os"; +import { logOutput } from "./OutputUtils"; // vscode的配置 export function getVsCodeConfig(): WorkspaceConfiguration { @@ -87,7 +88,24 @@ export function getPickOneByRankRangeMax(): number { } // 工作目录 export function getWorkspaceFolder(): string { - return getVsCodeConfig().get("workspaceFolder", ""); + let cur_wsf = getVsCodeConfig().get("workspaceFolder", ""); + return resolveWorkspaceFolder(cur_wsf); +} + +// 尝试从环境变量解析WorkspaceFolder +function resolveWorkspaceFolder(cur_wsf: string): string { + return cur_wsf.replace(/\$\{(.*?)\}/g, (_substring: string, ...args: string[]) => { + const placeholder: string = args[0].trim(); + switch (placeholder) { + default: + if (process.env[placeholder]) { + return process.env[placeholder] || ""; + } else { + logOutput.append("环境变量" + JSON.stringify(process.env)); + throw new Error(`无法从环境变量获取到${placeholder}的变量, 请查看控制台信息~ `); + } + } + }); } // 快捷操作