about summary refs log tree commit diff
path: root/editors/code/src
diff options
context:
space:
mode:
authorAndrei Listochkin <andrei.listochkin@ferrous-systems.com>2022-05-11 13:28:08 +0100
committerAndrei Listochkin <andrei.listochkin@ferrous-systems.com>2022-05-11 15:50:25 +0100
commit6c769ac00d12cc1436bdbb2bbbce80db0bb8d2d5 (patch)
treef9e772201e405e078d34876e45ff565c2df04a6e /editors/code/src
parenta86db5d0d15f736ec25229ddde62859ea15f306e (diff)
downloadrust-6c769ac00d12cc1436bdbb2bbbce80db0bb8d2d5.tar.gz
rust-6c769ac00d12cc1436bdbb2bbbce80db0bb8d2d5.zip
handle references to external environment variables
use cross-env to enable env variables on Windows
Diffstat (limited to 'editors/code/src')
-rw-r--r--editors/code/src/config.ts25
1 files changed, 24 insertions, 1 deletions
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts
index 87cc2a395ba..cfbdd696652 100644
--- a/editors/code/src/config.ts
+++ b/editors/code/src/config.ts
@@ -232,7 +232,30 @@ export function substituteVariablesInEnv(env: Env): Env {
     }));
 
     const resolved = new Set<string>();
-    // TODO: handle missing dependencies
+    for (const dep of missingDeps) {
+        const match = /(?<prefix>.*?):(?<body>.+)/.exec(dep);
+        if (match) {
+            const { prefix, body } = match.groups!;
+            if (prefix === 'env') {
+                const envName = body;
+                envWithDeps[dep] = {
+                    value: process.env[envName] ?? '',
+                    deps: []
+                };
+                resolved.add(dep);
+            } else {
+                // we can't handle other prefixes at the moment
+                // leave values as is, but still mark them as resolved
+                envWithDeps[dep] = {
+                    value: '${' + dep + '}',
+                    deps: []
+                };
+                resolved.add(dep);
+            }
+        } else {
+            // TODO: handle VSCode variables
+        }
+    }
     const toResolve = new Set(Object.keys(envWithDeps));
 
     let leftToResolveSize;