diff --git a/CHANGELOG.md b/CHANGELOG.md index 69a6b794..075b9a6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Change Log All notable changes to the "vscode-maven" extension will be documented in this file. +## Unreleased +#### Fixed +- Use a simple and robust way to inject custom environment variables into terminals. [PR#240](https://github.com/Microsoft/vscode-maven/pull/240) + ## 0.14.1 #### Fixed - Fix the order of completion items for non-semantic versions. [#236](https://github.com/Microsoft/vscode-maven/issues/236) diff --git a/src/mavenTerminal.ts b/src/mavenTerminal.ts index b6dc7d05..31918e3c 100644 --- a/src/mavenTerminal.ts +++ b/src/mavenTerminal.ts @@ -20,8 +20,8 @@ class MavenTerminal implements vscode.Disposable { const defaultOptions: ITerminalOptions = { addNewLine: true, name: "Maven" }; const { addNewLine, name, cwd } = Object.assign(defaultOptions, options); if (this.terminals[name] === undefined) { - this.terminals[name] = vscode.window.createTerminal({ name }); - setupEnvironment(this.terminals[name]); + const env: {[envKey: string]: string} = Utils.getEnvironment(); + this.terminals[name] = vscode.window.createTerminal({ name, env }); } this.terminals[name].show(); if (cwd) { @@ -96,34 +96,6 @@ async function getCDCommand(cwd: string): Promise { } } -function setupEnvironment(terminal?: vscode.Terminal): void { - // do this first so it can be overridden if desired - const customEnv: {[envKey: string]: string} = Utils.getEnvironment(); - if (terminal) { - Object.keys(customEnv).forEach(key => { - terminal.sendText(composeSetEnvironmentVariableCommand(key, customEnv[key]), true); - }); - } -} - -function composeSetEnvironmentVariableCommand(variable: string, value: string): string { - if (process.platform === "win32") { - switch (currentWindowsShell()) { - case "Git Bash": - case "WSL Bash": - return `export ${variable}="${value}"`; // Git Bash - case "PowerShell": - return `$Env:${variable}="${value}"`; // PowerShell - case "Command Prompt": - return `set ${variable}=${value}`; // CMD - default: - return `set ${variable}=${value}`; // Unknown, try using common one. - } - } else { - return `export ${variable}="${value}"`; // general linux - } -} - function currentWindowsShell(): string { const currentWindowsShellPath: string = Settings.External.defaultWindowsShell(); if (currentWindowsShellPath.endsWith("cmd.exe")) {