diff options
| author | vsrs <vit@conrlab.com> | 2020-07-02 19:47:40 +0300 |
|---|---|---|
| committer | vsrs <vit@conrlab.com> | 2020-07-03 14:23:51 +0300 |
| commit | 7b79d24ad5b251c0806a07aa7769e824f3c37fec (patch) | |
| tree | 1bf651ecddfdaecaccba02c3e9100f73c72e65a8 /editors/code/src/run.ts | |
| parent | 57576ac420989070e695bac195d516a410191ad9 (diff) | |
| download | rust-7b79d24ad5b251c0806a07aa7769e824f3c37fec.tar.gz rust-7b79d24ad5b251c0806a07aa7769e824f3c37fec.zip | |
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 e1430e31f76..d7c7c489c98 100644 --- a/editors/code/src/run.ts +++ b/editors/code/src/run.ts @@ -96,6 +96,28 @@ export class RunnableQuickPick implements vscode.QuickPickItem { } } +export function prepareEnv(runnable: ra.Runnable, config: Config): Record<string, string> { + const env: Record<string, string> = { "RUST_BACKTRACE": "short" }; + + if (runnable.args.expectTest) { + env["UPDATE_EXPECT"] = "1"; + } + + if (config.runnableEnv) { + if (Array.isArray(config.runnableEnv)) { + for (const it of config.runnableEnv) { + if (!it.mask || new RegExp(it.mask).test(runnable.label)) { + Object.assign(env, it.env); + } + } + } else { + Object.assign(env, config.runnableEnv as Record<string, string>); + } + } + + return env; +} + export async function createTask(runnable: ra.Runnable, config: Config): Promise<vscode.Task> { if (runnable.kind !== "cargo") { // rust-analyzer supports only one kind, "cargo" @@ -108,16 +130,13 @@ export async function createTask(runnable: ra.Runnable, config: Config): Promise if (runnable.args.executableArgs.length > 0) { args.push('--', ...runnable.args.executableArgs); } - const env: { [key: string]: string } = { "RUST_BACKTRACE": "short" }; - if (runnable.args.expectTest) { - env["UPDATE_EXPECT"] = "1"; - } + const definition: tasks.CargoTaskDefinition = { type: tasks.TASK_TYPE, command: args[0], // run, test, etc... args: args.slice(1), cwd: runnable.args.workspaceRoot, - env: Object.assign({}, process.env as { [key: string]: string }, env), + env: prepareEnv(runnable, config), }; const target = vscode.workspace.workspaceFolders![0]; // safe, see main activate() |
