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}的变量, 请查看控制台信息~ `);
+ }
+ }
+ });
}
// 快捷操作