aboutsummaryrefslogtreecommitdiff
path: root/editors/code/src/run.ts
diff options
context:
space:
mode:
authorvsrs <[email protected]>2020-07-02 17:47:40 +0100
committervsrs <[email protected]>2020-07-03 12:23:51 +0100
commit7b79d24ad5b251c0806a07aa7769e824f3c37fec (patch)
tree1bf651ecddfdaecaccba02c3e9100f73c72e65a8 /editors/code/src/run.ts
parent57576ac420989070e695bac195d516a410191ad9 (diff)
Add runnable env support.
Diffstat (limited to 'editors/code/src/run.ts')
-rw-r--r--editors/code/src/run.ts29
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
99export 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
99export async function createTask(runnable: ra.Runnable, config: Config): Promise<vscode.Task> { 121export 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()