renovate 40.5.1 → 40.6.0

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.
Files changed (90) hide show
  1. package/dist/config/decrypt.js +5 -3
  2. package/dist/config/decrypt.js.map +1 -1
  3. package/dist/config-validator.js +4 -2
  4. package/dist/config-validator.js.map +1 -1
  5. package/dist/instrumentation/index.js +5 -3
  6. package/dist/instrumentation/index.js.map +1 -1
  7. package/dist/instrumentation/utils.js +3 -2
  8. package/dist/instrumentation/utils.js.map +1 -1
  9. package/dist/modules/datasource/docker/index.js +3 -2
  10. package/dist/modules/datasource/docker/index.js.map +1 -1
  11. package/dist/modules/datasource/git-refs/base.js +2 -1
  12. package/dist/modules/datasource/git-refs/base.js.map +1 -1
  13. package/dist/modules/datasource/go/goproxy-parser.js +6 -2
  14. package/dist/modules/datasource/go/goproxy-parser.js.map +1 -1
  15. package/dist/modules/datasource/go/index.js +4 -2
  16. package/dist/modules/datasource/go/index.js.map +1 -1
  17. package/dist/modules/datasource/go/releases-goproxy.js +3 -2
  18. package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
  19. package/dist/modules/datasource/npm/npmrc.js +2 -1
  20. package/dist/modules/datasource/npm/npmrc.js.map +1 -1
  21. package/dist/modules/datasource/nuget/v3.js +3 -2
  22. package/dist/modules/datasource/nuget/v3.js.map +1 -1
  23. package/dist/modules/datasource/pypi/index.js +2 -1
  24. package/dist/modules/datasource/pypi/index.js.map +1 -1
  25. package/dist/modules/manager/cargo/extract.js +2 -1
  26. package/dist/modules/manager/cargo/extract.js.map +1 -1
  27. package/dist/modules/manager/git-submodules/extract.js +2 -1
  28. package/dist/modules/manager/git-submodules/extract.js.map +1 -1
  29. package/dist/modules/manager/git-submodules/update.js +2 -1
  30. package/dist/modules/manager/git-submodules/update.js.map +1 -1
  31. package/dist/modules/manager/gomod/artifacts.js +8 -6
  32. package/dist/modules/manager/gomod/artifacts.js.map +1 -1
  33. package/dist/modules/manager/npm/post-update/yarn.js +7 -5
  34. package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
  35. package/dist/modules/manager/pip-compile/artifacts.js +6 -4
  36. package/dist/modules/manager/pip-compile/artifacts.js.map +1 -1
  37. package/dist/modules/manager/pip_requirements/common.js +2 -1
  38. package/dist/modules/manager/pip_requirements/common.js.map +1 -1
  39. package/dist/modules/manager/poetry/schema.js +2 -1
  40. package/dist/modules/manager/poetry/schema.js.map +1 -1
  41. package/dist/modules/manager/pre-commit/index.js +2 -1
  42. package/dist/modules/manager/pre-commit/index.js.map +1 -1
  43. package/dist/modules/platform/bitbucket-server/index.js +4 -2
  44. package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
  45. package/dist/modules/platform/codecommit/codecommit-client.js +7 -5
  46. package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
  47. package/dist/modules/platform/codecommit/index.js +7 -5
  48. package/dist/modules/platform/codecommit/index.js.map +1 -1
  49. package/dist/modules/platform/gitea/index.js +4 -2
  50. package/dist/modules/platform/gitea/index.js.map +1 -1
  51. package/dist/modules/platform/github/index.js +2 -1
  52. package/dist/modules/platform/github/index.js.map +1 -1
  53. package/dist/modules/platform/gitlab/index.js +13 -8
  54. package/dist/modules/platform/gitlab/index.js.map +1 -1
  55. package/dist/util/cache/package/index.js +2 -1
  56. package/dist/util/cache/package/index.js.map +1 -1
  57. package/dist/util/cache/repository/impl/s3.js +2 -1
  58. package/dist/util/cache/repository/impl/s3.js.map +1 -1
  59. package/dist/util/env.d.ts +6 -0
  60. package/dist/util/env.js +13 -0
  61. package/dist/util/env.js.map +1 -1
  62. package/dist/util/exec/common.js +2 -1
  63. package/dist/util/exec/common.js.map +1 -1
  64. package/dist/util/exec/containerbase.js +2 -1
  65. package/dist/util/exec/containerbase.js.map +1 -1
  66. package/dist/util/exec/env.js +7 -5
  67. package/dist/util/exec/env.js.map +1 -1
  68. package/dist/util/git/auth.js +4 -2
  69. package/dist/util/git/auth.js.map +1 -1
  70. package/dist/util/git/error.js +2 -1
  71. package/dist/util/git/error.js.map +1 -1
  72. package/dist/util/git/index.js +3 -2
  73. package/dist/util/git/index.js.map +1 -1
  74. package/dist/util/http/github.js +4 -3
  75. package/dist/util/http/github.js.map +1 -1
  76. package/dist/util/http/gitlab.js +2 -1
  77. package/dist/util/http/gitlab.js.map +1 -1
  78. package/dist/util/http/http.js +2 -1
  79. package/dist/util/http/http.js.map +1 -1
  80. package/dist/util/regex.js +3 -2
  81. package/dist/util/regex.js.map +1 -1
  82. package/dist/workers/global/config/parse/codespaces.js +7 -4
  83. package/dist/workers/global/config/parse/codespaces.js.map +1 -1
  84. package/dist/workers/global/index.js +7 -5
  85. package/dist/workers/global/index.js.map +1 -1
  86. package/dist/workers/repository/init/merge.js +1 -0
  87. package/dist/workers/repository/init/merge.js.map +1 -1
  88. package/dist/workers/repository/update/branch/get-updated.js +3 -4
  89. package/dist/workers/repository/update/branch/get-updated.js.map +1 -1
  90. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../lib/util/env.ts"],"names":[],"mappings":";;AAIA,oCAEC;AAED,oCAEC;AAED,gCAEC;AAED,gCAEC;;AAlBD,iEAA2C;AAE3C,IAAI,SAAS,GAA2B,EAAE,CAAC;AAE3C,SAAgB,YAAY,CAAC,MAA8B;IACzD,SAAS,GAAG,MAAM,CAAC;AACrB,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,UAAU,CAAC,MAA0C;IACnE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC","sourcesContent":["import * as memCache from './cache/memory';\n\nlet customEnv: Record<string, string> = {};\n\nexport function setCustomEnv(envObj: Record<string, string>): void {\n customEnv = envObj;\n}\n\nexport function getCustomEnv(): Record<string, string> {\n return customEnv;\n}\n\nexport function setUserEnv(envObj: Record<string, string> | undefined): void {\n memCache.set('userEnv', envObj);\n}\n\nexport function getUserEnv(): Record<string, string> {\n return memCache.get('userEnv') ?? {};\n}\n"]}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../lib/util/env.ts"],"names":[],"mappings":";;AAIA,oCAEC;AAED,oCAEC;AAED,gCAEC;AAED,gCAEC;AAOD,wBAMC;;AA/BD,iEAA2C;AAE3C,IAAI,SAAS,GAA2B,EAAE,CAAC;AAE3C,SAAgB,YAAY,CAAC,MAA8B;IACzD,SAAS,GAAG,MAAM,CAAC;AACrB,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,UAAU,CAAC,MAA0C;IACnE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,SAAgB,MAAM;IACpB,OAAO;QACL,GAAG,OAAO,CAAC,GAAG;QACd,GAAG,YAAY,EAAE;QACjB,GAAG,UAAU,EAAE;KAChB,CAAC;AACJ,CAAC","sourcesContent":["import * as memCache from './cache/memory';\n\nlet customEnv: Record<string, string> = {};\n\nexport function setCustomEnv(envObj: Record<string, string>): void {\n customEnv = envObj;\n}\n\nexport function getCustomEnv(): Record<string, string> {\n return customEnv;\n}\n\nexport function setUserEnv(envObj: Record<string, string> | undefined): void {\n memCache.set('userEnv', envObj);\n}\n\nexport function getUserEnv(): Record<string, string> {\n return memCache.get('userEnv') ?? {};\n}\n\n/**\n * Combination of process.env, customEnvVariables and user configured env\n *\n * Precedence: userEnv > customEnvVariables > process.env\n */\nexport function getEnv(): Record<string, string | undefined> {\n return {\n ...process.env,\n ...getCustomEnv(),\n ...getUserEnv(),\n };\n}\n"]}
@@ -5,6 +5,7 @@ exports.exec = exec;
5
5
  const tslib_1 = require("tslib");
6
6
  const node_child_process_1 = require("node:child_process");
7
7
  const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
8
+ const env_1 = require("../env");
8
9
  const exec_error_1 = require("./exec-error");
9
10
  // https://man7.org/linux/man-pages/man7/signal.7.html#NAME
10
11
  // Non TERM/CORE signals
@@ -120,7 +121,7 @@ function exec(cmd, opts) {
120
121
  }
