Merge pull request #179 from aminya/locale [skip test]

This commit is contained in:
Amin Yahyaabadi 2023-07-06 15:56:39 -07:00 committed by GitHub
commit 8b8fd86e33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 81 additions and 41 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -10,23 +10,45 @@ import { giveUserAccess } from "user-access"
import escapeQuote from "escape-quotes" import escapeQuote from "escape-quotes"
import { pathExists } from "path-exists" import { pathExists } from "path-exists"
type AddEnvOptions = {
/** If true, the value will be escaped with quotes and spaces will be escaped with backslash */
shouldEscapeSpace?: boolean
/** If true, the variable will be only added if it is not defined */
shouldAddOnlyIfNotDefined?: boolean
}
const defaultAddEnvOptions: AddEnvOptions = {
shouldEscapeSpace: false,
shouldAddOnlyIfNotDefined: false,
}
/** /**
* Add an environment variable. * Add an environment variable.
* *
* This function is cross-platforms and works in all the local or CI systems. * This function is cross-platforms and works in all the local or CI systems.
*/ */
export async function addEnv(name: string, valGiven: string | undefined, shouldEscapeSpace: boolean = false) { export async function addEnv(
const val = escapeString(valGiven ?? "", shouldEscapeSpace) name: string,
valGiven: string | undefined,
options: AddEnvOptions = defaultAddEnvOptions
) {
const val = escapeString(valGiven ?? "", options.shouldEscapeSpace)
try { try {
if (GITHUB_ACTIONS) { if (GITHUB_ACTIONS) {
try { try {
if (options.shouldAddOnlyIfNotDefined) {
if (process.env[name] !== undefined) {
info(`Environment variable ${name} is already defined. Skipping.`)
return
}
}
exportVariable(name, val) exportVariable(name, val)
} catch (err) { } catch (err) {
error(err as Error) error(err as Error)
await addEnvSystem(name, val) await addEnvSystem(name, val, options)
} }
} else { } else {
await addEnvSystem(name, val) await addEnvSystem(name, val, options)
} }
} catch (err) { } catch (err) {
error(err as Error) error(err as Error)
@ -65,10 +87,16 @@ export async function addPath(path: string) {
export const cpprc_path = untildifyUser(".cpprc") export const cpprc_path = untildifyUser(".cpprc")
async function addEnvSystem(name: string, valGiven: string | undefined) { async function addEnvSystem(name: string, valGiven: string | undefined, options: AddEnvOptions) {
const val = valGiven ?? "" const val = valGiven ?? ""
switch (process.platform) { switch (process.platform) {
case "win32": { case "win32": {
if (options.shouldAddOnlyIfNotDefined) {
if (process.env[name] !== undefined) {
info(`Environment variable ${name} is already defined. Skipping.`)
return
}
}
// We do not use `execaSync(`setx PATH "${path};%PATH%"`)` because of its character limit // We do not use `execaSync(`setx PATH "${path};%PATH%"`)` because of its character limit
await execPowershell(`[Environment]::SetEnvironmentVariable('${name}', '${val}', "User")`) await execPowershell(`[Environment]::SetEnvironmentVariable('${name}', '${val}', "User")`)
info(`${name}='${val}' was set in the environment.`) info(`${name}='${val}' was set in the environment.`)
@ -77,8 +105,13 @@ async function addEnvSystem(name: string, valGiven: string | undefined) {
case "linux": case "linux":
case "darwin": { case "darwin": {
await setupCppInProfile() await setupCppInProfile()
appendFileSync(cpprc_path, `\nexport ${name}="${val}"\n`) if (options.shouldAddOnlyIfNotDefined) {
info(`${name}="${val}" was added to "${cpprc_path}`) appendFileSync(cpprc_path, `\nif [ -z "\${${name}}" ]; then export ${name}="${val}"; fi\n`)
info(`if not defined ${name} then ${name}="${val}" was added to "${cpprc_path}`)
} else {
appendFileSync(cpprc_path, `\nexport ${name}="${val}"\n`)
info(`${name}="${val}" was added to "${cpprc_path}`)
}
return return
} }
default: { default: {

View File

@ -113,7 +113,10 @@ async function initApt(apt: string) {
] ]
if (apt === "nala") { if (apt === "nala") {
// enable utf8 otherwise it fails because of the usage of ASCII encoding // enable utf8 otherwise it fails because of the usage of ASCII encoding
promises.push(addEnv("LANG", "C.UTF-8"), addEnv("LC_ALL", "C.UTF-8")) promises.push(
addEnv("LANG", "C.UTF-8", { shouldAddOnlyIfNotDefined: true }),
addEnv("LC_ALL", "C.UTF-8", { shouldAddOnlyIfNotDefined: true })
)
} }
await Promise.all(promises) await Promise.all(promises)
} }