renovate 44.146.1 → 44.146.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -101,8 +101,10 @@ async function getConfig(inputEnv, configEnvKey = "RENOVATE_CONFIG") {
|
|
|
101
101
|
if (!envVal) continue;
|
|
102
102
|
if (option.type === "array" && option.subType === "object") try {
|
|
103
103
|
const parsed = JSON5.parse(envVal);
|
|
104
|
-
if (isArray(parsed))
|
|
105
|
-
|
|
104
|
+
if (isArray(parsed)) {
|
|
105
|
+
const existing = config[option.name];
|
|
106
|
+
config[option.name] = isArray(existing) ? [...existing, ...parsed] : parsed;
|
|
107
|
+
} else logger.debug({
|
|
106
108
|
val: envVal,
|
|
107
109
|
envName
|
|
108
110
|
}, "Could not parse object array");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","names":[],"sources":["../../../../../lib/workers/global/config/parse/env.ts"],"sourcesContent":["import { isArray } from '@sindresorhus/is';\nimport JSON5 from 'json5';\nimport { getEnvName } from '../../../../config/options/env.ts';\nimport { getOptions } from '../../../../config/options/index.ts';\nimport type { AllConfig } from '../../../../config/types.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport { parseJson } from '../../../../util/common.ts';\nimport { coersions } from './coersions.ts';\nimport { migrateAndValidateConfig } from './util.ts';\n\nfunction normalizePrefixes(\n env: NodeJS.ProcessEnv,\n prefix: string | undefined,\n): NodeJS.ProcessEnv {\n const result = { ...env };\n if (prefix) {\n for (const [key, val] of Object.entries(result)) {\n if (key.startsWith(prefix)) {\n const newKey = key.replace(prefix, 'RENOVATE_');\n result[newKey] = val;\n delete result[key];\n }\n }\n }\n return result;\n}\n\nconst renameKeys = {\n aliases: 'registryAliases',\n azureAutoComplete: 'platformAutomerge', // migrate: azureAutoComplete\n gitLabAutomerge: 'platformAutomerge', // migrate: gitLabAutomerge\n mergeConfidenceApiBaseUrl: 'mergeConfidenceEndpoint',\n mergeConfidenceSupportedDatasources: 'mergeConfidenceDatasources',\n allowedPostUpgradeCommands: 'allowedCommands',\n baseBranches: 'baseBranchPatterns',\n};\n\nfunction renameEnvKeys(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const result = { ...env };\n for (const [from, to] of Object.entries(renameKeys)) {\n const fromKey = getEnvName({ name: from });\n const toKey = getEnvName({ name: to });\n if (env[fromKey]) {\n result[toKey] = env[fromKey];\n delete result[fromKey];\n }\n }\n return result;\n}\n\nconst migratedKeysWithValues = [\n {\n oldName: 'recreateClosed',\n newName: 'recreateWhen',\n from: 'true',\n to: 'always',\n },\n {\n oldName: 'recreateClosed',\n newName: 'recreateWhen',\n from: 'false',\n to: 'auto',\n },\n];\n\nfunction massageEnvKeyValues(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const result = { ...env };\n for (const { oldName, newName, from, to } of migratedKeysWithValues) {\n const key = getEnvName({ name: oldName });\n if (env[key] !== undefined && result[key] === from) {\n delete result[key];\n result[getEnvName({ name: newName })] = to;\n }\n }\n return result;\n}\n\ninterface ConvertedExperimentalEnvVar {\n optionName: string;\n // Normalize the raw env var value before passing it through, if needed.\n normalizeValue?: (value: string) => string;\n}\n\n// Maps RENOVATE_X_ env vars that have been promoted to regular config options\n// to the option name they now correspond to.\nexport const convertedExperimentalEnvVars: ReadonlyMap<\n string,\n ConvertedExperimentalEnvVar\n> = new Map([\n ['RENOVATE_X_AUTODISCOVER_REPO_SORT', { optionName: 'autodiscoverRepoSort' }],\n [\n 'RENOVATE_X_AUTODISCOVER_REPO_ORDER',\n { optionName: 'autodiscoverRepoOrder' },\n ],\n ['RENOVATE_X_DOCKER_MAX_PAGES', { optionName: 'dockerMaxPages' }],\n ['RENOVATE_X_DELETE_CONFIG_FILE', { optionName: 'deleteConfigFile' }],\n ['RENOVATE_X_S3_ENDPOINT', { optionName: 's3Endpoint' }],\n ['RENOVATE_X_S3_PATH_STYLE', { optionName: 's3PathStyle' }],\n [\n 'RENOVATE_X_MERGE_CONFIDENCE_API_BASE_URL',\n { optionName: 'mergeConfidenceEndpoint' },\n ],\n [\n 'RENOVATE_X_MERGE_CONFIDENCE_SUPPORTED_DATASOURCES',\n { optionName: 'mergeConfidenceDatasources' },\n ],\n [\n 'RENOVATE_X_REPO_CACHE_FORCE_LOCAL',\n {\n optionName: 'repositoryCacheForceLocal',\n // The old env var was treated as a flag: any non-empty value meant true.\n normalizeValue: (v: string) => (v ? 'true' : v),\n },\n ],\n]);\n\n/**\n * Massages the experimental env vars which have been converted to config options\n *\n * e.g. RENOVATE_X_AUTODISCOVER_REPO_SORT -> RENOVATE_AUTODISCOVER_REPO_SORT\n */\nfunction massageConvertedExperimentalVars(\n env: NodeJS.ProcessEnv,\n): NodeJS.ProcessEnv {\n const result = { ...env };\n for (const [\n oldKey,\n { optionName, normalizeValue },\n ] of convertedExperimentalEnvVars) {\n if (env[oldKey] !== undefined) {\n const newKey = getEnvName({ name: optionName });\n result[newKey] = normalizeValue\n ? normalizeValue(env[oldKey])\n : env[oldKey];\n delete result[oldKey];\n }\n }\n return result;\n}\n\nexport async function getConfig(\n inputEnv: NodeJS.ProcessEnv,\n configEnvKey = 'RENOVATE_CONFIG',\n): Promise<AllConfig> {\n const env = prepareEnv(inputEnv);\n const config = await parseAndValidateOrExit(env, configEnvKey);\n\n const options = getOptions();\n config.hostRules ??= [];\n\n for (const option of options) {\n if (option.env === false) {\n continue;\n }\n\n const envName = getEnvName(option);\n const envVal = env[envName];\n if (!envVal) {\n continue;\n }\n\n if (option.type === 'array' && option.subType === 'object') {\n try {\n const parsed = JSON5.parse(envVal);\n if (isArray(parsed)) {\n // @ts-expect-error -- type can't be narrowed\n config[option.name] = parsed;\n } else {\n logger.debug(\n { val: envVal, envName },\n 'Could not parse object array',\n );\n }\n } catch {\n logger.debug(\n { val: envVal, envName },\n 'Could not parse environment variable',\n );\n }\n } else {\n const coerce = coersions[option.type];\n try {\n // @ts-expect-error -- type can't be narrowed\n config[option.name] = coerce(envVal);\n } catch (e) {\n throw new Error(`${envName} was invalid: ${e}`);\n }\n\n if (option.name === 'dryRun') {\n if ((config[option.name] as string) === 'true') {\n logger.warn('env config dryRun property has been changed to full');\n config[option.name] = 'full';\n } else if ((config[option.name] as string) === 'false') {\n logger.warn('env config dryRun property has been changed to null');\n delete config[option.name];\n } else if ((config[option.name] as string) === 'null') {\n delete config[option.name];\n }\n }\n\n if (option.name === 'requireConfig') {\n if ((config[option.name] as string) === 'true') {\n logger.warn(\n 'env config requireConfig property has been changed to required',\n );\n config[option.name] = 'required';\n } else if ((config[option.name] as string) === 'false') {\n logger.warn(\n 'env config requireConfig property has been changed to optional',\n );\n config[option.name] = 'optional';\n }\n }\n\n if (option.name === 'platformCommit') {\n if ((config[option.name] as string) === 'true') {\n logger.warn(\n 'env config platformCommit property has been changed to enabled',\n );\n config[option.name] = 'enabled';\n } else if ((config[option.name] as string) === 'false') {\n logger.warn(\n 'env config platformCommit property has been changed to disabled',\n );\n config[option.name] = 'disabled';\n }\n }\n }\n }\n\n const githubComToken = env.GITHUB_COM_TOKEN ?? env.RENOVATE_GITHUB_COM_TOKEN;\n if (githubComToken) {\n logger.debug(`Converting GITHUB_COM_TOKEN into a global host rule`);\n config.hostRules.push({\n hostType: 'github',\n matchHost: 'github.com',\n token: githubComToken,\n });\n }\n\n // These env vars are deprecated and deleted to make sure they're not used\n const unsupportedEnv = [\n 'BITBUCKET_TOKEN',\n 'BITBUCKET_USERNAME',\n 'BITBUCKET_PASSWORD',\n 'GITHUB_ENDPOINT',\n 'GITHUB_TOKEN',\n 'GITLAB_ENDPOINT',\n 'GITLAB_TOKEN',\n 'VSTS_ENDPOINT',\n 'VSTS_TOKEN',\n ];\n\n for (const val of unsupportedEnv) {\n delete env[val];\n }\n\n return config;\n}\n\nexport function prepareEnv(inputEnv: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n let env = normalizePrefixes(inputEnv, inputEnv.ENV_PREFIX);\n env = massageConvertedExperimentalVars(env);\n env = renameEnvKeys(env);\n // massage the values of migrated configuration keys\n return massageEnvKeyValues(env);\n}\n\nexport async function parseAndValidateOrExit(\n env: NodeJS.ProcessEnv,\n configEnvKey: string,\n): Promise<AllConfig> {\n if (!env[configEnvKey]) {\n return {};\n }\n\n try {\n const config = parseJson(\n env[configEnvKey],\n `${configEnvKey}.env.json5`,\n ) as AllConfig;\n logger.debug({ config }, `Detected config in env ${configEnvKey}`);\n\n return await migrateAndValidateConfig(config, `${configEnvKey}`);\n } catch (err) {\n logger.fatal(\n { err, configEnvKey },\n 'Could not parse config environment variable',\n );\n process.exit(1);\n }\n}\n"],"mappings":";;;;;;;;;AAUA,SAAS,kBACP,KACA,QACmB;CACnB,MAAM,SAAS,EAAE,GAAG,IAAI;CACxB,IAAI,QACG;OAAA,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,MAAM,GAC5C,IAAI,IAAI,WAAW,MAAM,GAAG;GAC1B,MAAM,SAAS,IAAI,QAAQ,QAAQ,WAAW;GAC9C,OAAO,UAAU;GACjB,OAAO,OAAO;EAChB;;CAGJ,OAAO;AACT;AAEA,MAAM,aAAa;CACjB,SAAS;CACT,mBAAmB;CACnB,iBAAiB;CACjB,2BAA2B;CAC3B,qCAAqC;CACrC,4BAA4B;CAC5B,cAAc;AAChB;AAEA,SAAS,cAAc,KAA2C;CAChE,MAAM,SAAS,EAAE,GAAG,IAAI;CACxB,KAAK,MAAM,CAAC,MAAM,OAAO,OAAO,QAAQ,UAAU,GAAG;EACnD,MAAM,UAAU,WAAW,EAAE,MAAM,KAAK,CAAC;EACzC,MAAM,QAAQ,WAAW,EAAE,MAAM,GAAG,CAAC;EACrC,IAAI,IAAI,UAAU;GAChB,OAAO,SAAS,IAAI;GACpB,OAAO,OAAO;EAChB;CACF;CACA,OAAO;AACT;AAEA,MAAM,yBAAyB,CAC7B;CACE,SAAS;CACT,SAAS;CACT,MAAM;CACN,IAAI;AACN,GACA;CACE,SAAS;CACT,SAAS;CACT,MAAM;CACN,IAAI;AACN,CACF;AAEA,SAAS,oBAAoB,KAA2C;CACtE,MAAM,SAAS,EAAE,GAAG,IAAI;CACxB,KAAK,MAAM,EAAE,SAAS,SAAS,MAAM,QAAQ,wBAAwB;EACnE,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ,CAAC;EACxC,IAAI,IAAI,SAAS,KAAA,KAAa,OAAO,SAAS,MAAM;GAClD,OAAO,OAAO;GACd,OAAO,WAAW,EAAE,MAAM,QAAQ,CAAC,KAAK;EAC1C;CACF;CACA,OAAO;AACT;AAUA,MAAa,+CAGT,IAAI,IAAI;CACV,CAAC,qCAAqC,EAAE,YAAY,uBAAuB,CAAC;CAC5E,CACE,sCACA,EAAE,YAAY,wBAAwB,CACxC;CACA,CAAC,+BAA+B,EAAE,YAAY,iBAAiB,CAAC;CAChE,CAAC,iCAAiC,EAAE,YAAY,mBAAmB,CAAC;CACpE,CAAC,0BAA0B,EAAE,YAAY,aAAa,CAAC;CACvD,CAAC,4BAA4B,EAAE,YAAY,cAAc,CAAC;CAC1D,CACE,4CACA,EAAE,YAAY,0BAA0B,CAC1C;CACA,CACE,qDACA,EAAE,YAAY,6BAA6B,CAC7C;CACA,CACE,qCACA;EACE,YAAY;EAEZ,iBAAiB,MAAe,IAAI,SAAS;CAC/C,CACF;AACF,CAAC;;;;;;AAOD,SAAS,iCACP,KACmB;CACnB,MAAM,SAAS,EAAE,GAAG,IAAI;CACxB,KAAK,MAAM,CACT,QACA,EAAE,YAAY,qBACX,8BACH,IAAI,IAAI,YAAY,KAAA,GAAW;EAC7B,MAAM,SAAS,WAAW,EAAE,MAAM,WAAW,CAAC;EAC9C,OAAO,UAAU,iBACb,eAAe,IAAI,OAAO,IAC1B,IAAI;EACR,OAAO,OAAO;CAChB;CAEF,OAAO;AACT;AAEA,eAAsB,UACpB,UACA,eAAe,mBACK;CACpB,MAAM,MAAM,WAAW,QAAQ;CAC/B,MAAM,SAAS,MAAM,uBAAuB,KAAK,YAAY;CAE7D,MAAM,UAAU,WAAW;CAC3B,OAAO,cAAc,CAAC;CAEtB,KAAK,MAAM,UAAU,SAAS;EAC5B,IAAI,OAAO,QAAQ,OACjB;EAGF,MAAM,UAAU,WAAW,MAAM;EACjC,MAAM,SAAS,IAAI;EACnB,IAAI,CAAC,QACH;EAGF,IAAI,OAAO,SAAS,WAAW,OAAO,YAAY,UAChD,IAAI;GACF,MAAM,SAAS,MAAM,MAAM,MAAM;GACjC,IAAI,QAAQ,MAAM,GAEhB,OAAO,OAAO,QAAQ;QAEtB,OAAO,MACL;IAAE,KAAK;IAAQ;GAAQ,GACvB,8BACF;EAEJ,QAAQ;GACN,OAAO,MACL;IAAE,KAAK;IAAQ;GAAQ,GACvB,sCACF;EACF;OACK;GACL,MAAM,SAAS,UAAU,OAAO;GAChC,IAAI;IAEF,OAAO,OAAO,QAAQ,OAAO,MAAM;GACrC,SAAS,GAAG;IACV,MAAM,IAAI,MAAM,GAAG,QAAQ,gBAAgB,GAAG;GAChD;GAEA,IAAI,OAAO,SAAS,UAAU;IAC5B,IAAK,OAAO,OAAO,UAAqB,QAAQ;KAC9C,OAAO,KAAK,qDAAqD;KACjE,OAAO,OAAO,QAAQ;IACxB,OAAO,IAAK,OAAO,OAAO,UAAqB,SAAS;KACtD,OAAO,KAAK,qDAAqD;KACjE,OAAO,OAAO,OAAO;IACvB,OAAO,IAAK,OAAO,OAAO,UAAqB,QAC7C,OAAO,OAAO,OAAO;GAEzB;GAEA,IAAI,OAAO,SAAS,iBAAiB;IACnC,IAAK,OAAO,OAAO,UAAqB,QAAQ;KAC9C,OAAO,KACL,gEACF;KACA,OAAO,OAAO,QAAQ;IACxB,OAAO,IAAK,OAAO,OAAO,UAAqB,SAAS;KACtD,OAAO,KACL,gEACF;KACA,OAAO,OAAO,QAAQ;IACxB;GACF;GAEA,IAAI,OAAO,SAAS,kBAAkB;IACpC,IAAK,OAAO,OAAO,UAAqB,QAAQ;KAC9C,OAAO,KACL,gEACF;KACA,OAAO,OAAO,QAAQ;IACxB,OAAO,IAAK,OAAO,OAAO,UAAqB,SAAS;KACtD,OAAO,KACL,iEACF;KACA,OAAO,OAAO,QAAQ;IACxB;GACF;EACF;CACF;CAEA,MAAM,iBAAiB,IAAI,oBAAoB,IAAI;CACnD,IAAI,gBAAgB;EAClB,OAAO,MAAM,qDAAqD;EAClE,OAAO,UAAU,KAAK;GACpB,UAAU;GACV,WAAW;GACX,OAAO;EACT,CAAC;CACH;CAeA,KAAK,MAAM,OAAO;EAXhB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAG6B,GAC7B,OAAO,IAAI;CAGb,OAAO;AACT;AAEA,SAAgB,WAAW,UAAgD;CACzE,IAAI,MAAM,kBAAkB,UAAU,SAAS,UAAU;CACzD,MAAM,iCAAiC,GAAG;CAC1C,MAAM,cAAc,GAAG;CAEvB,OAAO,oBAAoB,GAAG;AAChC;AAEA,eAAsB,uBACpB,KACA,cACoB;CACpB,IAAI,CAAC,IAAI,eACP,OAAO,CAAC;CAGV,IAAI;EACF,MAAM,SAAS,UACb,IAAI,eACJ,GAAG,aAAa,WAClB;EACA,OAAO,MAAM,EAAE,OAAO,GAAG,0BAA0B,cAAc;EAEjE,OAAO,MAAM,yBAAyB,QAAQ,GAAG,cAAc;CACjE,SAAS,KAAK;EACZ,OAAO,MACL;GAAE;GAAK;EAAa,GACpB,6CACF;EACA,QAAQ,KAAK,CAAC;CAChB;AACF"}
|
|
1
|
+
{"version":3,"file":"env.js","names":[],"sources":["../../../../../lib/workers/global/config/parse/env.ts"],"sourcesContent":["import { isArray } from '@sindresorhus/is';\nimport JSON5 from 'json5';\nimport { getEnvName } from '../../../../config/options/env.ts';\nimport { getOptions } from '../../../../config/options/index.ts';\nimport type { AllConfig } from '../../../../config/types.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport { parseJson } from '../../../../util/common.ts';\nimport { coersions } from './coersions.ts';\nimport { migrateAndValidateConfig } from './util.ts';\n\nfunction normalizePrefixes(\n env: NodeJS.ProcessEnv,\n prefix: string | undefined,\n): NodeJS.ProcessEnv {\n const result = { ...env };\n if (prefix) {\n for (const [key, val] of Object.entries(result)) {\n if (key.startsWith(prefix)) {\n const newKey = key.replace(prefix, 'RENOVATE_');\n result[newKey] = val;\n delete result[key];\n }\n }\n }\n return result;\n}\n\nconst renameKeys = {\n aliases: 'registryAliases',\n azureAutoComplete: 'platformAutomerge', // migrate: azureAutoComplete\n gitLabAutomerge: 'platformAutomerge', // migrate: gitLabAutomerge\n mergeConfidenceApiBaseUrl: 'mergeConfidenceEndpoint',\n mergeConfidenceSupportedDatasources: 'mergeConfidenceDatasources',\n allowedPostUpgradeCommands: 'allowedCommands',\n baseBranches: 'baseBranchPatterns',\n};\n\nfunction renameEnvKeys(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const result = { ...env };\n for (const [from, to] of Object.entries(renameKeys)) {\n const fromKey = getEnvName({ name: from });\n const toKey = getEnvName({ name: to });\n if (env[fromKey]) {\n result[toKey] = env[fromKey];\n delete result[fromKey];\n }\n }\n return result;\n}\n\nconst migratedKeysWithValues = [\n {\n oldName: 'recreateClosed',\n newName: 'recreateWhen',\n from: 'true',\n to: 'always',\n },\n {\n oldName: 'recreateClosed',\n newName: 'recreateWhen',\n from: 'false',\n to: 'auto',\n },\n];\n\nfunction massageEnvKeyValues(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const result = { ...env };\n for (const { oldName, newName, from, to } of migratedKeysWithValues) {\n const key = getEnvName({ name: oldName });\n if (env[key] !== undefined && result[key] === from) {\n delete result[key];\n result[getEnvName({ name: newName })] = to;\n }\n }\n return result;\n}\n\ninterface ConvertedExperimentalEnvVar {\n optionName: string;\n // Normalize the raw env var value before passing it through, if needed.\n normalizeValue?: (value: string) => string;\n}\n\n// Maps RENOVATE_X_ env vars that have been promoted to regular config options\n// to the option name they now correspond to.\nexport const convertedExperimentalEnvVars: ReadonlyMap<\n string,\n ConvertedExperimentalEnvVar\n> = new Map([\n ['RENOVATE_X_AUTODISCOVER_REPO_SORT', { optionName: 'autodiscoverRepoSort' }],\n [\n 'RENOVATE_X_AUTODISCOVER_REPO_ORDER',\n { optionName: 'autodiscoverRepoOrder' },\n ],\n ['RENOVATE_X_DOCKER_MAX_PAGES', { optionName: 'dockerMaxPages' }],\n ['RENOVATE_X_DELETE_CONFIG_FILE', { optionName: 'deleteConfigFile' }],\n ['RENOVATE_X_S3_ENDPOINT', { optionName: 's3Endpoint' }],\n ['RENOVATE_X_S3_PATH_STYLE', { optionName: 's3PathStyle' }],\n [\n 'RENOVATE_X_MERGE_CONFIDENCE_API_BASE_URL',\n { optionName: 'mergeConfidenceEndpoint' },\n ],\n [\n 'RENOVATE_X_MERGE_CONFIDENCE_SUPPORTED_DATASOURCES',\n { optionName: 'mergeConfidenceDatasources' },\n ],\n [\n 'RENOVATE_X_REPO_CACHE_FORCE_LOCAL',\n {\n optionName: 'repositoryCacheForceLocal',\n // The old env var was treated as a flag: any non-empty value meant true.\n normalizeValue: (v: string) => (v ? 'true' : v),\n },\n ],\n]);\n\n/**\n * Massages the experimental env vars which have been converted to config options\n *\n * e.g. RENOVATE_X_AUTODISCOVER_REPO_SORT -> RENOVATE_AUTODISCOVER_REPO_SORT\n */\nfunction massageConvertedExperimentalVars(\n env: NodeJS.ProcessEnv,\n): NodeJS.ProcessEnv {\n const result = { ...env };\n for (const [\n oldKey,\n { optionName, normalizeValue },\n ] of convertedExperimentalEnvVars) {\n if (env[oldKey] !== undefined) {\n const newKey = getEnvName({ name: optionName });\n result[newKey] = normalizeValue\n ? normalizeValue(env[oldKey])\n : env[oldKey];\n delete result[oldKey];\n }\n }\n return result;\n}\n\nexport async function getConfig(\n inputEnv: NodeJS.ProcessEnv,\n configEnvKey = 'RENOVATE_CONFIG',\n): Promise<AllConfig> {\n const env = prepareEnv(inputEnv);\n const config = await parseAndValidateOrExit(env, configEnvKey);\n\n const options = getOptions();\n config.hostRules ??= [];\n\n for (const option of options) {\n if (option.env === false) {\n continue;\n }\n\n const envName = getEnvName(option);\n const envVal = env[envName];\n if (!envVal) {\n continue;\n }\n\n if (option.type === 'array' && option.subType === 'object') {\n try {\n const parsed = JSON5.parse(envVal);\n if (isArray(parsed)) {\n // lists of objects (`hostRules`, `customManagers`, both mergeable) extend\n // the ones from RENOVATE_CONFIG instead of replacing them\n const existing: unknown = config[option.name as keyof AllConfig];\n // @ts-expect-error -- type can't be narrowed\n config[option.name] = isArray(existing)\n ? [...existing, ...parsed]\n : parsed;\n } else {\n logger.debug(\n { val: envVal, envName },\n 'Could not parse object array',\n );\n }\n } catch {\n logger.debug(\n { val: envVal, envName },\n 'Could not parse environment variable',\n );\n }\n } else {\n const coerce = coersions[option.type];\n try {\n // @ts-expect-error -- type can't be narrowed\n config[option.name] = coerce(envVal);\n } catch (e) {\n throw new Error(`${envName} was invalid: ${e}`);\n }\n\n if (option.name === 'dryRun') {\n if ((config[option.name] as string) === 'true') {\n logger.warn('env config dryRun property has been changed to full');\n config[option.name] = 'full';\n } else if ((config[option.name] as string) === 'false') {\n logger.warn('env config dryRun property has been changed to null');\n delete config[option.name];\n } else if ((config[option.name] as string) === 'null') {\n delete config[option.name];\n }\n }\n\n if (option.name === 'requireConfig') {\n if ((config[option.name] as string) === 'true') {\n logger.warn(\n 'env config requireConfig property has been changed to required',\n );\n config[option.name] = 'required';\n } else if ((config[option.name] as string) === 'false') {\n logger.warn(\n 'env config requireConfig property has been changed to optional',\n );\n config[option.name] = 'optional';\n }\n }\n\n if (option.name === 'platformCommit') {\n if ((config[option.name] as string) === 'true') {\n logger.warn(\n 'env config platformCommit property has been changed to enabled',\n );\n config[option.name] = 'enabled';\n } else if ((config[option.name] as string) === 'false') {\n logger.warn(\n 'env config platformCommit property has been changed to disabled',\n );\n config[option.name] = 'disabled';\n }\n }\n }\n }\n\n const githubComToken = env.GITHUB_COM_TOKEN ?? env.RENOVATE_GITHUB_COM_TOKEN;\n if (githubComToken) {\n logger.debug(`Converting GITHUB_COM_TOKEN into a global host rule`);\n config.hostRules.push({\n hostType: 'github',\n matchHost: 'github.com',\n token: githubComToken,\n });\n }\n\n // These env vars are deprecated and deleted to make sure they're not used\n const unsupportedEnv = [\n 'BITBUCKET_TOKEN',\n 'BITBUCKET_USERNAME',\n 'BITBUCKET_PASSWORD',\n 'GITHUB_ENDPOINT',\n 'GITHUB_TOKEN',\n 'GITLAB_ENDPOINT',\n 'GITLAB_TOKEN',\n 'VSTS_ENDPOINT',\n 'VSTS_TOKEN',\n ];\n\n for (const val of unsupportedEnv) {\n delete env[val];\n }\n\n return config;\n}\n\nexport function prepareEnv(inputEnv: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n let env = normalizePrefixes(inputEnv, inputEnv.ENV_PREFIX);\n env = massageConvertedExperimentalVars(env);\n env = renameEnvKeys(env);\n // massage the values of migrated configuration keys\n return massageEnvKeyValues(env);\n}\n\nexport async function parseAndValidateOrExit(\n env: NodeJS.ProcessEnv,\n configEnvKey: string,\n): Promise<AllConfig> {\n if (!env[configEnvKey]) {\n return {};\n }\n\n try {\n const config = parseJson(\n env[configEnvKey],\n `${configEnvKey}.env.json5`,\n ) as AllConfig;\n logger.debug({ config }, `Detected config in env ${configEnvKey}`);\n\n return await migrateAndValidateConfig(config, `${configEnvKey}`);\n } catch (err) {\n logger.fatal(\n { err, configEnvKey },\n 'Could not parse config environment variable',\n );\n process.exit(1);\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 44.146.
|
|
3
|
+
"title": "JSON schema for Renovate 44.146.2 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "44.146.
|
|
5
|
+
"x-renovate-version": "44.146.2",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"definitions": {
|