1
1
mirror of https://github.com/Eugeny/tabby.git synced 2024-09-21 01:47:28 +03:00

merge env vars case insensitively (fixes #4778)

This commit is contained in:
Eugene Pankov 2021-10-23 10:04:44 +02:00
parent ff4b137088
commit 5c976948dd
No known key found for this signature in database
GPG Key ID: 5896FCBBDD1CF4F4

View File

@ -81,6 +81,20 @@ export class PTYProxy {
}
}
function mergeEnv (...envs) {
const result = {}
const keyMap = {}
for (const env of envs) {
for (const [key, value] of Object.entries(env)) {
// const lookup = process.platform === 'win32' ? key.toLowerCase() : key
const lookup = key.toLowerCase()
keyMap[lookup] ??= key
result[keyMap[lookup]] = value
}
}
return result
}
/** @hidden */
export class Session extends BaseSession {
private pty: PTYProxy|null = null
@ -108,22 +122,18 @@ export class Session extends BaseSession {
}
if (!pty) {
const env = {
...process.env,
TERM: 'xterm-256color',
TERM_PROGRAM: 'Tabby',
...options.env,
...this.config.store.terminal.environment || {},
}
let env = mergeEnv(
process.env,
{
TERM: 'xterm-256color',
TERM_PROGRAM: 'Tabby',
},
options.env,
this.config.store.terminal.environment || {},
)
if (this.hostApp.platform === Platform.Windows && this.config.store.terminal.setComSpec) {
for (const k of Object.keys(env)) {
if (k.toUpperCase() === 'COMSPEC') {
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
delete env[k]
}
}
env.COMSPEC = this.bootstrapData.executable
env = mergeEnv(env, { COMSPEC: this.bootstrapData.executable })
}
delete env['']