diff options
author | vsrs <[email protected]> | 2020-07-02 17:47:40 +0100 |
---|---|---|
committer | vsrs <[email protected]> | 2020-07-03 12:23:51 +0100 |
commit | 7b79d24ad5b251c0806a07aa7769e824f3c37fec (patch) | |
tree | 1bf651ecddfdaecaccba02c3e9100f73c72e65a8 /editors/code/src/run.ts | |
parent | 57576ac420989070e695bac195d516a410191ad9 (diff) |
Add runnable env support.
Diffstat (limited to 'editors/code/src/run.ts')
-rw-r--r-- | editors/code/src/run.ts | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/editors/code/src/run.ts b/editors/code/src/run.ts index e1430e31f..d7c7c489c 100644 --- a/editors/code/src/run.ts +++ b/editors/code/src/run.ts | |||
@@ -96,6 +96,28 @@ export class RunnableQuickPick implements vscode.QuickPickItem { | |||
96 | } | 96 | } |
97 | } | 97 | } |
98 | 98 | ||
99 | export function prepareEnv(runnable: ra.Runnable, config: Config): Record<string, string> { | ||
100 | const env: Record<string, string> = { "RUST_BACKTRACE": "short" }; | ||
101 | |||
102 | if (runnable.args.expectTest) { | ||
103 | env["UPDATE_EXPECT"] = "1"; | ||
104 | } | ||
105 | |||
106 | if (config.runnableEnv) { | ||
107 | if (Array.isArray(config.runnableEnv)) { | ||
108 | for (const it of config.runnableEnv) { | ||
109 | if (!it.mask || new RegExp(it.mask).test(runnable.label)) { | ||
110 | Object.assign(env, it.env); | ||
111 | } | ||
112 | } | ||
113 | } else { | ||
114 | Object.assign(env, config.runnableEnv as Record<string, string>); | ||
115 | } | ||
116 | } | ||
117 | |||
118 | return env; | ||
119 | } | ||
120 | |||
99 | export async function createTask(runnable: ra.Runnable, config: Config): Promise<vscode.Task> { | 121 | export async function createTask(runnable: ra.Runnable, config: Config): Promise<vscode.Task> { |
100 | if (runnable.kind !== "cargo") { | 122 | if (runnable.kind !== "cargo") { |
101 | // rust-analyzer supports only one kind, "cargo" | 123 | // rust-analyzer supports only one kind, "cargo" |
@@ -108,16 +130,13 @@ export async function createTask(runnable: ra.Runnable, config: Config): Promise | |||
108 | if (runnable.args.executableArgs.length > 0) { | 130 | if (runnable.args.executableArgs.length > 0) { |
109 | args.push('--', ...runnable.args.executableArgs); | 131 | args.push('--', ...runnable.args.executableArgs); |
110 | } | 132 | } |
111 | const env: { [key: string]: string } = { "RUST_BACKTRACE": "short" }; | 133 | |
112 | if (runnable.args.expectTest) { | ||
113 | env["UPDATE_EXPECT"] = "1"; | ||
114 | } | ||
115 | const definition: tasks.CargoTaskDefinition = { | 134 | const definition: tasks.CargoTaskDefinition = { |
116 | type: tasks.TASK_TYPE, | 135 | type: tasks.TASK_TYPE, |
117 | command: args[0], // run, test, etc... | 136 | command: args[0], // run, test, etc... |
118 | args: args.slice(1), | 137 | args: args.slice(1), |
119 | cwd: runnable.args.workspaceRoot, | 138 | cwd: runnable.args.workspaceRoot, |
120 | env: Object.assign({}, process.env as { [key: string]: string }, env), | 139 | env: prepareEnv(runnable, config), |
121 | }; | 140 | }; |
122 | 141 | ||
123 | const target = vscode.workspace.workspaceFolders![0]; // safe, see main activate() | 142 | const target = vscode.workspace.workspaceFolders![0]; // safe, see main activate() |