121
122
  function kill(cp, signal) {
122
123
  try {
123
- if (cp.pid && process.env.RENOVATE_X_EXEC_GPID_HANDLE) {
124
+ if (cp.pid && (0, env_1.getEnv)().RENOVATE_X_EXEC_GPID_HANDLE) {
124
125
  /**
125
126
  * If `pid` is negative, but not `-1`, signal shall be sent to all processes
126
127
  * (excluding an unspecified set of system processes),
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../lib/util/exec/common.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChildProcess } from 'node:child_process';\nimport { spawn } from 'node:child_process';\nimport type { Readable } from 'node:stream';\nimport is from '@sindresorhus/is';\nimport type { ExecErrorData } from './exec-error';\nimport { ExecError } from './exec-error';\nimport type { DataListener, ExecResult, RawExecOptions } from './types';\n\n// https://man7.org/linux/man-pages/man7/signal.7.html#NAME\n// Non TERM/CORE signals\n// The following is step 3. in https://github.com/renovatebot/renovate/issues/16197#issuecomment-1171423890\nconst NONTERM = [\n 'SIGCHLD',\n 'SIGCLD',\n 'SIGCONT',\n 'SIGSTOP',\n 'SIGTSTP',\n 'SIGTTIN',\n 'SIGTTOU',\n 'SIGURG',\n 'SIGWINCH',\n];\n\nconst encoding = 'utf8';\n\nfunction stringify(list: Buffer[]): string {\n return Buffer.concat(list).toString(encoding);\n}\n\nfunction initStreamListeners(\n cp: ChildProcess,\n opts: RawExecOptions & { maxBuffer: number },\n): [Buffer[], Buffer[]] {\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n let stdoutLen = 0;\n let stderrLen = 0;\n\n registerDataListeners(cp.stdout, opts.outputListeners?.stdout);\n registerDataListeners(cp.stderr, opts.outputListeners?.stderr);\n\n cp.stdout?.on('data', (chunk: Buffer) => {\n // process.stdout.write(data.toString());\n const len = Buffer.byteLength(chunk, encoding);\n stdoutLen += len;\n if (stdoutLen > opts.maxBuffer) {\n cp.emit('error', new Error('stdout maxBuffer exceeded'));\n } else {\n stdout.push(chunk);\n }\n });\n\n cp.stderr?.on('data', (chunk: Buffer) => {\n // process.stderr.write(data.toString());\n const len = Buffer.byteLength(chunk, encoding);\n stderrLen += len;\n if (stderrLen > opts.maxBuffer) {\n cp.emit('error', new Error('stderr maxBuffer exceeded'));\n } else {\n stderr.push(chunk);\n }\n });\n return [stdout, stderr];\n}\n\nfunction registerDataListeners(\n readable: Readable | null,\n dataListeners: DataListener[] | undefined,\n): void {\n if (is.nullOrUndefined(readable) || is.nullOrUndefined(dataListeners)) {\n return;\n }\n\n for (const listener of dataListeners) {\n readable.on('data', listener);\n }\n}\n\nexport function exec(cmd: string, opts: RawExecOptions): Promise<ExecResult> {\n return new Promise((resolve, reject) => {\n const maxBuffer = opts.maxBuffer ?? 10 * 1024 * 1024; // Set default max buffer size to 10MB\n const cp = spawn(cmd, {\n ...opts,\n // force detached on non WIN platforms\n // https://github.com/nodejs/node/issues/21825#issuecomment-611328888\n detached: process.platform !== 'win32',\n shell: typeof opts.shell === 'string' ? opts.shell : true, // force shell\n });\n\n // handle streams\n const [stdout, stderr] = initStreamListeners(cp, {\n ...opts,\n maxBuffer,\n });\n\n // handle process events\n cp.on('error', (error) => {\n kill(cp, 'SIGTERM');\n // rethrowing, use originally emitted error message\n reject(new ExecError(error.message, rejectInfo(), error));\n });\n\n cp.on('exit', (code: number, signal: NodeJS.Signals) => {\n if (NONTERM.includes(signal)) {\n return;\n }\n if (signal) {\n kill(cp, signal);\n reject(\n new ExecError(`Command failed: ${cmd}\\nInterrupted by ${signal}`, {\n ...rejectInfo(),\n signal,\n }),\n );\n return;\n }\n if (code !== 0) {\n reject(\n new ExecError(`Command failed: ${cmd}\\n${stringify(stderr)}`, {\n ...rejectInfo(),\n exitCode: code,\n }),\n );\n return;\n }\n resolve({\n stderr: stringify(stderr),\n stdout: stringify(stdout),\n });\n });\n\n function rejectInfo(): ExecErrorData {\n return {\n cmd: cp.spawnargs.join(' '),\n options: opts,\n stdout: stringify(stdout),\n stderr: stringify(stderr),\n };\n }\n });\n}\n\nfunction kill(cp: ChildProcess, signal: NodeJS.Signals): boolean {\n try {\n if (cp.pid && process.env.RENOVATE_X_EXEC_GPID_HANDLE) {\n /**\n * If `pid` is negative, but not `-1`, signal shall be sent to all processes\n * (excluding an unspecified set of system processes),\n * whose process group ID (pgid) is equal to the absolute value of pid,\n * and for which the process has permission to send a signal.\n */\n return process.kill(-cp.pid, signal);\n } else {\n // destroying stdio is needed for unref to work\n // https://nodejs.org/api/child_process.html#subprocessunref\n // https://github.com/nodejs/node/blob/4d5ff25a813fd18939c9f76b17e36291e3ea15c3/lib/child_process.js#L412-L426\n cp.stderr?.destroy();\n cp.stdout?.destroy();\n cp.unref();\n return cp.kill(signal);\n }\n } catch {\n // cp is a single node tree, therefore -pid is invalid as there is no such pgid,\n return false;\n }\n}\n\nexport const rawExec: (\n cmd: string,\n opts: RawExecOptions,\n) => Promise<ExecResult> = exec;\n"]}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../lib/util/exec/common.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChildProcess } from 'node:child_process';\nimport { spawn } from 'node:child_process';\nimport type { Readable } from 'node:stream';\nimport is from '@sindresorhus/is';\nimport { getEnv } from '../env';\nimport type { ExecErrorData } from './exec-error';\nimport { ExecError } from './exec-error';\nimport type { DataListener, ExecResult, RawExecOptions } from './types';\n\n// https://man7.org/linux/man-pages/man7/signal.7.html#NAME\n// Non TERM/CORE signals\n// The following is step 3. in https://github.com/renovatebot/renovate/issues/16197#issuecomment-1171423890\nconst NONTERM = [\n 'SIGCHLD',\n 'SIGCLD',\n 'SIGCONT',\n 'SIGSTOP',\n 'SIGTSTP',\n 'SIGTTIN',\n 'SIGTTOU',\n 'SIGURG',\n 'SIGWINCH',\n];\n\nconst encoding = 'utf8';\n\nfunction stringify(list: Buffer[]): string {\n return Buffer.concat(list).toString(encoding);\n}\n\nfunction initStreamListeners(\n cp: ChildProcess,\n opts: RawExecOptions & { maxBuffer: number },\n): [Buffer[], Buffer[]] {\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n let stdoutLen = 0;\n let stderrLen = 0;\n\n registerDataListeners(cp.stdout, opts.outputListeners?.stdout);\n registerDataListeners(cp.stderr, opts.outputListeners?.stderr);\n\n cp.stdout?.on('data', (chunk: Buffer) => {\n // process.stdout.write(data.toString());\n const len = Buffer.byteLength(chunk, encoding);\n stdoutLen += len;\n if (stdoutLen > opts.maxBuffer) {\n cp.emit('error', new Error('stdout maxBuffer exceeded'));\n } else {\n stdout.push(chunk);\n }\n });\n\n cp.stderr?.on('data', (chunk: Buffer) => {\n // process.stderr.write(data.toString());\n const len = Buffer.byteLength(chunk, encoding);\n stderrLen += len;\n if (stderrLen > opts.maxBuffer) {\n cp.emit('error', new Error('stderr maxBuffer exceeded'));\n } else {\n stderr.push(chunk);\n }\n });\n return [stdout, stderr];\n}\n\nfunction registerDataListeners(\n readable: Readable | null,\n dataListeners: DataListener[] | undefined,\n): void {\n if (is.nullOrUndefined(readable) || is.nullOrUndefined(dataListeners)) {\n return;\n }\n\n for (const listener of dataListeners) {\n readable.on('data', listener);\n }\n}\n\nexport function exec(cmd: string, opts: RawExecOptions): Promise<ExecResult> {\n return new Promise((resolve, reject) => {\n const maxBuffer = opts.maxBuffer ?? 10 * 1024 * 1024; // Set default max buffer size to 10MB\n const cp = spawn(cmd, {\n ...opts,\n // force detached on non WIN platforms\n // https://github.com/nodejs/node/issues/21825#issuecomment-611328888\n detached: process.platform !== 'win32',\n shell: typeof opts.shell === 'string' ? opts.shell : true, // force shell\n });\n\n // handle streams\n const [stdout, stderr] = initStreamListeners(cp, {\n ...opts,\n maxBuffer,\n });\n\n // handle process events\n cp.on('error', (error) => {\n kill(cp, 'SIGTERM');\n // rethrowing, use originally emitted error message\n reject(new ExecError(error.message, rejectInfo(), error));\n });\n\n cp.on('exit', (code: number, signal: NodeJS.Signals) => {\n if (NONTERM.includes(signal)) {\n return;\n }\n if (signal) {\n kill(cp, signal);\n reject(\n new ExecError(`Command failed: ${cmd}\\nInterrupted by ${signal}`, {\n ...rejectInfo(),\n signal,\n }),\n );\n return;\n }\n if (code !== 0) {\n reject(\n new ExecError(`Command failed: ${cmd}\\n${stringify(stderr)}`, {\n ...rejectInfo(),\n exitCode: code,\n }),\n );\n return;\n }\n resolve({\n stderr: stringify(stderr),\n stdout: stringify(stdout),\n });\n });\n\n function rejectInfo(): ExecErrorData {\n return {\n cmd: cp.spawnargs.join(' '),\n options: opts,\n stdout: stringify(stdout),\n stderr: stringify(stderr),\n };\n }\n });\n}\n\nfunction kill(cp: ChildProcess, signal: NodeJS.Signals): boolean {\n try {\n if (cp.pid && getEnv().RENOVATE_X_EXEC_GPID_HANDLE) {\n /**\n * If `pid` is negative, but not `-1`, signal shall be sent to all processes\n * (excluding an unspecified set of system processes),\n * whose process group ID (pgid) is equal to the absolute value of pid,\n * and for which the process has permission to send a signal.\n */\n return process.kill(-cp.pid, signal);\n } else {\n // destroying stdio is needed for unref to work\n // https://nodejs.org/api/child_process.html#subprocessunref\n // https://github.com/nodejs/node/blob/4d5ff25a813fd18939c9f76b17e36291e3ea15c3/lib/child_process.js#L412-L426\n cp.stderr?.destroy();\n cp.stdout?.destroy();\n cp.unref();\n return cp.kill(signal);\n }\n } catch {\n // cp is a single node tree, therefore -pid is invalid as there is no such pgid,\n return false;\n }\n}\n\nexport const rawExec: (\n cmd: string,\n opts: RawExecOptions,\n) => Promise<ExecResult> = exec;\n"]}
@@ -22,6 +22,7 @@ const python_1 = require("../../modules/versioning/python");
22
22
  const ruby_1 = require("../../modules/versioning/ruby");
23
23
  const semver_1 = require("../../modules/versioning/semver");
24
24
  const semver_coerced_1 = require("../../modules/versioning/semver-coerced");
25
+ const env_1 = require("../env");
25
26
  const allToolConfig = {
26
27
  bun: {
27
28
  datasource: 'github-releases',
@@ -244,7 +245,7 @@ function supportsDynamicInstall(toolName) {
244
245
  return !!allToolConfig[toolName];
245
246
  }
246
247
  function isContainerbase() {
247
- return !!process.env.CONTAINERBASE;
248
+ return !!(0, env_1.getEnv)().CONTAINERBASE;
248
249
  }
249
250
  function isDynamicInstall(toolConstraints) {
250
251
  if (global_1.GlobalConfig.get('binarySource') !== 'install') {
@@ -1 +1 @@
1
- {"version":3,"file":"containerbase.js","sourceRoot":"","sources":["../../../lib/util/exec/containerbase.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport { GlobalConfig } from '../../config/global';\nimport { logger } from '../../logger';\nimport type { ReleaseResult } from '../../modules/datasource';\nimport * as allVersioning from '../../modules/versioning';\nimport { id as composerVersioningId } from '../../modules/versioning/composer';\nimport { id as condaVersioningId } from '../../modules/versioning/conda';\nimport { id as gradleVersioningId } from '../../modules/versioning/gradle';\nimport { id as mavenVersioningId } from '../../modules/versioning/maven';\nimport { id as nodeVersioningId } from '../../modules/versioning/node';\nimport { id as npmVersioningId } from '../../modules/versioning/npm';\nimport { id as pep440VersioningId } from '../../modules/versioning/pep440';\nimport { id as pythonVersioningId } from '../../modules/versioning/python';\nimport { id as rubyVersioningId } from '../../modules/versioning/ruby';\nimport { id as semverVersioningId } from '../../modules/versioning/semver';\nimport { id as semverCoercedVersioningId } from '../../modules/versioning/semver-coerced';\nimport type { Opt, ToolConfig, ToolConstraint } from './types';\n\nconst allToolConfig: Record<string, ToolConfig> = {\n bun: {\n datasource: 'github-releases',\n packageName: 'oven-sh/bun',\n extractVersion: '^bun-v(?<version>.*)$',\n versioning: npmVersioningId,\n },\n bundler: {\n datasource: 'rubygems',\n packageName: 'bundler',\n versioning: rubyVersioningId,\n },\n cocoapods: {\n datasource: 'rubygems',\n packageName: 'cocoapods',\n versioning: rubyVersioningId,\n },\n composer: {\n datasource: 'github-releases',\n packageName: 'containerbase/composer-prebuild',\n versioning: composerVersioningId,\n },\n copier: {\n datasource: 'pypi',\n packageName: 'copier',\n versioning: pep440VersioningId,\n },\n corepack: {\n datasource: 'npm',\n packageName: 'corepack',\n versioning: npmVersioningId,\n },\n devbox: {\n datasource: 'github-releases',\n packageName: 'jetify-com/devbox',\n versioning: semverVersioningId,\n },\n dotnet: {\n datasource: 'dotnet-version',\n packageName: 'dotnet-sdk',\n versioning: semverVersioningId,\n },\n erlang: {\n datasource: 'github-releases',\n packageName: 'containerbase/erlang-prebuild',\n versioning: semverCoercedVersioningId,\n },\n elixir: {\n datasource: 'github-releases',\n packageName: 'elixir-lang/elixir',\n versioning: semverVersioningId,\n },\n flux: {\n datasource: 'github-releases',\n packageName: 'fluxcd/flux2',\n versioning: semverVersioningId,\n },\n gleam: {\n datasource: 'github-releases',\n packageName: 'gleam-lang/gleam',\n versioning: semverVersioningId,\n },\n golang: {\n datasource: 'github-releases',\n packageName: 'containerbase/golang-prebuild',\n versioning: npmVersioningId,\n },\n gradle: {\n datasource: 'gradle-version',\n packageName: 'gradle',\n versioning: gradleVersioningId,\n },\n hashin: {\n datasource: 'pypi',\n packageName: 'hashin',\n versioning: pep440VersioningId,\n },\n helm: {\n datasource: 'github-releases',\n packageName: 'helm/helm',\n versioning: semverVersioningId,\n },\n helmfile: {\n datasource: 'github-releases',\n packageName: 'helmfile/helmfile',\n versioning: semverVersioningId,\n },\n java: {\n datasource: 'java-version',\n packageName: 'java',\n versioning: npmVersioningId,\n },\n /* not used in Renovate */\n 'java-maven': {\n datasource: 'java-version',\n packageName: 'java',\n versioning: mavenVersioningId,\n },\n jb: {\n datasource: 'github-releases',\n packageName: 'jsonnet-bundler/jsonnet-bundler',\n versioning: semverVersioningId,\n },\n kustomize: {\n datasource: 'github-releases',\n packageName: 'kubernetes-sigs/kustomize',\n extractVersion: '^kustomize/v(?<version>.*)$',\n versioning: semverVersioningId,\n },\n maven: {\n datasource: 'github-releases',\n packageName: 'containerbase/maven-prebuild',\n versioning: mavenVersioningId,\n },\n nix: {\n datasource: 'github-releases',\n packageName: 'containerbase/nix-prebuild',\n versioning: semverVersioningId,\n },\n node: {\n datasource: 'github-releases',\n packageName: 'containerbase/node-prebuild',\n versioning: nodeVersioningId,\n },\n npm: {\n datasource: 'npm',\n packageName: 'npm',\n hash: true,\n versioning: npmVersioningId,\n },\n pdm: {\n datasource: 'github-releases',\n packageName: 'pdm-project/pdm',\n versioning: semverVersioningId,\n },\n php: {\n datasource: 'github-releases',\n packageName: 'containerbase/php-prebuild',\n versioning: composerVersioningId,\n },\n 'pip-tools': {\n datasource: 'pypi',\n packageName: 'pip-tools',\n versioning: pep440VersioningId,\n },\n pipenv: {\n datasource: 'pypi',\n packageName: 'pipenv',\n versioning: pep440VersioningId,\n },\n pnpm: {\n datasource: 'npm',\n packageName: 'pnpm',\n versioning: npmVersioningId,\n },\n pixi: {\n datasource: 'github-releases',\n packageName: 'prefix-dev/pixi',\n versioning: condaVersioningId,\n extractVersion: '^v(?<version>.*)$',\n },\n poetry: {\n datasource: 'pypi',\n packageName: 'poetry',\n versioning: pep440VersioningId,\n },\n python: {\n datasource: 'github-releases',\n packageName: 'containerbase/python-prebuild',\n versioning: pythonVersioningId,\n },\n ruby: {\n datasource: 'github-releases',\n packageName: 'containerbase/ruby-prebuild',\n versioning: rubyVersioningId,\n },\n rust: {\n datasource: 'docker',\n packageName: 'rust',\n versioning: semverVersioningId,\n },\n uv: {\n datasource: 'pypi',\n packageName: 'uv',\n versioning: pep440VersioningId,\n },\n yarn: {\n datasource: 'npm',\n packageName: 'yarn',\n versioning: npmVersioningId,\n },\n 'yarn-slim': {\n datasource: 'npm',\n packageName: 'yarn',\n versioning: npmVersioningId,\n },\n dart: {\n datasource: 'dart-version',\n packageName: 'dart',\n versioning: npmVersioningId,\n },\n flutter: {\n datasource: 'github-releases',\n packageName: 'containerbase/flutter-prebuild',\n versioning: npmVersioningId,\n },\n vendir: {\n datasource: 'github-releases',\n packageName: 'carvel-dev/vendir',\n versioning: semverVersioningId,\n },\n};\n\nlet _getPkgReleases: Promise<typeof import('../../modules/datasource')> | null =\n null;\n\nasync function getPkgReleases(\n toolConfig: ToolConfig,\n): Promise<ReleaseResult | null> {\n _getPkgReleases ??= import('../../modules/datasource/index.js');\n const { getPkgReleases } = await _getPkgReleases;\n return getPkgReleases(toolConfig);\n}\n\nexport function supportsDynamicInstall(toolName: string): boolean {\n return !!allToolConfig[toolName];\n}\n\nexport function isContainerbase(): boolean {\n return !!process.env.CONTAINERBASE;\n}\n\nexport function isDynamicInstall(\n toolConstraints?: Opt<ToolConstraint[]>,\n): boolean {\n if (GlobalConfig.get('binarySource') !== 'install') {\n return false;\n }\n if (!isContainerbase()) {\n logger.debug('Falling back to binarySource=global');\n return false;\n }\n return (\n !toolConstraints ||\n toolConstraints.every((toolConstraint) =>\n supportsDynamicInstall(toolConstraint.toolName),\n )\n );\n}\n\nfunction isStable(\n version: string,\n versioningApi: allVersioning.VersioningApi,\n latest?: string,\n): boolean {\n if (!versioningApi.isStable(version)) {\n return false;\n }\n if (is.string(latest)) {\n if (versioningApi.isGreaterThan(version, latest)) {\n return false;\n }\n }\n return true;\n}\n\nexport async function resolveConstraint(\n toolConstraint: ToolConstraint,\n): Promise<string> {\n const { toolName } = toolConstraint;\n const toolConfig = allToolConfig[toolName];\n if (!toolConfig) {\n throw new Error(`Invalid tool to install: ${toolName}`);\n }\n\n const versioning = allVersioning.get(toolConfig.versioning);\n let constraint = toolConstraint.constraint;\n if (constraint) {\n if (versioning.isValid(constraint)) {\n if (versioning.isSingleVersion(constraint)) {\n return constraint.replace(/^=+/, '').trim();\n }\n } else {\n logger.warn(\n { toolName, constraint, versioning: toolConfig.versioning },\n 'Invalid tool constraint',\n );\n constraint = undefined;\n }\n }\n\n const pkgReleases = await getPkgReleases(toolConfig);\n const releases = pkgReleases?.releases ?? [];\n\n if (!releases?.length) {\n logger.warn({ toolConfig }, 'No tool releases found.');\n throw new Error('No tool releases found.');\n }\n\n const matchingReleases = releases.filter(\n (r) => !constraint || versioning.matches(r.version, constraint),\n );\n\n const stableMatchingVersion = matchingReleases\n .filter((r) => isStable(r.version, versioning, pkgReleases?.tags?.latest))\n .pop()?.version;\n if (stableMatchingVersion) {\n logger.debug(\n { toolName, constraint, resolvedVersion: stableMatchingVersion },\n 'Resolved stable matching version',\n );\n return stableMatchingVersion;\n }\n\n const unstableMatchingVersion = matchingReleases.pop()?.version;\n if (unstableMatchingVersion) {\n logger.debug(\n { toolName, constraint, resolvedVersion: unstableMatchingVersion },\n 'Resolved unstable matching version',\n );\n return unstableMatchingVersion;\n }\n\n const stableVersion = releases\n .filter((r) => isStable(r.version, versioning, pkgReleases?.tags?.latest))\n .pop()?.version;\n if (stableVersion) {\n logger.warn(\n { toolName, constraint, stableVersion },\n 'No matching tool versions found for constraint - using latest stable version',\n );\n }\n\n const highestVersion = releases.pop()!.version;\n logger.warn(\n { toolName, constraint, highestVersion },\n 'No matching or stable tool versions found - using an unstable version',\n );\n return highestVersion;\n}\n\nexport async function generateInstallCommands(\n toolConstraints: Opt<ToolConstraint[]>,\n): Promise<string[]> {\n const installCommands: string[] = [];\n if (toolConstraints?.length) {\n for (const toolConstraint of toolConstraints) {\n const toolVersion = await resolveConstraint(toolConstraint);\n const { toolName } = toolConstraint;\n const installCommand = `install-tool ${toolName} ${quote(toolVersion)}`;\n installCommands.push(installCommand);\n if (allToolConfig[toolName].hash) {\n installCommands.push(`hash -d ${toolName} 2>/dev/null || true`);\n }\n }\n }\n return installCommands;\n}\n"]}
1
+ {"version":3,"file":"containerbase.js","sourceRoot":"","sources":["../../../lib/util/exec/containerbase.ts"],"names":[],"mappings":";;AAoPA,wDAEC;AAED,0CAEC;AAED,4CAgBC;AAkBD,8CAyEC;AAED,0DAgBC;;AAzXD,kEAAkC;AAClC,iCAA8B;AAC9B,gDAAmD;AACnD,yCAAsC;AAEtC,gFAA0D;AAC1D,gEAA+E;AAC/E,0DAAyE;AACzE,4DAA2E;AAC3E,0DAAyE;AACzE,wDAAuE;AACvE,sDAAqE;AACrE,4DAA2E;AAC3E,4DAA2E;AAC3E,wDAAuE;AACvE,4DAA2E;AAC3E,4EAA0F;AAC1F,gCAAgC;AAGhC,MAAM,aAAa,GAA+B;IAChD,GAAG,EAAE;QACH,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,aAAa;QAC1B,cAAc,EAAE,uBAAuB;QACvC,UAAU,EAAE,QAAe;KAC5B;IACD,OAAO,EAAE;QACP,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAgB;KAC7B;IACD,SAAS,EAAE;QACT,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,SAAgB;KAC7B;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,iCAAiC;QAC9C,UAAU,EAAE,aAAoB;KACjC;IACD,MAAM,EAAE;QACN,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,QAAQ;QACrB,UAAU,EAAE,WAAkB;KAC/B;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,QAAe;KAC5B;IACD,MAAM,EAAE;QACN,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,mBAAmB;QAChC,UAAU,EAAE,WAAkB;KAC/B;IACD,MAAM,EAAE;QACN,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,YAAY;QACzB,UAAU,EAAE,WAAkB;KAC/B;IACD,MAAM,EAAE;QACN,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,+BAA+B;QAC5C,UAAU,EAAE,mBAAyB;KACtC;IACD,MAAM,EAAE;QACN,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,oBAAoB;QACjC,UAAU,EAAE,WAAkB;KAC/B;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,WAAkB;KAC/B;IACD,KAAK,EAAE;QACL,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,kBAAkB;QAC/B,UAAU,EAAE,WAAkB;KAC/B;IACD,MAAM,EAAE;QACN,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,+BAA+B;QAC5C,UAAU,EAAE,QAAe;KAC5B;IACD,MAAM,EAAE;QACN,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,QAAQ;QACrB,UAAU,EAAE,WAAkB;KAC/B;IACD,MAAM,EAAE;QACN,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,QAAQ;QACrB,UAAU,EAAE,WAAkB;KAC/B;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,WAAkB;KAC/B;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,mBAAmB;QAChC,UAAU,EAAE,WAAkB;KAC/B;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,QAAe;KAC5B;IACD,0BAA0B;IAC1B,YAAY,EAAE;QACZ,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,UAAiB;KAC9B;IACD,EAAE,EAAE;QACF,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,iCAAiC;QAC9C,UAAU,EAAE,WAAkB;KAC/B;IACD,SAAS,EAAE;QACT,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,2BAA2B;QACxC,cAAc,EAAE,6BAA6B;QAC7C,UAAU,EAAE,WAAkB;KAC/B;IACD,KAAK,EAAE;QACL,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,8BAA8B;QAC3C,UAAU,EAAE,UAAiB;KAC9B;IACD,GAAG,EAAE;QACH,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,4BAA4B;QACzC,UAAU,EAAE,WAAkB;KAC/B;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,6BAA6B;QAC1C,UAAU,EAAE,SAAgB;KAC7B;IACD,GAAG,EAAE;QACH,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,QAAe;KAC5B;IACD,GAAG,EAAE;QACH,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,iBAAiB;QAC9B,UAAU,EAAE,WAAkB;KAC/B;IACD,GAAG,EAAE;QACH,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,4BAA4B;QACzC,UAAU,EAAE,aAAoB;KACjC;IACD,WAAW,EAAE;QACX,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,WAAkB;KAC/B;IACD,MAAM,EAAE;QACN,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,QAAQ;QACrB,UAAU,EAAE,WAAkB;KAC/B;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,QAAe;KAC5B;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,iBAAiB;QAC9B,UAAU,EAAE,UAAiB;QAC7B,cAAc,EAAE,mBAAmB;KACpC;IACD,MAAM,EAAE;QACN,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,QAAQ;QACrB,UAAU,EAAE,WAAkB;KAC/B;IACD,MAAM,EAAE;QACN,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,+BAA+B;QAC5C,UAAU,EAAE,WAAkB;KAC/B;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,6BAA6B;QAC1C,UAAU,EAAE,SAAgB;KAC7B;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,WAAkB;KAC/B;IACD,EAAE,EAAE;QACF,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,WAAkB;KAC/B;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,QAAe;KAC5B;IACD,WAAW,EAAE;QACX,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,QAAe;KAC5B;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,QAAe;KAC5B;IACD,OAAO,EAAE;QACP,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,gCAAgC;QAC7C,UAAU,EAAE,QAAe;KAC5B;IACD,MAAM,EAAE;QACN,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,mBAAmB;QAChC,UAAU,EAAE,WAAkB;KAC/B;CACF,CAAC;AAEF,IAAI,eAAe,GACjB,IAAI,CAAC;AAEP,KAAK,UAAU,cAAc,CAC3B,UAAsB;IAEtB,eAAe,KAAK,MAAM,CAAC,mCAAmC,CAAC,CAAC;IAChE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,eAAe,CAAC;IACjD,OAAO,cAAc,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,sBAAsB,CAAC,QAAgB;IACrD,OAAO,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,eAAe;IAC7B,OAAO,CAAC,CAAC,IAAA,YAAM,GAAE,CAAC,aAAa,CAAC;AAClC,CAAC;AAED,SAAgB,gBAAgB,CAC9B,eAAuC;IAEvC,IAAI,qBAAY,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,eAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,CAAC,eAAe;QAChB,eAAe,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,EAAE,CACvC,sBAAsB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAChD,CACF,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CACf,OAAe,EACf,aAA0C,EAC1C,MAAe;IAEf,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,IAAI,aAAa,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,cAA8B;IAE9B,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;IACpC,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5D,IAAI,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IAC3C,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,IAAI,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,IAAI,CACT,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,EAC3D,yBAAyB,CAC1B,CAAC;YACF,UAAU,GAAG,SAAS,CAAC;QACzB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,WAAW,EAAE,QAAQ,IAAI,EAAE,CAAC;IAE7C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACtB,eAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,yBAAyB,CAAC,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAChE,CAAC;IAEF,MAAM,qBAAqB,GAAG,gBAAgB;SAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;SACzE,GAAG,EAAE,EAAE,OAAO,CAAC;IAClB,IAAI,qBAAqB,EAAE,CAAC;QAC1B,eAAM,CAAC,KAAK,CACV,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,qBAAqB,EAAE,EAChE,kCAAkC,CACnC,CAAC;QACF,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC;IAChE,IAAI,uBAAuB,EAAE,CAAC;QAC5B,eAAM,CAAC,KAAK,CACV,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,uBAAuB,EAAE,EAClE,oCAAoC,CACrC,CAAC;QACF,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;SACzE,GAAG,EAAE,EAAE,OAAO,CAAC;IAClB,IAAI,aAAa,EAAE,CAAC;QAClB,eAAM,CAAC,IAAI,CACT,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,EACvC,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,EAAG,CAAC,OAAO,CAAC;IAC/C,eAAM,CAAC,IAAI,CACT,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,EACxC,uEAAuE,CACxE,CAAC;IACF,OAAO,cAAc,CAAC;AACxB,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,eAAsC;IAEtC,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,eAAe,EAAE,MAAM,EAAE,CAAC;QAC5B,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAC5D,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;YACpC,MAAM,cAAc,GAAG,gBAAgB,QAAQ,IAAI,IAAA,aAAK,EAAC,WAAW,CAAC,EAAE,CAAC;YACxE,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACrC,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjC,eAAe,CAAC,IAAI,CAAC,WAAW,QAAQ,sBAAsB,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport { GlobalConfig } from '../../config/global';\nimport { logger } from '../../logger';\nimport type { ReleaseResult } from '../../modules/datasource';\nimport * as allVersioning from '../../modules/versioning';\nimport { id as composerVersioningId } from '../../modules/versioning/composer';\nimport { id as condaVersioningId } from '../../modules/versioning/conda';\nimport { id as gradleVersioningId } from '../../modules/versioning/gradle';\nimport { id as mavenVersioningId } from '../../modules/versioning/maven';\nimport { id as nodeVersioningId } from '../../modules/versioning/node';\nimport { id as npmVersioningId } from '../../modules/versioning/npm';\nimport { id as pep440VersioningId } from '../../modules/versioning/pep440';\nimport { id as pythonVersioningId } from '../../modules/versioning/python';\nimport { id as rubyVersioningId } from '../../modules/versioning/ruby';\nimport { id as semverVersioningId } from '../../modules/versioning/semver';\nimport { id as semverCoercedVersioningId } from '../../modules/versioning/semver-coerced';\nimport { getEnv } from '../env';\nimport type { Opt, ToolConfig, ToolConstraint } from './types';\n\nconst allToolConfig: Record<string, ToolConfig> = {\n bun: {\n datasource: 'github-releases',\n packageName: 'oven-sh/bun',\n extractVersion: '^bun-v(?<version>.*)$',\n versioning: npmVersioningId,\n },\n bundler: {\n datasource: 'rubygems',\n packageName: 'bundler',\n versioning: rubyVersioningId,\n },\n cocoapods: {\n datasource: 'rubygems',\n packageName: 'cocoapods',\n versioning: rubyVersioningId,\n },\n composer: {\n datasource: 'github-releases',\n packageName: 'containerbase/composer-prebuild',\n versioning: composerVersioningId,\n },\n copier: {\n datasource: 'pypi',\n packageName: 'copier',\n versioning: pep440VersioningId,\n },\n corepack: {\n datasource: 'npm',\n packageName: 'corepack',\n versioning: npmVersioningId,\n },\n devbox: {\n datasource: 'github-releases',\n packageName: 'jetify-com/devbox',\n versioning: semverVersioningId,\n },\n dotnet: {\n datasource: 'dotnet-version',\n packageName: 'dotnet-sdk',\n versioning: semverVersioningId,\n },\n erlang: {\n datasource: 'github-releases',\n packageName: 'containerbase/erlang-prebuild',\n versioning: semverCoercedVersioningId,\n },\n elixir: {\n datasource: 'github-releases',\n packageName: 'elixir-lang/elixir',\n versioning: semverVersioningId,\n },\n flux: {\n datasource: 'github-releases',\n packageName: 'fluxcd/flux2',\n versioning: semverVersioningId,\n },\n gleam: {\n datasource: 'github-releases',\n packageName: 'gleam-lang/gleam',\n versioning: semverVersioningId,\n },\n golang: {\n datasource: 'github-releases',\n packageName: 'containerbase/golang-prebuild',\n versioning: npmVersioningId,\n },\n gradle: {\n datasource: 'gradle-version',\n packageName: 'gradle',\n versioning: gradleVersioningId,\n },\n hashin: {\n datasource: 'pypi',\n packageName: 'hashin',\n versioning: pep440VersioningId,\n },\n helm: {\n datasource: 'github-releases',\n packageName: 'helm/helm',\n versioning: semverVersioningId,\n },\n helmfile: {\n datasource: 'github-releases',\n packageName: 'helmfile/helmfile',\n versioning: semverVersioningId,\n },\n java: {\n datasource: 'java-version',\n packageName: 'java',\n versioning: npmVersioningId,\n },\n /* not used in Renovate */\n 'java-maven': {\n datasource: 'java-version',\n packageName: 'java',\n versioning: mavenVersioningId,\n },\n jb: {\n datasource: 'github-releases',\n packageName: 'jsonnet-bundler/jsonnet-bundler',\n versioning: semverVersioningId,\n },\n kustomize: {\n datasource: 'github-releases',\n packageName: 'kubernetes-sigs/kustomize',\n extractVersion: '^kustomize/v(?<version>.*)$',\n versioning: semverVersioningId,\n },\n maven: {\n datasource: 'github-releases',\n packageName: 'containerbase/maven-prebuild',\n versioning: mavenVersioningId,\n },\n nix: {\n datasource: 'github-releases',\n packageName: 'containerbase/nix-prebuild',\n versioning: semverVersioningId,\n },\n node: {\n datasource: 'github-releases',\n packageName: 'containerbase/node-prebuild',\n versioning: nodeVersioningId,\n },\n npm: {\n datasource: 'npm',\n packageName: 'npm',\n hash: true,\n versioning: npmVersioningId,\n },\n pdm: {\n datasource: 'github-releases',\n packageName: 'pdm-project/pdm',\n versioning: semverVersioningId,\n },\n php: {\n datasource: 'github-releases',\n packageName: 'containerbase/php-prebuild',\n versioning: composerVersioningId,\n },\n 'pip-tools': {\n datasource: 'pypi',\n packageName: 'pip-tools',\n versioning: pep440VersioningId,\n },\n pipenv: {\n datasource: 'pypi',\n packageName: 'pipenv',\n versioning: pep440VersioningId,\n },\n pnpm: {\n datasource: 'npm',\n packageName: 'pnpm',\n versioning: npmVersioningId,\n },\n pixi: {\n datasource: 'github-releases',\n packageName: 'prefix-dev/pixi',\n versioning: condaVersioningId,\n extractVersion: '^v(?<version>.*)$',\n },\n poetry: {\n datasource: 'pypi',\n packageName: 'poetry',\n versioning: pep440VersioningId,\n },\n python: {\n datasource: 'github-releases',\n packageName: 'containerbase/python-prebuild',\n versioning: pythonVersioningId,\n },\n ruby: {\n datasource: 'github-releases',\n packageName: 'containerbase/ruby-prebuild',\n versioning: rubyVersioningId,\n },\n rust: {\n datasource: 'docker',\n packageName: 'rust',\n versioning: semverVersioningId,\n },\n uv: {\n datasource: 'pypi',\n packageName: 'uv',\n versioning: pep440VersioningId,\n },\n yarn: {\n datasource: 'npm',\n packageName: 'yarn',\n versioning: npmVersioningId,\n },\n 'yarn-slim': {\n datasource: 'npm',\n packageName: 'yarn',\n versioning: npmVersioningId,\n },\n dart: {\n datasource: 'dart-version',\n packageName: 'dart',\n versioning: npmVersioningId,\n },\n flutter: {\n datasource: 'github-releases',\n packageName: 'containerbase/flutter-prebuild',\n versioning: npmVersioningId,\n },\n vendir: {\n datasource: 'github-releases',\n packageName: 'carvel-dev/vendir',\n versioning: semverVersioningId,\n },\n};\n\nlet _getPkgReleases: Promise<typeof import('../../modules/datasource')> | null =\n null;\n\nasync function getPkgReleases(\n toolConfig: ToolConfig,\n): Promise<ReleaseResult | null> {\n _getPkgReleases ??= import('../../modules/datasource/index.js');\n const { getPkgReleases } = await _getPkgReleases;\n return getPkgReleases(toolConfig);\n}\n\nexport function supportsDynamicInstall(toolName: string): boolean {\n return !!allToolConfig[toolName];\n}\n\nexport function isContainerbase(): boolean {\n return !!getEnv().CONTAINERBASE;\n}\n\nexport function isDynamicInstall(\n toolConstraints?: Opt<ToolConstraint[]>,\n): boolean {\n if (GlobalConfig.get('binarySource') !== 'install') {\n return false;\n }\n if (!isContainerbase()) {\n logger.debug('Falling back to binarySource=global');\n return false;\n }\n return (\n !toolConstraints ||\n toolConstraints.every((toolConstraint) =>\n supportsDynamicInstall(toolConstraint.toolName),\n )\n );\n}\n\nfunction isStable(\n version: string,\n versioningApi: allVersioning.VersioningApi,\n latest?: string,\n): boolean {\n if (!versioningApi.isStable(version)) {\n return false;\n }\n if (is.string(latest)) {\n if (versioningApi.isGreaterThan(version, latest)) {\n return false;\n }\n }\n return true;\n}\n\nexport async function resolveConstraint(\n toolConstraint: ToolConstraint,\n): Promise<string> {\n const { toolName } = toolConstraint;\n const toolConfig = allToolConfig[toolName];\n if (!toolConfig) {\n throw new Error(`Invalid tool to install: ${toolName}`);\n }\n\n const versioning = allVersioning.get(toolConfig.versioning);\n let constraint = toolConstraint.constraint;\n if (constraint) {\n if (versioning.isValid(constraint)) {\n if (versioning.isSingleVersion(constraint)) {\n return constraint.replace(/^=+/, '').trim();\n }\n } else {\n logger.warn(\n { toolName, constraint, versioning: toolConfig.versioning },\n 'Invalid tool constraint',\n );\n constraint = undefined;\n }\n }\n\n const pkgReleases = await getPkgReleases(toolConfig);\n const releases = pkgReleases?.releases ?? [];\n\n if (!releases?.length) {\n logger.warn({ toolConfig }, 'No tool releases found.');\n throw new Error('No tool releases found.');\n }\n\n const matchingReleases = releases.filter(\n (r) => !constraint || versioning.matches(r.version, constraint),\n );\n\n const stableMatchingVersion = matchingReleases\n .filter((r) => isStable(r.version, versioning, pkgReleases?.tags?.latest))\n .pop()?.version;\n if (stableMatchingVersion) {\n logger.debug(\n { toolName, constraint, resolvedVersion: stableMatchingVersion },\n 'Resolved stable matching version',\n );\n return stableMatchingVersion;\n }\n\n const unstableMatchingVersion = matchingReleases.pop()?.version;\n if (unstableMatchingVersion) {\n logger.debug(\n { toolName, constraint, resolvedVersion: unstableMatchingVersion },\n 'Resolved unstable matching version',\n );\n return unstableMatchingVersion;\n }\n\n const stableVersion = releases\n .filter((r) => isStable(r.version, versioning, pkgReleases?.tags?.latest))\n .pop()?.version;\n if (stableVersion) {\n logger.warn(\n { toolName, constraint, stableVersion },\n 'No matching tool versions found for constraint - using latest stable version',\n );\n }\n\n const highestVersion = releases.pop()!.version;\n logger.warn(\n { toolName, constraint, highestVersion },\n 'No matching or stable tool versions found - using an unstable version',\n );\n return highestVersion;\n}\n\nexport async function generateInstallCommands(\n toolConstraints: Opt<ToolConstraint[]>,\n): Promise<string[]> {\n const installCommands: string[] = [];\n if (toolConstraints?.length) {\n for (const toolConstraint of toolConstraints) {\n const toolVersion = await resolveConstraint(toolConstraint);\n const { toolName } = toolConstraint;\n const installCommand = `install-tool ${toolName} ${quote(toolVersion)}`;\n installCommands.push(installCommand);\n if (allToolConfig[toolName].hash) {\n installCommands.push(`hash -d ${toolName} 2>/dev/null || true`);\n }\n }\n }\n return installCommands;\n}\n"]}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getChildProcessEnv = getChildProcessEnv;
4
4
  const global_1 = require("../../config/global");
5
+ const env_1 = require("../env");
5
6
  const basicEnvVars = [
6
7
  'HTTP_PROXY',
7
8
  'HTTPS_PROXY',
@@ -41,20 +42,21 @@ const basicEnvVars = [
41
42
  'COREPACK_ROOT',
42
43
  ];
43
44
  function getChildProcessEnv(customEnvVars = []) {
45
+ const combinedEnv = (0, env_1.getEnv)();
44
46
  const env = {};
45
47
  if (global_1.GlobalConfig.get('exposeAllEnv')) {
46
- return { ...process.env };
48
+ return { ...combinedEnv };
47
49
  }
48
50
  const envVars = [...basicEnvVars, ...customEnvVars];
49
51
  envVars.forEach((envVar) => {
50
- if (typeof process.env[envVar] !== 'undefined') {
51
- env[envVar] = process.env[envVar];
52
+ if (typeof combinedEnv[envVar] !== 'undefined') {
53
+ env[envVar] = combinedEnv[envVar];
52
54
  }
53
55
  });
54
56
  // Copy containerbase url replacements
55
- for (const key of Object.keys(process.env)) {
57
+ for (const key of Object.keys(combinedEnv)) {
56
58
  if (/^URL_REPLACE_\d+_(?:FROM|TO)$/.test(key)) {
57
- env[key] = process.env[key];
59
+ env[key] = combinedEnv[key];
58
60
  }
59
61
  }
60
62
  return env;
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../lib/util/exec/env.ts"],"names":[],"mappings":";;AAyCA,gDAqBC;AA9DD,gDAAmD;AAEnD,MAAM,YAAY,GAAG;IACnB,YAAY;IACZ,aAAa;IACb,UAAU;IACV,YAAY;IACZ,aAAa;IACb,UAAU;IACV,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,aAAa;IACb,mBAAmB;IACnB,kBAAkB;IAClB,8BAA8B;IAC9B,yEAAyE;IACzE,cAAc;IACd,eAAe;IACf,qBAAqB;IACrB,yCAAyC;IACzC,cAAc;IACd,mBAAmB;IACnB,SAAS;IACT,cAAc;IACd,+CAA+C;IAC/C,4BAA4B;IAC5B,yBAAyB;IACzB,wBAAwB;IACxB,8BAA8B;IAC9B,oCAAoC;IACpC,eAAe;IACf,yBAAyB;IACzB,uBAAuB;IACvB,oBAAoB;IACpB,uBAAuB;IACvB,uBAAuB;IACvB,eAAe;CAChB,CAAC;AAEF,SAAgB,kBAAkB,CAChC,gBAA0B,EAAE;IAE5B,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,IAAI,qBAAY,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5B,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,CAAC;IACpD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,sCAAsC;IACtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,IAAI,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import { GlobalConfig } from '../../config/global';\n\nconst basicEnvVars = [\n 'HTTP_PROXY',\n 'HTTPS_PROXY',\n 'NO_PROXY',\n 'http_proxy',\n 'https_proxy',\n 'no_proxy',\n 'HOME',\n 'PATH',\n 'LC_ALL',\n 'LANG',\n 'DOCKER_HOST',\n 'DOCKER_TLS_VERIFY',\n 'DOCKER_CERT_PATH',\n // Custom certificte variables\n // https://github.com/containerbase/base/blob/main/docs/custom-root-ca.md\n 'SSL_CERT_DIR',\n 'SSL_CERT_FILE',\n 'NODE_EXTRA_CA_CERTS',\n // Required for NuGet to work on Windows.\n 'PROGRAMFILES',\n 'PROGRAMFILES(X86)',\n 'APPDATA',\n 'LOCALAPPDATA',\n // Corepack: https://github.com/nodejs/corepack\n 'COREPACK_DEFAULT_TO_LATEST',\n 'COREPACK_ENABLE_NETWORK',\n 'COREPACK_ENABLE_STRICT',\n 'COREPACK_ENABLE_PROJECT_SPEC',\n 'COREPACK_ENABLE_UNSAFE_CUSTOM_URLS',\n 'COREPACK_HOME',\n 'COREPACK_INTEGRITY_KEYS',\n 'COREPACK_NPM_REGISTRY',\n 'COREPACK_NPM_TOKEN',\n 'COREPACK_NPM_USERNAME',\n 'COREPACK_NPM_PASSWORD',\n 'COREPACK_ROOT',\n];\n\nexport function getChildProcessEnv(\n customEnvVars: string[] = [],\n): NodeJS.ProcessEnv {\n const env: NodeJS.ProcessEnv = {};\n if (GlobalConfig.get('exposeAllEnv')) {\n return { ...process.env };\n }\n const envVars = [...basicEnvVars, ...customEnvVars];\n envVars.forEach((envVar) => {\n if (typeof process.env[envVar] !== 'undefined') {\n env[envVar] = process.env[envVar];\n }\n });\n\n // Copy containerbase url replacements\n for (const key of Object.keys(process.env)) {\n if (/^URL_REPLACE_\\d+_(?:FROM|TO)$/.test(key)) {\n env[key] = process.env[key];\n }\n }\n return env;\n}\n"]}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../lib/util/exec/env.ts"],"names":[],"mappings":";;AA0CA,gDAsBC;AAhED,gDAAmD;AACnD,gCAAgC;AAEhC,MAAM,YAAY,GAAG;IACnB,YAAY;IACZ,aAAa;IACb,UAAU;IACV,YAAY;IACZ,aAAa;IACb,UAAU;IACV,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,aAAa;IACb,mBAAmB;IACnB,kBAAkB;IAClB,8BAA8B;IAC9B,yEAAyE;IACzE,cAAc;IACd,eAAe;IACf,qBAAqB;IACrB,yCAAyC;IACzC,cAAc;IACd,mBAAmB;IACnB,SAAS;IACT,cAAc;IACd,+CAA+C;IAC/C,4BAA4B;IAC5B,yBAAyB;IACzB,wBAAwB;IACxB,8BAA8B;IAC9B,oCAAoC;IACpC,eAAe;IACf,yBAAyB;IACzB,uBAAuB;IACvB,oBAAoB;IACpB,uBAAuB;IACvB,uBAAuB;IACvB,eAAe;CAChB,CAAC;AAEF,SAAgB,kBAAkB,CAChC,gBAA0B,EAAE;IAE5B,MAAM,WAAW,GAAG,IAAA,YAAM,GAAE,CAAC;IAC7B,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,IAAI,qBAAY,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;IAC5B,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,CAAC;IACpD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,IAAI,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,sCAAsC;IACtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3C,IAAI,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import { GlobalConfig } from '../../config/global';\nimport { getEnv } from '../env';\n\nconst basicEnvVars = [\n 'HTTP_PROXY',\n 'HTTPS_PROXY',\n 'NO_PROXY',\n 'http_proxy',\n 'https_proxy',\n 'no_proxy',\n 'HOME',\n 'PATH',\n 'LC_ALL',\n 'LANG',\n 'DOCKER_HOST',\n 'DOCKER_TLS_VERIFY',\n 'DOCKER_CERT_PATH',\n // Custom certificte variables\n // https://github.com/containerbase/base/blob/main/docs/custom-root-ca.md\n 'SSL_CERT_DIR',\n 'SSL_CERT_FILE',\n 'NODE_EXTRA_CA_CERTS',\n // Required for NuGet to work on Windows.\n 'PROGRAMFILES',\n 'PROGRAMFILES(X86)',\n 'APPDATA',\n 'LOCALAPPDATA',\n // Corepack: https://github.com/nodejs/corepack\n 'COREPACK_DEFAULT_TO_LATEST',\n 'COREPACK_ENABLE_NETWORK',\n 'COREPACK_ENABLE_STRICT',\n 'COREPACK_ENABLE_PROJECT_SPEC',\n 'COREPACK_ENABLE_UNSAFE_CUSTOM_URLS',\n 'COREPACK_HOME',\n 'COREPACK_INTEGRITY_KEYS',\n 'COREPACK_NPM_REGISTRY',\n 'COREPACK_NPM_TOKEN',\n 'COREPACK_NPM_USERNAME',\n 'COREPACK_NPM_PASSWORD',\n 'COREPACK_ROOT',\n];\n\nexport function getChildProcessEnv(\n customEnvVars: string[] = [],\n): NodeJS.ProcessEnv {\n const combinedEnv = getEnv();\n const env: NodeJS.ProcessEnv = {};\n if (GlobalConfig.get('exposeAllEnv')) {\n return { ...combinedEnv };\n }\n const envVars = [...basicEnvVars, ...customEnvVars];\n envVars.forEach((envVar) => {\n if (typeof combinedEnv[envVar] !== 'undefined') {\n env[envVar] = combinedEnv[envVar];\n }\n });\n\n // Copy containerbase url replacements\n for (const key of Object.keys(combinedEnv)) {\n if (/^URL_REPLACE_\\d+_(?:FROM|TO)$/.test(key)) {\n env[key] = combinedEnv[key];\n }\n }\n return env;\n}\n"]}
@@ -8,6 +8,7 @@ const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
8
8
  const platforms_1 = require("../../constants/platforms");
9
9
  const logger_1 = require("../../logger");
10
10
  const common_1 = require("../common");
11
+ const env_1 = require("../env");
11
12
  const host_rules_1 = require("../host-rules");
12
13
  const regex_1 = require("../regex");
13
14
  const url_1 = require("../url");
@@ -27,15 +28,16 @@ function getGitAuthenticatedEnvironmentVariables(originalGitUrl, { token, userna
27
28
  logger_1.logger.warn({ host: matchHost }, `Could not create environment variable for host as neither token or username and password was set`);
28
29
  return { ...environmentVariables };
29
30
  }
31
+ const env = (0, env_1.getEnv)();
30
32
  // check if the environmentVariables already contain a GIT_CONFIG_COUNT or if the process has one
31
- const gitConfigCountEnvVariable = environmentVariables?.GIT_CONFIG_COUNT ?? process.env.GIT_CONFIG_COUNT;
33
+ const gitConfigCountEnvVariable = environmentVariables?.GIT_CONFIG_COUNT ?? env.GIT_CONFIG_COUNT;
32
34
  let gitConfigCount = 0;
33
35
  if (gitConfigCountEnvVariable) {
34
36
  // passthrough the gitConfigCountEnvVariable environment variable as start value of the index count
35
37
  gitConfigCount = parseInt(gitConfigCountEnvVariable, 10);
36
38
  if (Number.isNaN(gitConfigCount)) {
37
39
  logger_1.logger.warn({
38
- GIT_CONFIG_COUNT: process.env.GIT_CONFIG_COUNT,
40
+ GIT_CONFIG_COUNT: env.GIT_CONFIG_COUNT,
39
41
  }, `Found GIT_CONFIG_COUNT env variable, but couldn't parse the value to an integer. Ignoring it.`);
40
42
  gitConfigCount = 0;
41
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../lib/util/git/auth.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { PLATFORM_HOST_TYPES } from '../../constants/platforms';\nimport { logger } from '../../logger';\nimport type { HostRule } from '../../types';\nimport { detectPlatform } from '../common';\nimport { find, getAll } from '../host-rules';\nimport { regEx } from '../regex';\nimport { createURLFromHostOrURL, isHttpUrl } from '../url';\nimport type { AuthenticationRule } from './types';\nimport { parseGitUrl } from './url';\n\nconst githubApiUrls = new Set([\n 'github.com',\n 'api.github.com',\n 'https://api.github.com',\n 'https://api.github.com/',\n]);\n\n/**\n * Add authorization to a Git Url and returns a new environment variables object\n * @returns a new NodeJS.ProcessEnv object without modifying any input parameters\n */\nexport function getGitAuthenticatedEnvironmentVariables(\n originalGitUrl: string,\n { token, username, password, hostType, matchHost }: HostRule,\n environmentVariables?: NodeJS.ProcessEnv,\n): NodeJS.ProcessEnv {\n if (!token && !(username && password)) {\n logger.warn(\n { host: matchHost },\n `Could not create environment variable for host as neither token or username and password was set`,\n );\n return { ...environmentVariables };\n }\n\n // check if the environmentVariables already contain a GIT_CONFIG_COUNT or if the process has one\n const gitConfigCountEnvVariable =\n environmentVariables?.GIT_CONFIG_COUNT ?? process.env.GIT_CONFIG_COUNT;\n let gitConfigCount = 0;\n if (gitConfigCountEnvVariable) {\n // passthrough the gitConfigCountEnvVariable environment variable as start value of the index count\n gitConfigCount = parseInt(gitConfigCountEnvVariable, 10);\n if (Number.isNaN(gitConfigCount)) {\n logger.warn(\n {\n GIT_CONFIG_COUNT: process.env.GIT_CONFIG_COUNT,\n },\n `Found GIT_CONFIG_COUNT env variable, but couldn't parse the value to an integer. Ignoring it.`,\n );\n gitConfigCount = 0;\n }\n }\n let authenticationRules: AuthenticationRule[];\n if (token) {\n authenticationRules = getAuthenticationRulesWithToken(\n originalGitUrl,\n hostType,\n token,\n );\n } else {\n const encodedUsername = encodeURIComponent(username!);\n const encodedPassword = encodeURIComponent(password!);\n\n authenticationRules = getAuthenticationRules(\n originalGitUrl,\n hostType,\n `${encodedUsername}:${encodedPassword}`,\n );\n }\n\n // create a shallow copy of the environmentVariables as base so we don't modify the input parameter object\n // add the two new config key and value to the returnEnvironmentVariables object\n // increase the CONFIG_COUNT by one for each rule and add it to the object\n const newEnvironmentVariables = {\n ...environmentVariables,\n };\n for (const rule of authenticationRules) {\n newEnvironmentVariables[`GIT_CONFIG_KEY_${gitConfigCount}`] =\n `url.${rule.url}.insteadOf`;\n newEnvironmentVariables[`GIT_CONFIG_VALUE_${gitConfigCount}`] =\n rule.insteadOf;\n gitConfigCount++;\n }\n newEnvironmentVariables.GIT_CONFIG_COUNT = gitConfigCount.toString();\n\n return newEnvironmentVariables;\n}\n\nfunction getAuthenticationRulesWithToken(\n url: string,\n hostType: string | undefined | null,\n authToken: string,\n): AuthenticationRule[] {\n let token = authToken;\n let type = hostType;\n type ??= detectPlatform(url);\n if (type === 'gitlab') {\n token = `gitlab-ci-token:${authToken}`;\n }\n return getAuthenticationRules(url, type, token);\n}\n\n/**\n * Generates the authentication rules for later git usage for the given host\n * @link https://coolaj86.com/articles/vanilla-devops-git-credentials-cheatsheet/\n * @param gitUrl Git repository URL\n * @param hostType Git host type\n * @param token Authentication token or `username:password` string\n */\nexport function getAuthenticationRules(\n gitUrl: string,\n hostType: string | undefined | null,\n token: string,\n): AuthenticationRule[] {\n const authenticationRules = [];\n const hasUser = token.split(':').length > 1;\n const insteadUrl = parseGitUrl(gitUrl);\n let sshPort = insteadUrl.port;\n\n if (hostType === 'bitbucket-server') {\n // For Bitbucket Server/Data Center, `source` must be `bitbucket-server`\n // to generate HTTP(s) URLs correctly.\n // https://github.com/IonicaBizau/git-url-parse/blob/28828546c148d58bbcff61409915a4e1e8f7eb11/lib/index.js#L304\n insteadUrl.source = 'bitbucket-server';\n\n // sshPort is string, wrong type!\n // https://github.com/DefinitelyTyped/DefinitelyTyped/pull/72361\n // https://github.com/IonicaBizau/parse-path/blob/87f71f273da90f85f6845937a70b7c032eeae4e3/lib/index.js#L45\n if (!sshPort || is.emptyString(sshPort)) {\n // By default, bitbucket-server SSH port is 7999.\n // For non-default port, the generated auth config will likely be incorrect.\n sshPort = '7999';\n }\n }\n\n const url = { ...insteadUrl };\n const protocol = regEx(/^https?$/).test(url.protocol)\n ? url.protocol\n : 'https';\n\n // ssh protocol with user if empty\n url.token = hasUser ? token : `ssh:${token}`;\n authenticationRules.push({\n url: url.toString(protocol),\n // only edge case, need to stringify ourself because the exact syntax is not supported by the library\n // https://github.com/IonicaBizau/git-url-parse/blob/246c9119fb42c2ea1c280028fe77c53eb34c190c/lib/index.js#L246\n insteadOf: `ssh://git@${insteadUrl.resource}${\n sshPort ? `:${sshPort}` : ''\n }/${insteadUrl.full_name}${insteadUrl.git_suffix ? '.git' : ''}`,\n });\n\n // alternative ssh protocol with user if empty\n url.token = hasUser ? token : `git:${token}`;\n authenticationRules.push({\n url: url.toString(protocol),\n insteadOf: { ...insteadUrl, port: sshPort }.toString('ssh'),\n });\n\n // https protocol with no user as default fallback\n url.token = token;\n authenticationRules.push({\n url: url.toString(protocol),\n insteadOf: insteadUrl.toString(protocol),\n });\n\n return authenticationRules;\n}\n\nexport function getGitEnvironmentVariables(\n additionalHostTypes: string[] = [],\n): NodeJS.ProcessEnv {\n let environmentVariables: NodeJS.ProcessEnv = {};\n\n // hard-coded logic to use authentication for github.com based on the githubToken for api.github.com\n const gitHubHostRule = find({\n hostType: 'github',\n url: 'https://api.github.com/',\n });\n\n if (gitHubHostRule?.token) {\n environmentVariables = getGitAuthenticatedEnvironmentVariables(\n 'https://github.com/',\n gitHubHostRule,\n );\n }\n\n // construct the Set of allowed hostTypes consisting of the standard Git provides\n // plus additionalHostTypes, which are provided as parameter\n const gitAllowedHostTypes = new Set<string>([\n ...PLATFORM_HOST_TYPES,\n ...additionalHostTypes,\n ]);\n\n // filter rules without `matchHost` and `token` or username and password and github api github rules\n const hostRules = getAll()\n .filter((r) => r.matchHost && (r.token ?? (r.username && r.password)))\n .filter((r) => !gitHubHostRule || !githubApiUrls.has(r.matchHost!));\n\n // for each hostRule without hostType we add additional authentication variables to the environmentVariables\n // for each hostRule with hostType we add additional authentication variables to the environmentVariables\n for (const hostRule of hostRules) {\n if (!hostRule.hostType || gitAllowedHostTypes.has(hostRule.hostType)) {\n environmentVariables = addAuthFromHostRule(\n hostRule,\n environmentVariables,\n );\n }\n }\n return environmentVariables;\n}\n\nfunction addAuthFromHostRule(\n hostRule: HostRule,\n env: NodeJS.ProcessEnv,\n): NodeJS.ProcessEnv {\n let environmentVariables = env;\n const httpUrl = createURLFromHostOrURL(hostRule.matchHost!)?.toString();\n if (isHttpUrl(httpUrl)) {\n logger.trace(`Adding Git authentication for ${httpUrl} using token auth.`);\n environmentVariables = getGitAuthenticatedEnvironmentVariables(\n httpUrl!,\n hostRule,\n environmentVariables,\n );\n } else {\n logger.debug(\n `Could not parse registryUrl ${hostRule.matchHost!} or not using http(s). Ignoring`,\n );\n }\n return environmentVariables;\n}\n"]}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../lib/util/git/auth.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { PLATFORM_HOST_TYPES } from '../../constants/platforms';\nimport { logger } from '../../logger';\nimport type { HostRule } from '../../types';\nimport { detectPlatform } from '../common';\nimport { getEnv } from '../env';\nimport { find, getAll } from '../host-rules';\nimport { regEx } from '../regex';\nimport { createURLFromHostOrURL, isHttpUrl } from '../url';\nimport type { AuthenticationRule } from './types';\nimport { parseGitUrl } from './url';\n\nconst githubApiUrls = new Set([\n 'github.com',\n 'api.github.com',\n 'https://api.github.com',\n 'https://api.github.com/',\n]);\n\n/**\n * Add authorization to a Git Url and returns a new environment variables object\n * @returns a new NodeJS.ProcessEnv object without modifying any input parameters\n */\nexport function getGitAuthenticatedEnvironmentVariables(\n originalGitUrl: string,\n { token, username, password, hostType, matchHost }: HostRule,\n environmentVariables?: NodeJS.ProcessEnv,\n): NodeJS.ProcessEnv {\n if (!token && !(username && password)) {\n logger.warn(\n { host: matchHost },\n `Could not create environment variable for host as neither token or username and password was set`,\n );\n return { ...environmentVariables };\n }\n\n const env = getEnv();\n // check if the environmentVariables already contain a GIT_CONFIG_COUNT or if the process has one\n const gitConfigCountEnvVariable =\n environmentVariables?.GIT_CONFIG_COUNT ?? env.GIT_CONFIG_COUNT;\n let gitConfigCount = 0;\n if (gitConfigCountEnvVariable) {\n // passthrough the gitConfigCountEnvVariable environment variable as start value of the index count\n gitConfigCount = parseInt(gitConfigCountEnvVariable, 10);\n if (Number.isNaN(gitConfigCount)) {\n logger.warn(\n {\n GIT_CONFIG_COUNT: env.GIT_CONFIG_COUNT,\n },\n `Found GIT_CONFIG_COUNT env variable, but couldn't parse the value to an integer. Ignoring it.`,\n );\n gitConfigCount = 0;\n }\n }\n let authenticationRules: AuthenticationRule[];\n if (token) {\n authenticationRules = getAuthenticationRulesWithToken(\n originalGitUrl,\n hostType,\n token,\n );\n } else {\n const encodedUsername = encodeURIComponent(username!);\n const encodedPassword = encodeURIComponent(password!);\n\n authenticationRules = getAuthenticationRules(\n originalGitUrl,\n hostType,\n `${encodedUsername}:${encodedPassword}`,\n );\n }\n\n // create a shallow copy of the environmentVariables as base so we don't modify the input parameter object\n // add the two new config key and value to the returnEnvironmentVariables object\n // increase the CONFIG_COUNT by one for each rule and add it to the object\n const newEnvironmentVariables = {\n ...environmentVariables,\n };\n for (const rule of authenticationRules) {\n newEnvironmentVariables[`GIT_CONFIG_KEY_${gitConfigCount}`] =\n `url.${rule.url}.insteadOf`;\n newEnvironmentVariables[`GIT_CONFIG_VALUE_${gitConfigCount}`] =\n rule.insteadOf;\n gitConfigCount++;\n }\n newEnvironmentVariables.GIT_CONFIG_COUNT = gitConfigCount.toString();\n\n return newEnvironmentVariables;\n}\n\nfunction getAuthenticationRulesWithToken(\n url: string,\n hostType: string | undefined | null,\n authToken: string,\n): AuthenticationRule[] {\n let token = authToken;\n let type = hostType;\n type ??= detectPlatform(url);\n if (type === 'gitlab') {\n token = `gitlab-ci-token:${authToken}`;\n }\n return getAuthenticationRules(url, type, token);\n}\n\n/**\n * Generates the authentication rules for later git usage for the given host\n * @link https://coolaj86.com/articles/vanilla-devops-git-credentials-cheatsheet/\n * @param gitUrl Git repository URL\n * @param hostType Git host type\n * @param token Authentication token or `username:password` string\n */\nexport function getAuthenticationRules(\n gitUrl: string,\n hostType: string | undefined | null,\n token: string,\n): AuthenticationRule[] {\n const authenticationRules = [];\n const hasUser = token.split(':').length > 1;\n const insteadUrl = parseGitUrl(gitUrl);\n let sshPort = insteadUrl.port;\n\n if (hostType === 'bitbucket-server') {\n // For Bitbucket Server/Data Center, `source` must be `bitbucket-server`\n // to generate HTTP(s) URLs correctly.\n // https://github.com/IonicaBizau/git-url-parse/blob/28828546c148d58bbcff61409915a4e1e8f7eb11/lib/index.js#L304\n insteadUrl.source = 'bitbucket-server';\n\n // sshPort is string, wrong type!\n // https://github.com/DefinitelyTyped/DefinitelyTyped/pull/72361\n // https://github.com/IonicaBizau/parse-path/blob/87f71f273da90f85f6845937a70b7c032eeae4e3/lib/index.js#L45\n if (!sshPort || is.emptyString(sshPort)) {\n // By default, bitbucket-server SSH port is 7999.\n // For non-default port, the generated auth config will likely be incorrect.\n sshPort = '7999';\n }\n }\n\n const url = { ...insteadUrl };\n const protocol = regEx(/^https?$/).test(url.protocol)\n ? url.protocol\n : 'https';\n\n // ssh protocol with user if empty\n url.token = hasUser ? token : `ssh:${token}`;\n authenticationRules.push({\n url: url.toString(protocol),\n // only edge case, need to stringify ourself because the exact syntax is not supported by the library\n // https://github.com/IonicaBizau/git-url-parse/blob/246c9119fb42c2ea1c280028fe77c53eb34c190c/lib/index.js#L246\n insteadOf: `ssh://git@${insteadUrl.resource}${\n sshPort ? `:${sshPort}` : ''\n }/${insteadUrl.full_name}${insteadUrl.git_suffix ? '.git' : ''}`,\n });\n\n // alternative ssh protocol with user if empty\n url.token = hasUser ? token : `git:${token}`;\n authenticationRules.push({\n url: url.toString(protocol),\n insteadOf: { ...insteadUrl, port: sshPort }.toString('ssh'),\n });\n\n // https protocol with no user as default fallback\n url.token = token;\n authenticationRules.push({\n url: url.toString(protocol),\n insteadOf: insteadUrl.toString(protocol),\n });\n\n return authenticationRules;\n}\n\nexport function getGitEnvironmentVariables(\n additionalHostTypes: string[] = [],\n): NodeJS.ProcessEnv {\n let environmentVariables: NodeJS.ProcessEnv = {};\n\n // hard-coded logic to use authentication for github.com based on the githubToken for api.github.com\n const gitHubHostRule = find({\n hostType: 'github',\n url: 'https://api.github.com/',\n });\n\n if (gitHubHostRule?.token) {\n environmentVariables = getGitAuthenticatedEnvironmentVariables(\n 'https://github.com/',\n gitHubHostRule,\n );\n }\n\n // construct the Set of allowed hostTypes consisting of the standard Git provides\n // plus additionalHostTypes, which are provided as parameter\n const gitAllowedHostTypes = new Set<string>([\n ...PLATFORM_HOST_TYPES,\n ...additionalHostTypes,\n ]);\n\n // filter rules without `matchHost` and `token` or username and password and github api github rules\n const hostRules = getAll()\n .filter((r) => r.matchHost && (r.token ?? (r.username && r.password)))\n .filter((r) => !gitHubHostRule || !githubApiUrls.has(r.matchHost!));\n\n // for each hostRule without hostType we add additional authentication variables to the environmentVariables\n // for each hostRule with hostType we add additional authentication variables to the environmentVariables\n for (const hostRule of hostRules) {\n if (!hostRule.hostType || gitAllowedHostTypes.has(hostRule.hostType)) {\n environmentVariables = addAuthFromHostRule(\n hostRule,\n environmentVariables,\n );\n }\n }\n return environmentVariables;\n}\n\nfunction addAuthFromHostRule(\n hostRule: HostRule,\n env: NodeJS.ProcessEnv,\n): NodeJS.ProcessEnv {\n let environmentVariables = env;\n const httpUrl = createURLFromHostOrURL(hostRule.matchHost!)?.toString();\n if (isHttpUrl(httpUrl)) {\n logger.trace(`Adding Git authentication for ${httpUrl} using token auth.`);\n environmentVariables = getGitAuthenticatedEnvironmentVariables(\n httpUrl!,\n hostRule,\n environmentVariables,\n );\n } else {\n logger.debug(\n `Could not parse registryUrl ${hostRule.matchHost!} or not using http(s). Ignoring`,\n );\n }\n return environmentVariables;\n}\n"]}
@@ -6,8 +6,9 @@ exports.bulkChangesDisallowed = bulkChangesDisallowed;
6
6
  const error_messages_1 = require("../../constants/error-messages");
7
7
  const logger_1 = require("../../logger");
8
8
  const external_host_error_1 = require("../../types/errors/external-host-error");
9
+ const env_1 = require("../env");
9
10
  function checkForPlatformFailure(err) {
10
- if (process.env.NODE_ENV === 'test') {
11
+ if ((0, env_1.getEnv)().NODE_ENV === 'test') {
11
12
  return null;
12
13
  }
13
14
  const externalHostFailureStrings = [
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../lib/util/git/error.ts"],"names":[],"mappings":"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","sourcesContent":["import { CONFIG_VALIDATION } from '../../constants/error-messages';\nimport { logger } from '../../logger';\nimport { ExternalHostError } from '../../types/errors/external-host-error';\nimport type { FileChange } from './types';\n\nexport function checkForPlatformFailure(err: Error): Error | null {\n if (process.env.NODE_ENV === 'test') {\n return null;\n }\n const externalHostFailureStrings = [\n 'remote: Invalid username or password',\n 'gnutls_handshake() failed',\n 'The requested URL returned error: 403',\n 'The requested URL returned error: 5',\n 'The remote end hung up unexpectedly',\n 'access denied or repository not exported',\n 'Could not write new index file',\n 'Failed to connect to',\n 'Connection timed out',\n 'malformed object name',\n 'Could not resolve host',\n 'early EOF',\n 'fatal: bad config', // .gitmodules problem\n 'expected flush after ref listing',\n ];\n for (const errorStr of externalHostFailureStrings) {\n if (err.message.includes(errorStr)) {\n logger.debug({ err }, 'Converting git error to ExternalHostError');\n return new ExternalHostError(err, 'git');\n }\n /* v8 ignore start -- TODO: add test */\n }\n\n const configErrorStrings = [\n {\n error: 'GitLab: Branch name does not follow the pattern',\n message:\n \"Cannot push because branch name does not follow project's push rules\",\n },\n {\n error: 'GitLab: Commit message does not follow the pattern',\n message:\n \"Cannot push because commit message does not follow project's push rules\",\n },\n {\n error: ' is not a member of team',\n message:\n 'The `Restrict commits to existing GitLab users` rule is blocking Renovate push. Check the Renovate `gitAuthor` setting',\n },\n {\n error: 'TF401027:',\n message:\n 'You need the Git `GenericContribute` permission to perform this action',\n },\n {\n error: 'matches more than one',\n message:\n \"Renovate cannot push branches if there are tags with names the same as Renovate's branches. Please remove conflicting tag names or change Renovate's branchPrefix to avoid conflicts.\",\n },\n ];\n for (const { error, message } of configErrorStrings) {\n if (err.message.includes(error)) {\n logger.debug({ err }, 'Converting git error to CONFIG_VALIDATION error');\n const res = new Error(CONFIG_VALIDATION);\n res.validationError = message;\n res.validationMessage = `\\`${err.message.replaceAll('`', \"'\")}\\``;\n return res;\n }\n }\n\n return null;\n}\n/* v8 ignore stop */\n\n/* v8 ignore start -- TODO: add tests */\nexport function handleCommitError(\n err: Error,\n branchName: string,\n files?: FileChange[],\n): null {\n checkForPlatformFailure(err);\n if (err.message.includes(`'refs/heads/renovate' exists`)) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'None';\n error.validationError = 'An existing branch is blocking Renovate';\n error.validationMessage = `Renovate needs to create the branch \\`${branchName}\\` but is blocked from doing so because of an existing branch called \\`renovate\\`. Please remove it so that Renovate can proceed.`;\n throw error;\n }\n if (\n err.message.includes(\n 'refusing to allow a GitHub App to create or update workflow',\n )\n ) {\n logger.warn(\n 'App has not been granted permissions to update Workflows - aborting branch.',\n );\n return null;\n }\n if (\n (err.message.includes('remote rejected') || err.message.includes('403')) &&\n files?.some((file) => file.path?.startsWith('.github/workflows/'))\n ) {\n logger.debug({ err }, 'commitFiles error');\n logger.info('Workflows update rejection - aborting branch.');\n return null;\n }\n if (err.message.includes('protected branch hook declined')) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = branchName;\n error.validationError = 'Renovate branch is protected';\n error.validationMessage = `Renovate cannot push to its branch because branch protection has been enabled.`;\n throw error;\n }\n if (err.message.includes('can only push your own commits')) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = branchName;\n error.validationError = 'Bitbucket committer error';\n error.validationMessage = `Renovate has experienced the following error when attempting to push its branch to the server: \\`${err.message.replaceAll(\n '`',\n \"'\",\n )}\\``;\n throw error;\n }\n if (err.message.includes('remote: error: cannot lock ref')) {\n logger.error({ err }, 'Error committing files.');\n return null;\n }\n if (\n err.message.includes('denying non-fast-forward') ||\n err.message.includes('GH003: Sorry, force-pushing')\n ) {\n logger.debug({ err }, 'Permission denied to update branch');\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = branchName;\n error.validationError = 'Force push denied';\n error.validationMessage = `Renovate is unable to update branch(es) due to force pushes being disallowed.`;\n throw error;\n }\n logger.debug({ err }, 'Unknown error committing files');\n // We don't know why this happened, so this will cause bubble up to a branch error\n throw err;\n}\n/* v8 ignore stop */\n\nexport function bulkChangesDisallowed(err: Error): boolean {\n return err.message.includes('update more than');\n}\n"]}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../lib/util/git/error.ts"],"names":[],"mappings":"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","sourcesContent":["import { CONFIG_VALIDATION } from '../../constants/error-messages';\nimport { logger } from '../../logger';\nimport { ExternalHostError } from '../../types/errors/external-host-error';\nimport { getEnv } from '../env';\nimport type { FileChange } from './types';\n\nexport function checkForPlatformFailure(err: Error): Error | null {\n if (getEnv().NODE_ENV === 'test') {\n return null;\n }\n const externalHostFailureStrings = [\n 'remote: Invalid username or password',\n 'gnutls_handshake() failed',\n 'The requested URL returned error: 403',\n 'The requested URL returned error: 5',\n 'The remote end hung up unexpectedly',\n 'access denied or repository not exported',\n 'Could not write new index file',\n 'Failed to connect to',\n 'Connection timed out',\n 'malformed object name',\n 'Could not resolve host',\n 'early EOF',\n 'fatal: bad config', // .gitmodules problem\n 'expected flush after ref listing',\n ];\n for (const errorStr of externalHostFailureStrings) {\n if (err.message.includes(errorStr)) {\n logger.debug({ err }, 'Converting git error to ExternalHostError');\n return new ExternalHostError(err, 'git');\n }\n /* v8 ignore start -- TODO: add test */\n }\n\n const configErrorStrings = [\n {\n error: 'GitLab: Branch name does not follow the pattern',\n message:\n \"Cannot push because branch name does not follow project's push rules\",\n },\n {\n error: 'GitLab: Commit message does not follow the pattern',\n message:\n \"Cannot push because commit message does not follow project's push rules\",\n },\n {\n error: ' is not a member of team',\n message:\n 'The `Restrict commits to existing GitLab users` rule is blocking Renovate push. Check the Renovate `gitAuthor` setting',\n },\n {\n error: 'TF401027:',\n message:\n 'You need the Git `GenericContribute` permission to perform this action',\n },\n {\n error: 'matches more than one',\n message:\n \"Renovate cannot push branches if there are tags with names the same as Renovate's branches. Please remove conflicting tag names or change Renovate's branchPrefix to avoid conflicts.\",\n },\n ];\n for (const { error, message } of configErrorStrings) {\n if (err.message.includes(error)) {\n logger.debug({ err }, 'Converting git error to CONFIG_VALIDATION error');\n const res = new Error(CONFIG_VALIDATION);\n res.validationError = message;\n res.validationMessage = `\\`${err.message.replaceAll('`', \"'\")}\\``;\n return res;\n }\n }\n\n return null;\n}\n/* v8 ignore stop */\n\n/* v8 ignore start -- TODO: add tests */\nexport function handleCommitError(\n err: Error,\n branchName: string,\n files?: FileChange[],\n): null {\n checkForPlatformFailure(err);\n if (err.message.includes(`'refs/heads/renovate' exists`)) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'None';\n error.validationError = 'An existing branch is blocking Renovate';\n error.validationMessage = `Renovate needs to create the branch \\`${branchName}\\` but is blocked from doing so because of an existing branch called \\`renovate\\`. Please remove it so that Renovate can proceed.`;\n throw error;\n }\n if (\n err.message.includes(\n 'refusing to allow a GitHub App to create or update workflow',\n )\n ) {\n logger.warn(\n 'App has not been granted permissions to update Workflows - aborting branch.',\n );\n return null;\n }\n if (\n (err.message.includes('remote rejected') || err.message.includes('403')) &&\n files?.some((file) => file.path?.startsWith('.github/workflows/'))\n ) {\n logger.debug({ err }, 'commitFiles error');\n logger.info('Workflows update rejection - aborting branch.');\n return null;\n }\n if (err.message.includes('protected branch hook declined')) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = branchName;\n error.validationError = 'Renovate branch is protected';\n error.validationMessage = `Renovate cannot push to its branch because branch protection has been enabled.`;\n throw error;\n }\n if (err.message.includes('can only push your own commits')) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = branchName;\n error.validationError = 'Bitbucket committer error';\n error.validationMessage = `Renovate has experienced the following error when attempting to push its branch to the server: \\`${err.message.replaceAll(\n '`',\n \"'\",\n )}\\``;\n throw error;\n }\n if (err.message.includes('remote: error: cannot lock ref')) {\n logger.error({ err }, 'Error committing files.');\n return null;\n }\n if (\n err.message.includes('denying non-fast-forward') ||\n err.message.includes('GH003: Sorry, force-pushing')\n ) {\n logger.debug({ err }, 'Permission denied to update branch');\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = branchName;\n error.validationError = 'Force push denied';\n error.validationMessage = `Renovate is unable to update branch(es) due to force pushes being disallowed.`;\n throw error;\n }\n logger.debug({ err }, 'Unknown error committing files');\n // We don't know why this happened, so this will cause bubble up to a branch error\n throw err;\n}\n/* v8 ignore stop */\n\nexport function bulkChangesDisallowed(err: Error): boolean {\n return err.message.includes('update more than');\n}\n"]}
@@ -54,6 +54,7 @@ const logger_1 = require("../../logger");
54
54
  const external_host_error_1 = require("../../types/errors/external-host-error");
55
55
  const limits_1 = require("../../workers/global/limits");
56
56
  const repository_1 = require("../cache/repository");
57
+ const env_1 = require("../env");
57
58
  const regex_1 = require("../regex");
58
59
  const string_match_1 = require("../string-match");
59
60
  const author_1 = require("./author");
@@ -224,7 +225,7 @@ async function initRepo(args) {
224
225
  config.additionalBranches = [];
225
226
  config.branchIsModified = {};
226
227
  git = (0, simple_git_1.simpleGit)(global_1.GlobalConfig.get('localDir'), (0, config_1.simpleGitConfig)()).env({
227
- ...process.env,
228
+ ...(0, env_1.getEnv)(),
228
229
  LANG: 'C.UTF-8',
229
230
  LC_ALL: 'C.UTF-8',
230
231
  });
@@ -346,7 +347,7 @@ function isCloned() {
346
347
  async function syncGit() {
347
348
  if (gitInitialized) {
348
349
  /* v8 ignore next 3 -- TODO: add test */
349
- if (process.env.RENOVATE_X_CLEAR_HOOKS) {
350
+ if ((0, env_1.getEnv)().RENOVATE_X_CLEAR_HOOKS) {
350
351
  await git.raw(['config', 'core.hooksPath', '/dev/null']);
351
352
  }
352
353
  return;