renovate 39.176.4 → 40.0.0-next.1
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.
- package/dist/config/migrations/custom/package-rules-migration.js.map +1 -1
- package/dist/config/migrations/migrations-service.d.ts +2 -2
- package/dist/config/migrations/migrations-service.js.map +1 -1
- package/dist/config/migrations/types.d.ts +1 -3
- package/dist/config/migrations/types.js.map +1 -1
- package/dist/config/options/index.js +1 -1
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/presets/internal/group.js +0 -1
- package/dist/config/presets/internal/group.js.map +1 -1
- package/dist/config/presets/types.d.ts +4 -4
- package/dist/config/presets/types.js.map +1 -1
- package/dist/config-validator.js.map +1 -1
- package/dist/logger/utils.js +4 -2
- package/dist/logger/utils.js.map +1 -1
- package/dist/modules/datasource/artifactory/index.js +1 -1
- package/dist/modules/datasource/artifactory/index.js.map +1 -1
- package/dist/modules/datasource/conan/index.js +1 -1
- package/dist/modules/datasource/conan/index.js.map +1 -1
- package/dist/modules/datasource/crate/index.js.map +1 -1
- package/dist/modules/datasource/datasource.d.ts +1 -1
- package/dist/modules/datasource/datasource.js +3 -1
- package/dist/modules/datasource/datasource.js.map +1 -1
- package/dist/modules/datasource/deb/common.d.ts +3 -3
- package/dist/modules/datasource/deb/common.js.map +1 -1
- package/dist/modules/datasource/docker/ecr.js +1 -1
- package/dist/modules/datasource/docker/ecr.js.map +1 -1
- package/dist/modules/datasource/docker/index.js.map +1 -1
- package/dist/modules/datasource/hexpm-bob/index.js +1 -1
- package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
- package/dist/modules/datasource/nuget/v2.js +1 -1
- package/dist/modules/datasource/nuget/v2.js.map +1 -1
- package/dist/modules/datasource/pod/index.js +1 -2
- package/dist/modules/datasource/pod/index.js.map +1 -1
- package/dist/modules/datasource/rubygems/metadata-cache.js.map +1 -1
- package/dist/modules/datasource/sbt-plugin/index.js +1 -2
- package/dist/modules/datasource/sbt-plugin/index.js.map +1 -1
- package/dist/modules/manager/ansible-galaxy/collections-metadata.js +1 -2
- package/dist/modules/manager/ansible-galaxy/collections-metadata.js.map +1 -1
- package/dist/modules/manager/asdf/upgradeable-tooling.js +4 -4
- package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/batect/extract.js.map +1 -1
- package/dist/modules/manager/bazel/artifacts.js +2 -2
- package/dist/modules/manager/bazel/artifacts.js.map +1 -1
- package/dist/modules/manager/bazel/common.js +1 -2
- package/dist/modules/manager/bazel/common.js.map +1 -1
- package/dist/modules/manager/bazel/parser.js +1 -1
- package/dist/modules/manager/bazel/parser.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/context.d.ts +4 -3
- package/dist/modules/manager/bazel-module/parser/context.js +9 -6
- package/dist/modules/manager/bazel-module/parser/context.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/extension-tags.js +10 -2
- package/dist/modules/manager/bazel-module/parser/extension-tags.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/fragments.d.ts +20 -2
- package/dist/modules/manager/bazel-module/parser/fragments.js +8 -2
- package/dist/modules/manager/bazel-module/parser/fragments.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/index.js +1 -1
- package/dist/modules/manager/bazel-module/parser/index.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/maven.d.ts +16 -0
- package/dist/modules/manager/bazel-module/parser/oci.d.ts +8 -0
- package/dist/modules/manager/bazel-module/parser/oci.js +4 -1
- package/dist/modules/manager/bazel-module/parser/oci.js.map +1 -1
- package/dist/modules/manager/bun/artifacts.js +1 -1
- package/dist/modules/manager/bun/artifacts.js.map +1 -1
- package/dist/modules/manager/bundler/extract.js.map +1 -1
- package/dist/modules/manager/cargo/artifacts.js +1 -1
- package/dist/modules/manager/cargo/artifacts.js.map +1 -1
- package/dist/modules/manager/cargo/extract.js.map +1 -1
- package/dist/modules/manager/cargo/types.d.ts +1 -3
- package/dist/modules/manager/cargo/types.js.map +1 -1
- package/dist/modules/manager/composer/utils.js +4 -4
- package/dist/modules/manager/composer/utils.js.map +1 -1
- package/dist/modules/manager/deps-edn/extract.js +3 -3
- package/dist/modules/manager/deps-edn/extract.js.map +1 -1
- package/dist/modules/manager/deps-edn/types.js.map +1 -1
- package/dist/modules/manager/dockerfile/extract.js +2 -3
- package/dist/modules/manager/dockerfile/extract.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +17 -17
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/flux/types.d.ts +3 -3
- package/dist/modules/manager/flux/types.js.map +1 -1
- package/dist/modules/manager/git-submodules/types.d.ts +2 -2
- package/dist/modules/manager/git-submodules/types.js.map +1 -1
- package/dist/modules/manager/github-actions/extract.js +2 -2
- package/dist/modules/manager/github-actions/extract.js.map +1 -1
- package/dist/modules/manager/glasskube/types.d.ts +2 -2
- package/dist/modules/manager/glasskube/types.js.map +1 -1
- package/dist/modules/manager/gleam/artifacts.js +1 -1
- package/dist/modules/manager/gleam/artifacts.js.map +1 -1
- package/dist/modules/manager/gradle/utils.js +6 -2
- package/dist/modules/manager/gradle/utils.js.map +1 -1
- package/dist/modules/manager/haskell-cabal/extract.js +1 -1
- package/dist/modules/manager/haskell-cabal/extract.js.map +1 -1
- package/dist/modules/manager/helmfile/artifacts.js +1 -1
- package/dist/modules/manager/helmfile/artifacts.js.map +1 -1
- package/dist/modules/manager/helmfile/extract.js +2 -2
- package/dist/modules/manager/helmfile/extract.js.map +1 -1
- package/dist/modules/manager/helmv3/artifacts.js +1 -1
- package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
- package/dist/modules/manager/helmv3/extract.js.map +1 -1
- package/dist/modules/manager/helmv3/utils.js +1 -1
- package/dist/modules/manager/helmv3/utils.js.map +1 -1
- package/dist/modules/manager/homebrew/util.js +1 -2
- package/dist/modules/manager/homebrew/util.js.map +1 -1
- package/dist/modules/manager/jsonnet-bundler/extract.js +1 -1
- package/dist/modules/manager/jsonnet-bundler/extract.js.map +1 -1
- package/dist/modules/manager/leiningen/extract.js +1 -2
- package/dist/modules/manager/leiningen/extract.js.map +1 -1
- package/dist/modules/manager/maven/extract.js.map +1 -1
- package/dist/modules/manager/maven/update.js.map +1 -1
- package/dist/modules/manager/mise/upgradeable-tooling.js +7 -7
- package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/nix/extract.js +1 -1
- package/dist/modules/manager/nix/extract.js.map +1 -1
- package/dist/modules/manager/npm/extract/pnpm.js +1 -1
- package/dist/modules/manager/npm/extract/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/index.js +1 -1
- package/dist/modules/manager/npm/post-update/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
- package/dist/modules/manager/nuget/config-formatter.js +1 -2
- package/dist/modules/manager/nuget/config-formatter.js.map +1 -1
- package/dist/modules/manager/nuget/package-tree.js +1 -1
- package/dist/modules/manager/nuget/package-tree.js.map +1 -1
- package/dist/modules/manager/nuget/util.js +2 -2
- package/dist/modules/manager/nuget/util.js.map +1 -1
- package/dist/modules/manager/osgi/extract.js +3 -3
- package/dist/modules/manager/osgi/extract.js.map +1 -1
- package/dist/modules/manager/pep621/processors/pdm.js +1 -1
- package/dist/modules/manager/pep621/processors/pdm.js.map +1 -1
- package/dist/modules/manager/pep621/processors/uv.js +3 -2
- package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
- package/dist/modules/manager/pip-compile/artifacts.js +8 -2
- package/dist/modules/manager/pip-compile/artifacts.js.map +1 -1
- package/dist/modules/manager/pip-compile/common.d.ts +5 -3
- package/dist/modules/manager/pip-compile/common.js +34 -13
- package/dist/modules/manager/pip-compile/common.js.map +1 -1
- package/dist/modules/manager/pip-compile/extract.js.map +1 -1
- package/dist/modules/manager/pip-compile/types.d.ts +1 -0
- package/dist/modules/manager/pip-compile/types.js.map +1 -1
- package/dist/modules/manager/poetry/artifacts.js +2 -2
- package/dist/modules/manager/poetry/artifacts.js.map +1 -1
- package/dist/modules/manager/pre-commit/types.d.ts +2 -2
- package/dist/modules/manager/pre-commit/types.js.map +1 -1
- package/dist/modules/manager/pub/artifacts.js +1 -1
- package/dist/modules/manager/pub/artifacts.js.map +1 -1
- package/dist/modules/manager/swift/extract.js +1 -2
- package/dist/modules/manager/swift/extract.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/terraform-block/required-provider.js +2 -2
- package/dist/modules/manager/terraform/extractors/terraform-block/required-provider.js.map +1 -1
- package/dist/modules/manager/terraform/hcl/types.d.ts +1 -3
- package/dist/modules/manager/terraform/hcl/types.js.map +1 -1
- package/dist/modules/manager/terraform/lockfile/index.js +1 -1
- package/dist/modules/manager/terraform/lockfile/index.js.map +1 -1
- package/dist/modules/manager/terragrunt/artifacts.js +1 -1
- package/dist/modules/manager/terragrunt/artifacts.js.map +1 -1
- package/dist/modules/manager/types.d.ts +1 -0
- package/dist/modules/manager/types.js.map +1 -1
- package/dist/modules/manager/woodpecker/types.d.ts +2 -2
- package/dist/modules/manager/woodpecker/types.js.map +1 -1
- package/dist/modules/platform/azure/azure-helper.js.map +1 -1
- package/dist/modules/platform/azure/index.js +1 -1
- package/dist/modules/platform/azure/index.js.map +1 -1
- package/dist/modules/platform/bitbucket/index.js.map +1 -1
- package/dist/modules/platform/bitbucket/utils.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/index.js +2 -2
- package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
- package/dist/modules/platform/gerrit/scm.js +1 -1
- package/dist/modules/platform/gerrit/scm.js.map +1 -1
- package/dist/modules/platform/gitea/index.js +6 -5
- package/dist/modules/platform/gitea/index.js.map +1 -1
- package/dist/modules/platform/gitea/pr-cache.d.ts +3 -2
- package/dist/modules/platform/gitea/pr-cache.js +21 -12
- package/dist/modules/platform/gitea/pr-cache.js.map +1 -1
- package/dist/modules/platform/github/index.js.map +1 -1
- package/dist/modules/platform/gitlab/index.js +20 -16
- package/dist/modules/platform/gitlab/index.js.map +1 -1
- package/dist/modules/platform/types.d.ts +2 -2
- package/dist/modules/platform/types.js.map +1 -1
- package/dist/modules/versioning/bazel-module/bzlmod-version.d.ts +1 -1
- package/dist/modules/versioning/bazel-module/bzlmod-version.js.map +1 -1
- package/dist/modules/versioning/generic.d.ts +2 -6
- package/dist/modules/versioning/generic.js.map +1 -1
- package/dist/modules/versioning/gradle/compare.d.ts +2 -2
- package/dist/modules/versioning/gradle/compare.js.map +1 -1
- package/dist/modules/versioning/gradle/index.js +1 -1
- package/dist/modules/versioning/gradle/index.js.map +1 -1
- package/dist/modules/versioning/pvp/range.js +2 -2
- package/dist/modules/versioning/pvp/range.js.map +1 -1
- package/dist/modules/versioning/rpm/index.js +5 -5
- package/dist/modules/versioning/rpm/index.js.map +1 -1
- package/dist/modules/versioning/semver-coerced/index.js +4 -4
- package/dist/modules/versioning/semver-coerced/index.js.map +1 -1
- package/dist/modules/versioning/types.d.ts +1 -3
- package/dist/modules/versioning/types.js.map +1 -1
- package/dist/types/git.d.ts +2 -2
- package/dist/types/git.js.map +1 -1
- package/dist/types/platform/github/index.d.ts +4 -4
- package/dist/types/platform/github/index.js.map +1 -1
- package/dist/types/platform/gitlab/index.d.ts +2 -2
- package/dist/types/platform/gitlab/index.js.map +1 -1
- package/dist/util/assign-keys.d.ts +1 -3
- package/dist/util/assign-keys.js.map +1 -1
- package/dist/util/cache/repository/http-cache.js +1 -1
- package/dist/util/cache/repository/http-cache.js.map +1 -1
- package/dist/util/exec/types.d.ts +2 -2
- package/dist/util/exec/types.js.map +1 -1
- package/dist/util/git/auth.js +1 -1
- package/dist/util/git/auth.js.map +1 -1
- package/dist/util/git/index.d.ts +10 -10
- package/dist/util/git/index.js +22 -26
- package/dist/util/git/index.js.map +1 -1
- package/dist/util/http/bitbucket.js.map +1 -1
- package/dist/util/http/cache/abstract-http-cache-provider.js +1 -1
- package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
- package/dist/util/http/index.js.map +1 -1
- package/dist/util/http/types.d.ts +3 -5
- package/dist/util/http/types.js.map +1 -1
- package/dist/util/pretty-time.js.map +1 -1
- package/dist/util/schema-utils.js.map +1 -1
- package/dist/util/stats.js +1 -0
- package/dist/util/stats.js.map +1 -1
- package/dist/workers/repository/dependency-dashboard.js +2 -2
- package/dist/workers/repository/dependency-dashboard.js.map +1 -1
- package/dist/workers/repository/init/config.d.ts +1 -2
- package/dist/workers/repository/init/config.js +0 -13
- package/dist/workers/repository/init/config.js.map +1 -1
- package/dist/workers/repository/init/merge.d.ts +2 -1
- package/dist/workers/repository/init/merge.js +13 -3
- package/dist/workers/repository/init/merge.js.map +1 -1
- package/dist/workers/repository/model/commit-message.js.map +1 -1
- package/dist/workers/repository/process/vulnerabilities.js +3 -1
- package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
- package/dist/workers/repository/process/write.js +1 -1
- package/dist/workers/repository/process/write.js.map +1 -1
- package/dist/workers/repository/reconfigure/validate.js +3 -1
- package/dist/workers/repository/reconfigure/validate.js.map +1 -1
- package/dist/workers/repository/update/branch/schedule.js +1 -1
- package/dist/workers/repository/update/branch/schedule.js.map +1 -1
- package/dist/workers/repository/update/pr/body/updates-table.js.map +1 -1
- package/dist/workers/repository/updates/generate.js +9 -0
- package/dist/workers/repository/updates/generate.js.map +1 -1
- package/package.json +28 -24
- package/renovate-schema.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/haskell-cabal/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import { regEx } from '../../../util/regex';\n\nconst buildDependsRegex = regEx(\n /(?<buildDependsFieldName>build-depends[ \\t]*:)/i,\n);\nconst commentRegex = regEx(/^[ \\t]*--/);\nfunction isNonASCII(str: string): boolean {\n for (let i = 0; i < str.length; i++) {\n if (str.charCodeAt(i) > 127) {\n return true;\n }\n }\n return false;\n}\n\nexport function countPackageNameLength(input: string): number | null {\n if (input.length < 1 || isNonASCII(input)) {\n return null;\n }\n if (!regEx(/^[A-Za-z0-9]/).test(input[0])) {\n // Must start with letter or number\n return null;\n }\n let idx = 1;\n while (idx < input.length) {\n if (regEx(/[A-Za-z0-9-]/).test(input[idx])) {\n idx++;\n } else {\n break;\n }\n }\n if (!regEx(/[A-Za-z]/).test(input.slice(0, idx))) {\n // Must contain a letter\n return null;\n }\n if (idx - 1 < input.length && input[idx - 1] === '-') {\n // Can't end in a hyphen\n return null;\n }\n return idx;\n}\n\nexport interface CabalDependency {\n packageName: string;\n currentValue: string;\n replaceString: string;\n}\n\n/**\n * Find extents of field contents\n *\n * @param {number} indent -\n * Indention level maintained within the block.\n * Any indention lower than this means it's outside the field.\n * Lines with this level or more are included in the field.\n * @returns {number}\n * Index just after the end of the block.\n * Note that it may be after the end of the string.\n */\nexport function findExtents(indent: number, content: string): number {\n let blockIdx: number = 0;\n let mode: 'finding-newline' | 'finding-indention' = 'finding-newline';\n for (;;) {\n if (mode === 'finding-newline') {\n while (content[blockIdx++] !== '\\n') {\n if (blockIdx >= content.length) {\n break;\n }\n }\n if (blockIdx >= content.length) {\n return content.length;\n }\n mode = 'finding-indention';\n } else {\n let thisIndent = 0;\n for (;;) {\n if ([' ', '\\t'].includes(content[blockIdx])) {\n thisIndent += 1;\n blockIdx++;\n if (blockIdx >= content.length) {\n return content.length;\n }\n continue;\n }\n mode = 'finding-newline';\n blockIdx++;\n break;\n }\n if (thisIndent < indent) {\n if (content.slice(blockIdx - 1, blockIdx + 1) === '--') {\n // not enough indention, but the line is a comment, so include it\n mode = 'finding-newline';\n continue;\n }\n // go back to before the newline\n for (;;) {\n if (content[blockIdx--] === '\\n') {\n break;\n }\n }\n return blockIdx + 1;\n }\n mode = 'finding-newline';\n }\n }\n}\n\n/**\n * Find indention level of build-depends\n *\n * @param {number} match -\n * Search starts at this index, and proceeds backwards.\n * @returns {number}\n * Number of indention levels found before 'match'.\n */\nexport function countPrecedingIndentation(\n content: string,\n match: number,\n): number {\n let whitespaceIdx = match - 1;\n let indent = 0;\n while (whitespaceIdx >= 0 && [' ', '\\t'].includes(content[whitespaceIdx])) {\n indent += 1;\n whitespaceIdx--;\n }\n return indent;\n}\n\n/**\n * Find one 'build-depends' field name usage and its field value\n *\n * @returns {{buildDependsContent: string, lengthProcessed: number}}\n * buildDependsContent:\n * the contents of the field, excluding the field name and the colon,\n * and any comments within\n *\n * lengthProcessed:\n * points to after the end of the field. Note that the field does _not_\n * necessarily start at `content.length - lengthProcessed`.\n *\n * Returns null if no 'build-depends' field is found.\n */\nexport function findDepends(\n content: string,\n): { buildDependsContent: string; lengthProcessed: number } | null {\n const matchObj = buildDependsRegex.exec(content);\n if (!matchObj?.groups) {\n return null;\n }\n const indent = countPrecedingIndentation(content, matchObj.index);\n const ourIdx: number =\n matchObj.index + matchObj.groups['buildDependsFieldName'].length;\n const extentLength: number = findExtents(indent + 1, content.slice(ourIdx));\n const extent = content.slice(ourIdx, ourIdx + extentLength);\n const lines = [];\n // Windows-style line breaks are fine because\n // carriage returns are before the line feed.\n for (const maybeCommentLine of extent.split('\\n')) {\n if (!commentRegex.test(maybeCommentLine)) {\n lines.push(maybeCommentLine);\n }\n }\n return {\n buildDependsContent: lines.join('\\n'),\n lengthProcessed: ourIdx + extentLength,\n };\n}\n\n/**\n * Split a cabal single dependency into its constituent parts.\n * The first part is the package name, an optional second part contains\n * the version constraint.\n *\n * For example 'base == 3.2' would be split into 'base' and ' == 3.2'.\n *\n * @returns {{name: string, range: string}}\n * Null if the trimmed string doesn't begin with a package name.\n */\nexport function splitSingleDependency(\n input: string,\n): { name: string; range: string } | null {\n const match = countPackageNameLength(input);\n if (match === null) {\n return null;\n }\n const name: string = input.slice(0, match);\n const range = input.slice(match).trim();\n return { name, range };\n}\n\nexport function extractNamesAndRanges(content: string): CabalDependency[] {\n const list = content.split(',');\n const deps = [];\n for (const untrimmedReplaceString of list) {\n const replaceString = untrimmedReplaceString.trim();\n const maybeNameRange = splitSingleDependency(replaceString);\n if (maybeNameRange !== null) {\n deps.push({\n currentValue: maybeNameRange.range,\n packageName: maybeNameRange.name,\n replaceString,\n });\n }\n }\n return deps;\n}\n"]}
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/haskell-cabal/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import { regEx } from '../../../util/regex';\n\nconst buildDependsRegex = regEx(\n /(?<buildDependsFieldName>build-depends[ \\t]*:)/i,\n);\nconst commentRegex = regEx(/^[ \\t]*--/);\nfunction isNonASCII(str: string): boolean {\n for (let i = 0; i < str.length; i++) {\n if (str.charCodeAt(i) > 127) {\n return true;\n }\n }\n return false;\n}\n\nexport function countPackageNameLength(input: string): number | null {\n if (input.length < 1 || isNonASCII(input)) {\n return null;\n }\n if (!regEx(/^[A-Za-z0-9]/).test(input[0])) {\n // Must start with letter or number\n return null;\n }\n let idx = 1;\n while (idx < input.length) {\n if (regEx(/[A-Za-z0-9-]/).test(input[idx])) {\n idx++;\n } else {\n break;\n }\n }\n if (!regEx(/[A-Za-z]/).test(input.slice(0, idx))) {\n // Must contain a letter\n return null;\n }\n if (idx - 1 < input.length && input[idx - 1] === '-') {\n // Can't end in a hyphen\n return null;\n }\n return idx;\n}\n\nexport interface CabalDependency {\n packageName: string;\n currentValue: string;\n replaceString: string;\n}\n\n/**\n * Find extents of field contents\n *\n * @param {number} indent -\n * Indention level maintained within the block.\n * Any indention lower than this means it's outside the field.\n * Lines with this level or more are included in the field.\n * @returns {number}\n * Index just after the end of the block.\n * Note that it may be after the end of the string.\n */\nexport function findExtents(indent: number, content: string): number {\n let blockIdx = 0;\n let mode: 'finding-newline' | 'finding-indention' = 'finding-newline';\n for (;;) {\n if (mode === 'finding-newline') {\n while (content[blockIdx++] !== '\\n') {\n if (blockIdx >= content.length) {\n break;\n }\n }\n if (blockIdx >= content.length) {\n return content.length;\n }\n mode = 'finding-indention';\n } else {\n let thisIndent = 0;\n for (;;) {\n if ([' ', '\\t'].includes(content[blockIdx])) {\n thisIndent += 1;\n blockIdx++;\n if (blockIdx >= content.length) {\n return content.length;\n }\n continue;\n }\n mode = 'finding-newline';\n blockIdx++;\n break;\n }\n if (thisIndent < indent) {\n if (content.slice(blockIdx - 1, blockIdx + 1) === '--') {\n // not enough indention, but the line is a comment, so include it\n mode = 'finding-newline';\n continue;\n }\n // go back to before the newline\n for (;;) {\n if (content[blockIdx--] === '\\n') {\n break;\n }\n }\n return blockIdx + 1;\n }\n mode = 'finding-newline';\n }\n }\n}\n\n/**\n * Find indention level of build-depends\n *\n * @param {number} match -\n * Search starts at this index, and proceeds backwards.\n * @returns {number}\n * Number of indention levels found before 'match'.\n */\nexport function countPrecedingIndentation(\n content: string,\n match: number,\n): number {\n let whitespaceIdx = match - 1;\n let indent = 0;\n while (whitespaceIdx >= 0 && [' ', '\\t'].includes(content[whitespaceIdx])) {\n indent += 1;\n whitespaceIdx--;\n }\n return indent;\n}\n\n/**\n * Find one 'build-depends' field name usage and its field value\n *\n * @returns {{buildDependsContent: string, lengthProcessed: number}}\n * buildDependsContent:\n * the contents of the field, excluding the field name and the colon,\n * and any comments within\n *\n * lengthProcessed:\n * points to after the end of the field. Note that the field does _not_\n * necessarily start at `content.length - lengthProcessed`.\n *\n * Returns null if no 'build-depends' field is found.\n */\nexport function findDepends(\n content: string,\n): { buildDependsContent: string; lengthProcessed: number } | null {\n const matchObj = buildDependsRegex.exec(content);\n if (!matchObj?.groups) {\n return null;\n }\n const indent = countPrecedingIndentation(content, matchObj.index);\n const ourIdx: number =\n matchObj.index + matchObj.groups.buildDependsFieldName.length;\n const extentLength: number = findExtents(indent + 1, content.slice(ourIdx));\n const extent = content.slice(ourIdx, ourIdx + extentLength);\n const lines = [];\n // Windows-style line breaks are fine because\n // carriage returns are before the line feed.\n for (const maybeCommentLine of extent.split('\\n')) {\n if (!commentRegex.test(maybeCommentLine)) {\n lines.push(maybeCommentLine);\n }\n }\n return {\n buildDependsContent: lines.join('\\n'),\n lengthProcessed: ourIdx + extentLength,\n };\n}\n\n/**\n * Split a cabal single dependency into its constituent parts.\n * The first part is the package name, an optional second part contains\n * the version constraint.\n *\n * For example 'base == 3.2' would be split into 'base' and ' == 3.2'.\n *\n * @returns {{name: string, range: string}}\n * Null if the trimmed string doesn't begin with a package name.\n */\nexport function splitSingleDependency(\n input: string,\n): { name: string; range: string } | null {\n const match = countPackageNameLength(input);\n if (match === null) {\n return null;\n }\n const name: string = input.slice(0, match);\n const range = input.slice(match).trim();\n return { name, range };\n}\n\nexport function extractNamesAndRanges(content: string): CabalDependency[] {\n const list = content.split(',');\n const deps = [];\n for (const untrimmedReplaceString of list) {\n const replaceString = untrimmedReplaceString.trim();\n const maybeNameRange = splitSingleDependency(replaceString);\n if (maybeNameRange !== null) {\n deps.push({\n currentValue: maybeNameRange.range,\n packageName: maybeNameRange.name,\n replaceString,\n });\n }\n }\n return deps;\n}\n"]}
|
@@ -18,7 +18,7 @@ const schema_1 = require("./schema");
|
|
18
18
|
const utils_1 = require("./utils");
|
19
19
|
async function updateArtifacts({ packageFileName, updatedDeps, newPackageFileContent, config, }) {
|
20
20
|
logger_1.logger.trace(`helmfile.updateArtifacts(${packageFileName})`);
|
21
|
-
const isLockFileMaintenance = config
|
21
|
+
const { isLockFileMaintenance } = config;
|
22
22
|
if (!isLockFileMaintenance &&
|
23
23
|
(updatedDeps === undefined || updatedDeps.length < 1)) {
|
24
24
|
logger_1.logger.debug('No updated helmfile deps - returning null');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmfile/artifacts.ts"],"names":[],"mappings":";;AAqBA,0CA8GC;;AAnID,kEAAkC;AAClC,iCAA8B;AAC9B,sEAAoE;AACpE,4CAAyC;AACzC,+CAAkD;AAClD,6CAA0C;AAE1C,yCAI0B;AAC1B,2CAA4C;AAC5C,+CAA4C;AAC5C,iDAA8C;AAC9C,6CAA+C;AAC/C,6CAAoD;AAEpD,qCAA4C;AAC5C,mCAAkE;AAE3D,KAAK,UAAU,eAAe,CAAC,EACpC,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,MAAM,GACS;IACf,eAAM,CAAC,KAAK,CAAC,4BAA4B,eAAe,GAAG,CAAC,CAAC;IAE7D,MAAM,qBAAqB,GAAG,MAAM,CAAC
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmfile/artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { coerceArray } from '../../../util/array';\nimport { exec } from '../../../util/exec';\nimport type { ToolConstraint } from '../../../util/exec/types';\nimport {\n getSiblingFileName,\n readLocalFile,\n writeLocalFile,\n} from '../../../util/fs';\nimport { getFile } from '../../../util/git';\nimport { regEx } from '../../../util/regex';\nimport { Result } from '../../../util/result';\nimport { parseYaml } from '../../../util/yaml';\nimport { generateHelmEnvs } from '../helmv3/common';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types';\nimport { Doc, LockVersion } from './schema';\nimport { generateRegistryLoginCmd, isOCIRegistry } from './utils';\n\nexport async function updateArtifacts({\n packageFileName,\n updatedDeps,\n newPackageFileContent,\n config,\n}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {\n logger.trace(`helmfile.updateArtifacts(${packageFileName})`);\n\n const { isLockFileMaintenance } = config;\n if (\n !isLockFileMaintenance &&\n (updatedDeps === undefined || updatedDeps.length < 1)\n ) {\n logger.debug('No updated helmfile deps - returning null');\n return null;\n }\n\n const lockFileName = getSiblingFileName(packageFileName, 'helmfile.lock');\n const existingLockFileContent = await getFile(lockFileName);\n\n if (is.falsy(existingLockFileContent)) {\n logger.debug('No helmfile.lock found');\n return null;\n }\n\n try {\n await writeLocalFile(packageFileName, newPackageFileContent);\n\n const toolConstraints: ToolConstraint[] = [\n {\n toolName: 'helm',\n constraint: config.constraints?.helm,\n },\n {\n toolName: 'helmfile',\n constraint:\n config.constraints?.helmfile ??\n Result.parse(existingLockFileContent, LockVersion).unwrapOrNull(),\n },\n ];\n const needKustomize = updatedDeps.some(\n (dep) => dep.managerData?.needKustomize,\n );\n if (needKustomize) {\n toolConstraints.push({\n toolName: 'kustomize',\n constraint: config.constraints?.kustomize,\n });\n }\n\n const cmd: string[] = [];\n const docs = parseYaml(newPackageFileContent, {\n removeTemplates: true,\n customSchema: Doc,\n failureBehaviour: 'filter',\n });\n\n for (const doc of docs) {\n for (const value of coerceArray(doc.repositories).filter(isOCIRegistry)) {\n const loginCmd = await generateRegistryLoginCmd(\n value.name,\n `https://${value.url}`,\n // this extracts the hostname from url like format ghcr.ip/helm-charts\n value.url.replace(regEx(/\\/.*/), ''),\n );\n\n if (loginCmd) {\n cmd.push(loginCmd);\n }\n }\n }\n\n cmd.push(`helmfile deps -f ${quote(packageFileName)}`);\n await exec(cmd, {\n docker: {},\n userConfiguredEnv: config.env,\n extraEnv: generateHelmEnvs(),\n toolConstraints,\n });\n\n const newHelmLockContent = await readLocalFile(lockFileName, 'utf8');\n if (existingLockFileContent === newHelmLockContent) {\n logger.debug('helmfile.lock is unchanged');\n return null;\n }\n\n return [\n {\n file: {\n type: 'addition',\n path: lockFileName,\n contents: newHelmLockContent,\n },\n },\n ];\n } catch (err) {\n // istanbul ignore if\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.debug({ err }, 'Failed to update Helmfile lock file');\n return [\n {\n artifactError: {\n lockFile: lockFileName,\n stderr: err.message,\n },\n },\n ];\n }\n}\n"]}
|
@@ -37,8 +37,8 @@ async function extractPackageFile(content, packageFile, config) {
|
|
37
37
|
// Always check for repositories in the current document and override the existing ones if any (as YAML does)
|
38
38
|
if (doc.repositories) {
|
39
39
|
registryData = {};
|
40
|
-
for (
|
41
|
-
registryData[
|
40
|
+
for (const repo of doc.repositories) {
|
41
|
+
registryData[repo.name] = repo;
|
42
42
|
}
|
43
43
|
logger_1.logger.debug({ registryAliases: registryData, packageFile }, `repositories discovered.`);
|
44
44
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmfile/extract.ts"],"names":[],"mappings":";;AAkCA,gDAuHC;;AAzJD,kEAAkC;AAClC,4CAAyC;AACzC,+CAAkD;AAClD,+CAA4C;AAC5C,6CAA+C;AAC/C,oDAA2D;AAC3D,gDAAuD;AACvD,uCAA8C;AAO9C,qCAAiD;AACjD,mCAGiB;AAEjB,SAAS,gBAAgB,CAAC,IAAwB,EAAE,GAAY;IAC9D,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,IAAA,aAAK,EAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,IAAA,aAAK,EAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,YAAoB;IACvC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAC7C,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CACrC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,WAAmB,EACnB,MAAqB;IAErB,MAAM,IAAI,GAAwB,EAAE,CAAC;IACrC,IAAI,YAAY,GAAmC,EAAE,CAAC;IACtD,4GAA4G;IAC5G,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,MAAM,IAAI,GAAU,IAAA,gBAAS,EAAC,OAAO,EAAE;QACrC,YAAY,EAAE,YAAc;QAC5B,gBAAgB,EAAE,QAAQ;QAC1B,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;IAEH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,6GAA6G;QAC7G,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACrB,YAAY,GAAG,EAAE,CAAC;YAClB,KAAK,IAAI,
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmfile/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { coerceArray } from '../../../util/array';\nimport { regEx } from '../../../util/regex';\nimport { parseYaml } from '../../../util/yaml';\nimport { DockerDatasource } from '../../datasource/docker';\nimport { HelmDatasource } from '../../datasource/helm';\nimport { isOCIRegistry } from '../helmv3/oci';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types';\nimport type { Doc, HelmRepository } from './schema';\nimport { Doc as documentSchema } from './schema';\nimport {\n kustomizationsKeysUsed,\n localChartHasKustomizationsYaml,\n} from './utils';\n\nfunction isValidChartName(name: string | undefined, oci: boolean): boolean {\n if (oci) {\n return !!name && !regEx(/[!@#$%^&*(),.?\":{}|<>A-Z]/).test(name);\n } else {\n return !!name && !regEx(/[!@#$%^&*(),.?\":{}/|<>A-Z]/).test(name);\n }\n}\n\nfunction isLocalPath(possiblePath: string): boolean {\n return ['./', '../', '/'].some((localPrefix) =>\n possiblePath.startsWith(localPrefix),\n );\n}\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n config: ExtractConfig,\n): Promise<PackageFileContent | null> {\n const deps: PackageDependency[] = [];\n let registryData: Record<string, HelmRepository> = {};\n // Record kustomization usage for all deps, since updating artifacts is run on the helmfile.yaml as a whole.\n let needKustomize = false;\n const docs: Doc[] = parseYaml(content, {\n customSchema: documentSchema,\n failureBehaviour: 'filter',\n removeTemplates: true,\n });\n\n for (const doc of docs) {\n // Always check for repositories in the current document and override the existing ones if any (as YAML does)\n if (doc.repositories) {\n registryData = {};\n for (const repo of doc.repositories) {\n registryData[repo.name] = repo;\n }\n logger.debug(\n { registryAliases: registryData, packageFile },\n `repositories discovered.`,\n );\n }\n\n for (const dep of coerceArray(doc.releases)) {\n let depName = dep.chart;\n let repoName: string | null = null;\n\n // If it starts with ./ ../ or / then it's a local path\n if (isLocalPath(dep.chart)) {\n if (\n kustomizationsKeysUsed(dep) ||\n (await localChartHasKustomizationsYaml(dep, packageFile))\n ) {\n needKustomize = true;\n }\n deps.push({\n depName: dep.name,\n skipReason: 'local-chart',\n });\n continue;\n }\n\n if (isOCIRegistry(dep.chart)) {\n const v = dep.chart.substring(6).split('/');\n depName = v.pop()!;\n repoName = v.join('/');\n } else if (dep.chart.includes('/')) {\n const v = dep.chart.split('/');\n repoName = v.shift()!;\n depName = v.join('/');\n } else {\n repoName = dep.chart;\n }\n\n if (!is.string(dep.version)) {\n deps.push({\n depName,\n skipReason: 'invalid-version',\n });\n continue;\n }\n\n const res: PackageDependency = {\n depName,\n currentValue: dep.version,\n registryUrls: [registryData[repoName]?.url]\n .concat([config.registryAliases?.[repoName]] as string[])\n .filter(is.string),\n };\n if (kustomizationsKeysUsed(dep)) {\n needKustomize = true;\n }\n\n if (isOCIRegistry(dep.chart)) {\n res.datasource = DockerDatasource.id;\n res.packageName = `${repoName}/${depName}`;\n } else if (registryData[repoName]?.oci) {\n res.datasource = DockerDatasource.id;\n const alias = registryData[repoName]?.url;\n if (alias) {\n res.packageName = `${alias}/${depName}`;\n }\n }\n\n // By definition on helm the chart name should be lowercase letter + number + -\n // However helmfile support templating of that field\n if (\n !isValidChartName(\n res.depName,\n isOCIRegistry(dep.chart) || (registryData[repoName]?.oci ?? false),\n )\n ) {\n res.skipReason = 'unsupported-chart-type';\n }\n\n // Skip in case we cannot locate the registry\n if (\n res.datasource !== DockerDatasource.id &&\n is.emptyArray(res.registryUrls)\n ) {\n res.skipReason = 'unknown-registry';\n }\n\n deps.push(res);\n }\n }\n\n return deps.length\n ? {\n deps,\n datasource: HelmDatasource.id,\n ...(needKustomize && { managerData: { needKustomize } }),\n }\n : null;\n}\n"]}
|
@@ -67,7 +67,7 @@ async function helmCommands(execOptions, manifestPath, repositories) {
|
|
67
67
|
}
|
68
68
|
async function updateArtifacts({ packageFileName, updatedDeps, newPackageFileContent, config, }) {
|
69
69
|
logger_1.logger.debug(`helmv3.updateArtifacts(${packageFileName})`);
|
70
|
-
const isLockFileMaintenance = config
|
70
|
+
const { isLockFileMaintenance } = config;
|
71
71
|
const isUpdateOptionAddChartArchives = config.postUpdateOptions?.includes('helmUpdateSubChartArchives');
|
72
72
|
if (!isLockFileMaintenance &&
|
73
73
|
(updatedDeps === undefined || updatedDeps.length < 1)) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmv3/artifacts.ts"],"names":[],"mappings":";;AAuFA,0CAqIC;;AA5ND,kEAAkC;AAClC,0DAAyB;AACzB,iCAA8B;AAC9B,sEAAoE;AACpE,4CAAyC;AACzC,6CAA0C;AAE1C,yCAK0B;AAC1B,2CAAkD;AAClD,4EAAsD;AACtD,iEAA2C;AAC3C,oDAA2D;AAC3D,gDAAuD;AAEvD,qCAA8D;AAC9D,+BAAuD;AAEvD,mCAIiB;AAEjB,KAAK,UAAU,YAAY,CACzB,WAAwB,EACxB,YAAoB,EACpB,YAA0B;IAE1B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,2CAA2C;IAC3C,MAAM,UAAU,GAAqB,YAAY;SAC9C,MAAM,CAAC,mBAAa,CAAC;SACrB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,OAAO;YACL,GAAG,KAAK;YACR,UAAU,EAAE,IAAA,qBAAe,EAAC,KAAK,CAAC,UAAU,CAAC;YAC7C,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC;gBACvB,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,0EAA0E;gBAC/H,QAAQ,EAAE,yBAAgB,CAAC,EAAE;aAC9B,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,+DAA+D;IAC/D,MAAM,IAAA,eAAI,EAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAA,yBAAgB,EAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;QACtE,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,yDAAyD;IACzD,MAAM,mBAAmB,GAAqB,YAAY;SACvD,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAA,mBAAa,EAAC,UAAU,CAAC,CAAC;SAClD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,OAAO;YACL,GAAG,KAAK;YACR,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC;gBACvB,GAAG,EAAE,KAAK,CAAC,UAAU;gBACrB,QAAQ,EAAE,qBAAc,CAAC,EAAE;aAC5B,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,oEAAoE;IACpE,mBAAmB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACpC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC9C,MAAM,UAAU,GAAG,CAAC,GAAG,IAAA,aAAK,EAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,QAAQ,IAAI,QAAQ,CAAC;QAC3C,IAAI,aAAa,EAAE,CAAC;YAClB,UAAU,CAAC,IAAI,CAAC,cAAc,IAAA,aAAK,EAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACjD,UAAU,CAAC,IAAI,CAAC,cAAc,IAAA,aAAK,EAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAA,aAAK,EAAC,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,0BAA0B,IAAA,aAAK,EAAC,IAAA,iBAAY,EAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAExE,MAAM,IAAA,WAAI,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAC/B,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,EACpC,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,MAAM,GACS;IACf,eAAM,CAAC,KAAK,CAAC,0BAA0B,eAAe,GAAG,CAAC,CAAC;IAE3D,MAAM,qBAAqB,GAAG,MAAM,CAAC,UAAU,KAAK,qBAAqB,CAAC;IAC1E,MAAM,8BAA8B,GAAG,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CACvE,4BAA4B,CAC7B,CAAC;IAEF,IACE,CAAC,qBAAqB;QACtB,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EACrD,CAAC;QACD,eAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,uBAAkB,EAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IACvE,MAAM,uBAAuB,GAAG,MAAM,IAAA,kBAAa,EAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC1E,IAAI,CAAC,uBAAuB,IAAI,CAAC,8BAA8B,EAAE,CAAC;QAChE,eAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,8DAA8D;QAC9D,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CACnC,qBAAqB,CACtB,CAAC;QACF,MAAM,KAAK,GAAG,uBAAuB;YACnC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAkB,uBAAuB,CAAC;YAChE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAEzB,MAAM,gBAAgB,GAAsB,EAAE,CAAC;QAC/C,wDAAwD;QACxD,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,gBAAgB,CAAC,IAAI,CAAC;gBACpB,YAAY,EAAE,IAAA,iCAAyB,EAAC,MAAM,CAAC,eAAe,CAAC;aAChE,CAAC,CAAC;QACL,CAAC;QACD,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEvC,MAAM,YAAY,GAAG,IAAA,uBAAe,EAAC,gBAAgB,CAAC,CAAC;QAEvD,MAAM,IAAA,mBAAc,EAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;QAC7D,eAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACxC,MAAM,kBAAkB,GAAmB;YACzC,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI;SACrC,CAAC;QAEF,MAAM,WAAW,GAAgB;YAC/B,MAAM,EAAE,EAAE;YACV,iBAAiB,EAAE,MAAM,CAAC,GAAG;YAC7B,QAAQ,EAAE,IAAA,yBAAgB,GAAE;YAC5B,eAAe,EAAE,CAAC,kBAAkB,CAAC;SACtC,CAAC;QACF,MAAM,YAAY,CAAC,WAAW,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;QAC/D,eAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAEjD,MAAM,WAAW,GAA4B,EAAE,CAAC;QAEhD,IAAI,YAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACvC,MAAM,kBAAkB,GAAG,MAAM,IAAA,kBAAa,EAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACrE,MAAM,iBAAiB,GAAG,uBAAuB,KAAK,kBAAkB,CAAC;YACzE,IAAI,iBAAiB,EAAE,CAAC;gBACtB,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE;wBACJ,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,YAAY;wBAClB,QAAQ,EAAE,kBAAkB;qBAC7B;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,eAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,IAAI,YAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAG,IAAA,uBAAkB,EAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAa,GAAE,CAAC;YACrC,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YAC9C,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YAE5C,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;gBAClC,2CAA2C;gBAC3C,IAAI,CAAC,IAAA,mBAAW,EAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC;oBACnC,SAAS;gBACX,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE;wBACJ,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,MAAM,IAAA,kBAAa,EAAC,IAAI,CAAC;qBACpC;iBACF,CAAC,CAAC;YACL,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;gBAClC,2CAA2C;gBAC3C,IAAI,CAAC,IAAA,mBAAW,EAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC;oBACnC,SAAS;gBACX,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE;wBACJ,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,IAAI;qBACX;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qBAAqB;QACrB,IAAI,GAAG,CAAC,OAAO,KAAK,gCAAe,EAAE,CAAC;YACpC,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,iCAAiC,CAAC,CAAC;QACzD,OAAO;YACL;gBACE,aAAa,EAAE;oBACb,QAAQ,EAAE,YAAY;oBACtB,MAAM,EAAE,GAAG,CAAC,OAAO;iBACpB;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport pMap from 'p-map';\nimport { quote } from 'shlex';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { exec } from '../../../util/exec';\nimport type { ExecOptions, ToolConstraint } from '../../../util/exec/types';\nimport {\n getParentDir,\n getSiblingFileName,\n readLocalFile,\n writeLocalFile,\n} from '../../../util/fs';\nimport { getRepoStatus } from '../../../util/git';\nimport * as hostRules from '../../../util/host-rules';\nimport * as yaml from '../../../util/yaml';\nimport { DockerDatasource } from '../../datasource/docker';\nimport { HelmDatasource } from '../../datasource/helm';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types';\nimport { generateHelmEnvs, generateLoginCmd } from './common';\nimport { isOCIRegistry, removeOCIPrefix } from './oci';\nimport type { ChartDefinition, Repository, RepositoryRule } from './types';\nimport {\n aliasRecordToRepositories,\n getRepositories,\n isFileInDir,\n} from './utils';\n\nasync function helmCommands(\n execOptions: ExecOptions,\n manifestPath: string,\n repositories: Repository[],\n): Promise<void> {\n const cmd: string[] = [];\n // get OCI registries and detect host rules\n const registries: RepositoryRule[] = repositories\n .filter(isOCIRegistry)\n .map((value) => {\n return {\n ...value,\n repository: removeOCIPrefix(value.repository),\n hostRule: hostRules.find({\n url: value.repository.replace('oci://', 'https://'), //TODO we need to replace this, as oci:// will not be accepted as protocol\n hostType: DockerDatasource.id,\n }),\n };\n });\n\n // if credentials for the registry have been found, log into it\n await pMap(registries, async (value) => {\n const loginCmd = await generateLoginCmd(value, 'helm registry login');\n if (loginCmd) {\n cmd.push(loginCmd);\n }\n });\n\n // find classic Chart repositories and fitting host rules\n const classicRepositories: RepositoryRule[] = repositories\n .filter((repository) => !isOCIRegistry(repository))\n .map((value) => {\n return {\n ...value,\n hostRule: hostRules.find({\n url: value.repository,\n hostType: HelmDatasource.id,\n }),\n };\n });\n\n // add helm repos if an alias or credentials for the url are defined\n classicRepositories.forEach((value) => {\n const { username, password } = value.hostRule;\n const parameters = [`${quote(value.repository)}`, `--force-update`];\n const isPrivateRepo = username && password;\n if (isPrivateRepo) {\n parameters.push(`--username ${quote(username)}`);\n parameters.push(`--password ${quote(password)}`);\n }\n\n cmd.push(`helm repo add ${quote(value.name)} ${parameters.join(' ')}`);\n });\n\n cmd.push(`helm dependency update ${quote(getParentDir(manifestPath))}`);\n\n await exec(cmd, execOptions);\n}\n\nexport async function updateArtifacts({\n packageFileName,\n updatedDeps,\n newPackageFileContent,\n config,\n}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {\n logger.debug(`helmv3.updateArtifacts(${packageFileName})`);\n\n const isLockFileMaintenance = config.updateType === 'lockFileMaintenance';\n const isUpdateOptionAddChartArchives = config.postUpdateOptions?.includes(\n 'helmUpdateSubChartArchives',\n );\n\n if (\n !isLockFileMaintenance &&\n (updatedDeps === undefined || updatedDeps.length < 1)\n ) {\n logger.debug('No updated helmv3 deps - returning null');\n return null;\n }\n\n const lockFileName = getSiblingFileName(packageFileName, 'Chart.lock');\n const existingLockFileContent = await readLocalFile(lockFileName, 'utf8');\n if (!existingLockFileContent && !isUpdateOptionAddChartArchives) {\n logger.debug('No Chart.lock found');\n return null;\n }\n try {\n // get repositories and registries defined in the package file\n // TODO: use schema (#9610)\n const packages = yaml.parseSingleYaml<ChartDefinition>(\n newPackageFileContent,\n );\n const locks = existingLockFileContent\n ? yaml.parseSingleYaml<ChartDefinition>(existingLockFileContent)\n : { dependencies: [] };\n\n const chartDefinitions: ChartDefinition[] = [];\n // prioritize registryAlias naming for Helm repositories\n if (config.registryAliases) {\n chartDefinitions.push({\n dependencies: aliasRecordToRepositories(config.registryAliases),\n });\n }\n chartDefinitions.push(packages, locks);\n\n const repositories = getRepositories(chartDefinitions);\n\n await writeLocalFile(packageFileName, newPackageFileContent);\n logger.debug('Updating Helm artifacts');\n const helmToolConstraint: ToolConstraint = {\n toolName: 'helm',\n constraint: config.constraints?.helm,\n };\n\n const execOptions: ExecOptions = {\n docker: {},\n userConfiguredEnv: config.env,\n extraEnv: generateHelmEnvs(),\n toolConstraints: [helmToolConstraint],\n };\n await helmCommands(execOptions, packageFileName, repositories);\n logger.debug('Returning updated Helm artifacts');\n\n const fileChanges: UpdateArtifactsResult[] = [];\n\n if (is.truthy(existingLockFileContent)) {\n const newHelmLockContent = await readLocalFile(lockFileName, 'utf8');\n const isLockFileChanged = existingLockFileContent !== newHelmLockContent;\n if (isLockFileChanged) {\n fileChanges.push({\n file: {\n type: 'addition',\n path: lockFileName,\n contents: newHelmLockContent,\n },\n });\n } else {\n logger.debug('Chart.lock is unchanged');\n }\n }\n\n // add modified helm chart archives to artifacts\n if (is.truthy(isUpdateOptionAddChartArchives)) {\n const chartsPath = getSiblingFileName(packageFileName, 'charts');\n const status = await getRepoStatus();\n const chartsAddition = status.not_added ?? [];\n const chartsDeletion = status.deleted ?? [];\n\n for (const file of chartsAddition) {\n // only add artifacts in the chart sub path\n if (!isFileInDir(chartsPath, file)) {\n continue;\n }\n fileChanges.push({\n file: {\n type: 'addition',\n path: file,\n contents: await readLocalFile(file),\n },\n });\n }\n\n for (const file of chartsDeletion) {\n // only add artifacts in the chart sub path\n if (!isFileInDir(chartsPath, file)) {\n continue;\n }\n fileChanges.push({\n file: {\n type: 'deletion',\n path: file,\n },\n });\n }\n }\n\n return fileChanges.length > 0 ? fileChanges : null;\n } catch (err) {\n // istanbul ignore if\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.debug({ err }, 'Failed to update Helm lock file');\n return [\n {\n artifactError: {\n lockFile: lockFileName,\n stderr: err.message,\n },\n },\n ];\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmv3/artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport pMap from 'p-map';\nimport { quote } from 'shlex';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { exec } from '../../../util/exec';\nimport type { ExecOptions, ToolConstraint } from '../../../util/exec/types';\nimport {\n getParentDir,\n getSiblingFileName,\n readLocalFile,\n writeLocalFile,\n} from '../../../util/fs';\nimport { getRepoStatus } from '../../../util/git';\nimport * as hostRules from '../../../util/host-rules';\nimport * as yaml from '../../../util/yaml';\nimport { DockerDatasource } from '../../datasource/docker';\nimport { HelmDatasource } from '../../datasource/helm';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types';\nimport { generateHelmEnvs, generateLoginCmd } from './common';\nimport { isOCIRegistry, removeOCIPrefix } from './oci';\nimport type { ChartDefinition, Repository, RepositoryRule } from './types';\nimport {\n aliasRecordToRepositories,\n getRepositories,\n isFileInDir,\n} from './utils';\n\nasync function helmCommands(\n execOptions: ExecOptions,\n manifestPath: string,\n repositories: Repository[],\n): Promise<void> {\n const cmd: string[] = [];\n // get OCI registries and detect host rules\n const registries: RepositoryRule[] = repositories\n .filter(isOCIRegistry)\n .map((value) => {\n return {\n ...value,\n repository: removeOCIPrefix(value.repository),\n hostRule: hostRules.find({\n url: value.repository.replace('oci://', 'https://'), //TODO we need to replace this, as oci:// will not be accepted as protocol\n hostType: DockerDatasource.id,\n }),\n };\n });\n\n // if credentials for the registry have been found, log into it\n await pMap(registries, async (value) => {\n const loginCmd = await generateLoginCmd(value, 'helm registry login');\n if (loginCmd) {\n cmd.push(loginCmd);\n }\n });\n\n // find classic Chart repositories and fitting host rules\n const classicRepositories: RepositoryRule[] = repositories\n .filter((repository) => !isOCIRegistry(repository))\n .map((value) => {\n return {\n ...value,\n hostRule: hostRules.find({\n url: value.repository,\n hostType: HelmDatasource.id,\n }),\n };\n });\n\n // add helm repos if an alias or credentials for the url are defined\n classicRepositories.forEach((value) => {\n const { username, password } = value.hostRule;\n const parameters = [`${quote(value.repository)}`, `--force-update`];\n const isPrivateRepo = username && password;\n if (isPrivateRepo) {\n parameters.push(`--username ${quote(username)}`);\n parameters.push(`--password ${quote(password)}`);\n }\n\n cmd.push(`helm repo add ${quote(value.name)} ${parameters.join(' ')}`);\n });\n\n cmd.push(`helm dependency update ${quote(getParentDir(manifestPath))}`);\n\n await exec(cmd, execOptions);\n}\n\nexport async function updateArtifacts({\n packageFileName,\n updatedDeps,\n newPackageFileContent,\n config,\n}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {\n logger.debug(`helmv3.updateArtifacts(${packageFileName})`);\n\n const { isLockFileMaintenance } = config;\n const isUpdateOptionAddChartArchives = config.postUpdateOptions?.includes(\n 'helmUpdateSubChartArchives',\n );\n\n if (\n !isLockFileMaintenance &&\n (updatedDeps === undefined || updatedDeps.length < 1)\n ) {\n logger.debug('No updated helmv3 deps - returning null');\n return null;\n }\n\n const lockFileName = getSiblingFileName(packageFileName, 'Chart.lock');\n const existingLockFileContent = await readLocalFile(lockFileName, 'utf8');\n if (!existingLockFileContent && !isUpdateOptionAddChartArchives) {\n logger.debug('No Chart.lock found');\n return null;\n }\n try {\n // get repositories and registries defined in the package file\n // TODO: use schema (#9610)\n const packages = yaml.parseSingleYaml<ChartDefinition>(\n newPackageFileContent,\n );\n const locks = existingLockFileContent\n ? yaml.parseSingleYaml<ChartDefinition>(existingLockFileContent)\n : { dependencies: [] };\n\n const chartDefinitions: ChartDefinition[] = [];\n // prioritize registryAlias naming for Helm repositories\n if (config.registryAliases) {\n chartDefinitions.push({\n dependencies: aliasRecordToRepositories(config.registryAliases),\n });\n }\n chartDefinitions.push(packages, locks);\n\n const repositories = getRepositories(chartDefinitions);\n\n await writeLocalFile(packageFileName, newPackageFileContent);\n logger.debug('Updating Helm artifacts');\n const helmToolConstraint: ToolConstraint = {\n toolName: 'helm',\n constraint: config.constraints?.helm,\n };\n\n const execOptions: ExecOptions = {\n docker: {},\n userConfiguredEnv: config.env,\n extraEnv: generateHelmEnvs(),\n toolConstraints: [helmToolConstraint],\n };\n await helmCommands(execOptions, packageFileName, repositories);\n logger.debug('Returning updated Helm artifacts');\n\n const fileChanges: UpdateArtifactsResult[] = [];\n\n if (is.truthy(existingLockFileContent)) {\n const newHelmLockContent = await readLocalFile(lockFileName, 'utf8');\n const isLockFileChanged = existingLockFileContent !== newHelmLockContent;\n if (isLockFileChanged) {\n fileChanges.push({\n file: {\n type: 'addition',\n path: lockFileName,\n contents: newHelmLockContent,\n },\n });\n } else {\n logger.debug('Chart.lock is unchanged');\n }\n }\n\n // add modified helm chart archives to artifacts\n if (is.truthy(isUpdateOptionAddChartArchives)) {\n const chartsPath = getSiblingFileName(packageFileName, 'charts');\n const status = await getRepoStatus();\n const chartsAddition = status.not_added ?? [];\n const chartsDeletion = status.deleted ?? [];\n\n for (const file of chartsAddition) {\n // only add artifacts in the chart sub path\n if (!isFileInDir(chartsPath, file)) {\n continue;\n }\n fileChanges.push({\n file: {\n type: 'addition',\n path: file,\n contents: await readLocalFile(file),\n },\n });\n }\n\n for (const file of chartsDeletion) {\n // only add artifacts in the chart sub path\n if (!isFileInDir(chartsPath, file)) {\n continue;\n }\n fileChanges.push({\n file: {\n type: 'deletion',\n path: file,\n },\n });\n }\n }\n\n return fileChanges.length > 0 ? fileChanges : null;\n } catch (err) {\n // istanbul ignore if\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.debug({ err }, 'Failed to update Helm lock file');\n return [\n {\n artifactError: {\n lockFile: lockFileName,\n stderr: err.message,\n },\n },\n ];\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmv3/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { getSiblingFileName, localPathExists } from '../../../util/fs';\nimport { parseSingleYaml } from '../../../util/yaml';\nimport { HelmDatasource } from '../../datasource/helm';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types';\nimport { parseRepository, resolveAlias } from './utils';\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n config: ExtractConfig,\n): Promise<PackageFileContent | null> {\n let chart: {\n apiVersion: string;\n name: string;\n version: string;\n dependencies:
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmv3/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { getSiblingFileName, localPathExists } from '../../../util/fs';\nimport { parseSingleYaml } from '../../../util/yaml';\nimport { HelmDatasource } from '../../datasource/helm';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types';\nimport { parseRepository, resolveAlias } from './utils';\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n config: ExtractConfig,\n): Promise<PackageFileContent | null> {\n let chart: {\n apiVersion: string;\n name: string;\n version: string;\n dependencies: { name: string; version: string; repository: string }[];\n };\n try {\n // TODO: use schema (#9610)\n chart = parseSingleYaml(content);\n if (!(chart?.apiVersion && chart.name && chart.version)) {\n logger.debug(\n { packageFile },\n 'Failed to find required fields in Chart.yaml',\n );\n return null;\n }\n if (chart.apiVersion !== 'v2') {\n logger.debug(\n { packageFile },\n 'Unsupported Chart apiVersion. Only v2 is supported.',\n );\n return null;\n }\n } catch {\n logger.debug({ packageFile }, `Failed to parse helm Chart.yaml`);\n return null;\n }\n const packageFileVersion = chart.version;\n let deps: PackageDependency[] = [];\n if (!is.nonEmptyArray(chart?.dependencies)) {\n logger.debug(`Chart has no dependencies in ${packageFile}`);\n return null;\n }\n const validDependencies = chart.dependencies.filter(\n (dep) => is.nonEmptyString(dep.name) && is.nonEmptyString(dep.version),\n );\n if (!is.nonEmptyArray(validDependencies)) {\n logger.debug('Name and/or version missing for all dependencies');\n return null;\n }\n deps = validDependencies.map((dep) => {\n const res: PackageDependency = {\n depName: dep.name,\n currentValue: dep.version,\n };\n if (!dep.repository) {\n res.skipReason = 'no-repository';\n return res;\n }\n\n const repository = resolveAlias(dep.repository, config.registryAliases!);\n if (!repository) {\n res.skipReason = 'placeholder-url';\n return res;\n }\n\n const result: PackageDependency = {\n ...res,\n ...parseRepository(dep.name, repository),\n };\n return result;\n });\n const res: PackageFileContent = {\n deps,\n datasource: HelmDatasource.id,\n packageFileVersion,\n };\n const lockFileName = getSiblingFileName(packageFile, 'Chart.lock');\n // istanbul ignore if\n if (await localPathExists(lockFileName)) {\n res.lockFiles = [lockFileName];\n }\n return res;\n}\n"]}
|
@@ -48,7 +48,7 @@ function resolveAlias(repository, registryAliases) {
|
|
48
48
|
if (!isAlias(repository)) {
|
49
49
|
return repository;
|
50
50
|
}
|
51
|
-
const repoWithPrefixRemoved = repository.slice(repository
|
51
|
+
const repoWithPrefixRemoved = repository.slice(repository.startsWith('@') ? 1 : 6);
|
52
52
|
const alias = registryAliases[repoWithPrefixRemoved];
|
53
53
|
if (alias) {
|
54
54
|
return alias;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmv3/utils.ts"],"names":[],"mappings":";;AAOA,0CA2BC;AAUD,
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmv3/utils.ts"],"names":[],"mappings":";;AAOA,0CA2BC;AAUD,oCAgBC;AAED,0CAmBC;AAED,0BAKC;AAED,8DASC;AAED,kCAEC;;AAvGD,0DAA0B;AAC1B,4CAAyC;AACzC,oDAA2D;AAE3D,+BAAwC;AAGxC,SAAgB,eAAe,CAC7B,OAAe,EACf,aAAqB;IAErB,MAAM,GAAG,GAAsB,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;QACnC,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC;YACrB,KAAK,MAAM;gBACT,GAAG,CAAC,UAAU,GAAG,yBAAgB,CAAC,EAAE,CAAC;gBACrC,GAAG,CAAC,WAAW,GAAG,GAAG,IAAA,qBAAe,EAAC,aAAa,CAAC,IAAI,OAAO,EAAE,CAAC;gBACjE,4CAA4C;gBAC5C,4CAA4C;gBAC5C,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;gBACvB,MAAM;YACR,KAAK,OAAO;gBACV,GAAG,CAAC,UAAU,GAAG,kBAAkB,CAAC;gBACpC,MAAM;YACR;gBACE,GAAG,CAAC,YAAY,GAAG,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;QAC3C,GAAG,CAAC,UAAU,GAAG,aAAa,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,YAAY,CAC1B,UAAkB,EAClB,eAAuC;IAEvC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACzB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,qBAAqB,GAAG,UAAU,CAAC,KAAK,CAC5C,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnC,CAAC;IACF,MAAM,KAAK,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAC;IACrD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,eAAe,CAAC,WAA8B;IAC5D,MAAM,cAAc,GAAG,WAAW;SAC/B,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;SACtC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,6GAA6G;SAC3J,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,6BAA6B;SACrF,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,iDAAiD;SACpH,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAClB,kEAAkE;QAClE,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,UAAU,EAAE,UAAU,CAAC,UAAU;SAClC,CAAC;IACJ,CAAC,CAAC,CAAC;IACL,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACxB,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QACzB,OAAO,CAAC,SAAS,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,OAAO,CAAC,UAAkB;IACxC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,SAAgB,yBAAyB,CACvC,eAAuC;IAEvC,OAAO,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE;QAC1D,OAAO;YACL,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,WAAW,CAAC,GAAW,EAAE,IAAY;IACnD,OAAO,eAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;AACrC,CAAC","sourcesContent":["import upath from 'upath';\nimport { logger } from '../../../logger';\nimport { DockerDatasource } from '../../datasource/docker';\nimport type { PackageDependency } from '../types';\nimport { removeOCIPrefix } from './oci';\nimport type { ChartDefinition, Repository } from './types';\n\nexport function parseRepository(\n depName: string,\n repositoryURL: string,\n): PackageDependency {\n const res: PackageDependency = {};\n\n try {\n const url = new URL(repositoryURL);\n switch (url.protocol) {\n case 'oci:':\n res.datasource = DockerDatasource.id;\n res.packageName = `${removeOCIPrefix(repositoryURL)}/${depName}`;\n // https://github.com/helm/helm/issues/10312\n // https://github.com/helm/helm/issues/10678\n res.pinDigests = false;\n break;\n case 'file:':\n res.skipReason = 'local-dependency';\n break;\n default:\n res.registryUrls = [repositoryURL];\n }\n } catch (err) {\n logger.debug({ err }, 'Error parsing url');\n res.skipReason = 'invalid-url';\n }\n return res;\n}\n\n/**\n * Resolves alias in repository string.\n *\n * @param repository to be resolved string\n * @param registryAliases Records containing registryAliases as key and to be resolved URLs as values\n *\n * @returns resolved alias. If repository does not contain an alias the repository string will be returned. Should it contain an alias which can not be resolved using `registryAliases`, null will be returned\n */\nexport function resolveAlias(\n repository: string,\n registryAliases: Record<string, string>,\n): string | null {\n if (!isAlias(repository)) {\n return repository;\n }\n\n const repoWithPrefixRemoved = repository.slice(\n repository.startsWith('@') ? 1 : 6,\n );\n const alias = registryAliases[repoWithPrefixRemoved];\n if (alias) {\n return alias;\n }\n return null;\n}\n\nexport function getRepositories(definitions: ChartDefinition[]): Repository[] {\n const repositoryList = definitions\n .flatMap((value) => value.dependencies)\n .filter((dependency) => dependency.repository) // only keep non-local references --> if no repository is defined the chart will be searched in charts/<name>\n .filter((dependency) => !isAlias(dependency.repository)) // do not add registryAliases\n .filter((dependency) => !dependency.repository.startsWith('file:')) // skip repositories which are locally referenced\n .map((dependency) => {\n // remove additional keys to prevent interference at deduplication\n return {\n name: dependency.name,\n repository: dependency.repository,\n };\n });\n const dedup = new Set();\n return repositoryList.filter((el) => {\n const duplicate = dedup.has(el.repository);\n dedup.add(el.repository);\n return !duplicate;\n });\n}\n\nexport function isAlias(repository: string): boolean {\n if (!repository) {\n return false;\n }\n return repository.startsWith('@') || repository.startsWith('alias:');\n}\n\nexport function aliasRecordToRepositories(\n registryAliases: Record<string, string>,\n): Repository[] {\n return Object.entries(registryAliases).map(([alias, url]) => {\n return {\n name: alias,\n repository: url,\n };\n });\n}\n\nexport function isFileInDir(dir: string, file: string): boolean {\n return upath.dirname(file) === dir;\n}\n"]}
|
@@ -20,8 +20,7 @@ function isSpace(c) {
|
|
20
20
|
function removeLineComments(content) {
|
21
21
|
let newContent = '';
|
22
22
|
let comment = false;
|
23
|
-
for (
|
24
|
-
const c = content[i];
|
23
|
+
for (const c of content) {
|
25
24
|
if (c === '#') {
|
26
25
|
comment = true;
|
27
26
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../lib/modules/manager/homebrew/util.ts"],"names":[],"mappings":";;AAAA,oBAaC;AAED,0BAEC;
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../lib/modules/manager/homebrew/util.ts"],"names":[],"mappings":";;AAAA,oBAaC;AAED,0BAEC;AA4CD,wCAIC;AAjED,SAAgB,IAAI,CAClB,GAAW,EACX,OAAe,EACf,IAA4B;IAE5B,IAAI,CAAC,GAAG,GAAG,CAAC;IACZ,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAgB,OAAO,CAAC,CAAS;IAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,uCAAuC;AACvC,SAAS,kBAAkB,CAAC,OAAe;IACzC,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACd,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACf,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,UAAU,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,8DAA8D;AAC9D,SAAS,uBAAuB,CAAC,OAAe;IAC9C,MAAM,WAAW,GAAG,gBAAgB,CAAC;IACrC,MAAM,SAAS,GAAG,cAAc,CAAC;IACjC,IAAI,UAAU,GAAG,OAAO,CAAC;IACzB,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC3B,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;QACD,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC3B,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;QACD,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC;QACnB,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,cAAc,CAAC,OAAe;IAC5C,IAAI,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC7C,UAAU,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACjD,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["export function skip(\n idx: number,\n content: string,\n cond: (s: string) => boolean,\n): number {\n let i = idx;\n while (i < content.length) {\n if (!cond(content[i])) {\n return i;\n }\n i += 1;\n }\n return i;\n}\n\nexport function isSpace(c: string): boolean {\n return /\\s/.test(c);\n}\n\n// Remove line comments starting with #\nfunction removeLineComments(content: string): string {\n let newContent = '';\n let comment = false;\n for (const c of content) {\n if (c === '#') {\n comment = true;\n }\n if (comment) {\n if (c === '\\n') {\n comment = false;\n }\n }\n if (!comment) {\n newContent += c;\n }\n }\n return newContent;\n}\n\n// Remove multi-line comments enclosed between =begin and =end\nfunction removeMultiLineComments(content: string): string {\n const beginRegExp = /(^|\\n)=begin\\s/;\n const endRegExp = /(^|\\n)=end\\s/;\n let newContent = content;\n let i = newContent.search(beginRegExp);\n let j = newContent.search(endRegExp);\n while (i !== -1 && j !== -1) {\n if (newContent[i] === '\\n') {\n i += 1;\n }\n if (newContent[j] === '\\n') {\n j += 1;\n }\n j += '=end'.length;\n newContent = newContent.substring(0, i) + newContent.substring(j);\n i = newContent.search(beginRegExp);\n j = newContent.search(endRegExp);\n }\n return newContent;\n}\n\nexport function removeComments(content: string): string {\n let newContent = removeLineComments(content);\n newContent = removeMultiLineComments(newContent);\n return newContent;\n}\n"]}
|
@@ -8,7 +8,7 @@ const string_1 = require("../../../util/string");
|
|
8
8
|
const url_1 = require("../../../util/url");
|
9
9
|
function extractPackageFile(content, packageFile) {
|
10
10
|
logger_1.logger.trace({ packageFile }, 'jsonnet-bundler.extractPackageFile()');
|
11
|
-
if (packageFile.
|
11
|
+
if (packageFile.includes('vendor/')) {
|
12
12
|
return null;
|
13
13
|
}
|
14
14
|
const deps = [];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/jsonnet-bundler/extract.ts"],"names":[],"mappings":";;AAQA,gDA+BC;AAvCD,iCAA6B;AAC7B,4CAAyC;AACzC,+CAAkD;AAClD,iDAAoD;AACpD,2CAA6C;AAI7C,SAAgB,kBAAkB,CAChC,OAAe,EACf,WAAmB;IAEnB,eAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,EAAE,sCAAsC,CAAC,CAAC;IAEtE,IAAI,WAAW,CAAC,
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/jsonnet-bundler/extract.ts"],"names":[],"mappings":";;AAQA,gDA+BC;AAvCD,iCAA6B;AAC7B,4CAAyC;AACzC,+CAAkD;AAClD,iDAAoD;AACpD,2CAA6C;AAI7C,SAAgB,kBAAkB,CAChC,OAAe,EACf,WAAmB;IAEnB,eAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,EAAE,sCAAsC,CAAC,CAAC;IAEtE,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAwB,EAAE,CAAC;IACrC,IAAI,WAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,eAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,EAAE,cAAc,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,IAAA,mBAAW,EAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/D,MAAM,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAsB;IAC/C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,cAAQ,EAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,YAAI,EAClB,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EACxC,IAAA,qBAAY,EAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAC3C,CAAC;IAEF,OAAO;QACL,OAAO;QACP,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM;QACzC,YAAY,EAAE,UAAU,CAAC,OAAO;QAChC,WAAW,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;KACtD,CAAC;AACJ,CAAC","sourcesContent":["import { join } from 'upath';\nimport { logger } from '../../../logger';\nimport { coerceArray } from '../../../util/array';\nimport { coerceString } from '../../../util/string';\nimport { parseUrl } from '../../../util/url';\nimport type { PackageDependency, PackageFileContent } from '../types';\nimport type { Dependency, JsonnetFile } from './types';\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n): PackageFileContent | null {\n logger.trace({ packageFile }, 'jsonnet-bundler.extractPackageFile()');\n\n if (packageFile.includes('vendor/')) {\n return null;\n }\n\n const deps: PackageDependency[] = [];\n let jsonnetFile: JsonnetFile;\n try {\n jsonnetFile = JSON.parse(content) as JsonnetFile;\n } catch {\n logger.debug({ packageFile }, `Invalid JSON`);\n return null;\n }\n\n for (const dependency of coerceArray(jsonnetFile.dependencies)) {\n const dep = extractDependency(dependency);\n if (dep) {\n deps.push(dep);\n }\n }\n\n if (!deps.length) {\n return null;\n }\n\n return { deps };\n}\n\nfunction extractDependency(dependency: Dependency): PackageDependency | null {\n if (!dependency.source.git) {\n return null;\n }\n\n const gitRemote = parseUrl(dependency.source.git.remote);\n if (!gitRemote) {\n logger.debug({ dependency }, 'Invalid Git remote URL');\n return null;\n }\n\n const depName = join(\n gitRemote.host,\n gitRemote.pathname.replace(/\\.git$/, ''),\n coerceString(dependency.source.git.subdir),\n );\n\n return {\n depName,\n packageName: dependency.source.git.remote,\n currentValue: dependency.version,\n managerData: { subdir: dependency.source.git.subdir },\n };\n}\n"]}
|
@@ -141,8 +141,7 @@ const defRegex = (0, regex_1.regEx)(/^[\s,]*\([\s,]*def[\s,]+(?<varName>[-+*=<>.
|
|
141
141
|
function extractVariables(content) {
|
142
142
|
const result = {};
|
143
143
|
const lines = content.split(regex_1.newlineRegex);
|
144
|
-
for (
|
145
|
-
const line = lines[idx];
|
144
|
+
for (const line of lines) {
|
146
145
|
const match = defRegex.exec(line);
|
147
146
|
if (match?.groups) {
|
148
147
|
const { varName: key, stringValue: val } = match.groups;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/leiningen/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import { coerceArray } from '../../../util/array';\nimport { newlineRegex, regEx } from '../../../util/regex';\nimport { ClojureDatasource } from '../../datasource/clojure';\nimport type { PackageDependency, PackageFileContent } from '../types';\nimport type { ExtractContext, ExtractedVariables } from './types';\n\nexport function trimAtKey(str: string, kwName: string): string | null {\n const regex = new RegExp(`:${kwName}(?=\\\\s)`); // TODO #12872 lookahead\n const keyOffset = str.search(regex);\n if (keyOffset < 0) {\n return null;\n }\n const withSpaces = str.slice(keyOffset + kwName.length + 1);\n const valueOffset = withSpaces.search(regEx(/[^\\s]/));\n if (valueOffset < 0) {\n return null;\n }\n return withSpaces.slice(valueOffset);\n}\n\nexport function expandDepName(name: string): string {\n return name.includes('/') ? name.replace('/', ':') : `${name}:${name}`;\n}\n\nexport function extractFromVectors(\n str: string,\n ctx: ExtractContext = {},\n vars: ExtractedVariables = {},\n dimensions: 1 | 2 = 2,\n): PackageDependency[] {\n if (!str.startsWith('[')) {\n return [];\n }\n let balance = 0;\n const result: PackageDependency[] = [];\n let idx = 0;\n let vecPos = 0;\n let artifactId = '';\n let version = '';\n // Are we currently parsing a comment? If so, at what depth?\n let commentLevel: number | null = null;\n\n const isSpace = (ch: string | null): boolean =>\n !!ch && regEx(/[\\s,]/).test(ch);\n\n const cleanStrLiteral = (s: string): string =>\n s.replace(regEx(/^\"/), '').replace(regEx(/\"$/), '');\n\n const yieldDep = (): void => {\n if (!commentLevel && artifactId && version) {\n const depName = expandDepName(cleanStrLiteral(artifactId));\n if (version.startsWith('~')) {\n const varName = version.replace(regEx(/^~\\s*/), '');\n const currentValue = vars[varName];\n if (currentValue) {\n result.push({\n ...ctx,\n datasource: ClojureDatasource.id,\n depName,\n currentValue,\n sharedVariableName: varName,\n });\n }\n } else {\n result.push({\n ...ctx,\n datasource: ClojureDatasource.id,\n depName,\n currentValue: cleanStrLiteral(version),\n });\n }\n }\n artifactId = '';\n version = '';\n };\n\n let prevChar: string | null = null;\n while (idx < str.length) {\n const char = str.charAt(idx);\n\n if (str.substring(idx).startsWith('#_[')) {\n commentLevel = balance;\n }\n\n if (char === '[') {\n balance += 1;\n if (balance === dimensions) {\n vecPos = 0;\n }\n } else if (char === ']') {\n balance -= 1;\n\n if (commentLevel === balance) {\n artifactId = '';\n version = '';\n commentLevel = null;\n }\n\n if (balance === dimensions - 1) {\n yieldDep();\n }\n\n if (balance === 0) {\n break;\n }\n } else if (balance === dimensions) {\n if (isSpace(char)) {\n if (!isSpace(prevChar)) {\n vecPos += 1;\n }\n } else if (vecPos === 0) {\n artifactId += char;\n } else if (vecPos === 1) {\n version += char;\n }\n }\n prevChar = char;\n idx += 1;\n }\n return result;\n}\n\nfunction extractLeinRepos(content: string): string[] {\n const result: string[] = [];\n\n const repoContent = trimAtKey(\n content.replace(/;;.*(?=[\\r\\n])/g, ''), // get rid of comments // TODO #12872 lookahead\n 'repositories',\n );\n\n if (repoContent) {\n let balance = 0;\n let endIdx = 0;\n for (let idx = 0; idx < repoContent.length; idx += 1) {\n const char = repoContent.charAt(idx);\n if (char === '[') {\n balance += 1;\n } else if (char === ']') {\n balance -= 1;\n if (balance <= 0) {\n endIdx = idx;\n break;\n }\n }\n }\n const repoSectionContent = repoContent.slice(0, endIdx);\n const matches = coerceArray(\n repoSectionContent.match(regEx(/\"https?:\\/\\/[^\"]*\"/g)),\n );\n const urls = matches.map((x) =>\n x.replace(regEx(/^\"/), '').replace(regEx(/\"$/), ''),\n );\n urls.forEach((url) => result.push(url));\n }\n\n return result;\n}\n\nconst defRegex = regEx(\n /^[\\s,]*\\([\\s,]*def[\\s,]+(?<varName>[-+*=<>.!?#$%&_|a-zA-Z][-+*=<>.!?#$%&_|a-zA-Z0-9']+)[\\s,]*\"(?<stringValue>[^\"]*)\"[\\s,]*\\)[\\s,]*$/,\n);\n\nexport function extractVariables(content: string): ExtractedVariables {\n const result: ExtractedVariables = {};\n const lines = content.split(newlineRegex);\n for (let idx = 0; idx < lines.length; idx += 1) {\n const line = lines[idx];\n const match = defRegex.exec(line);\n if (match?.groups) {\n const { varName: key, stringValue: val } = match.groups;\n result[key] = val;\n }\n }\n return result;\n}\n\ninterface CollectDepsOptions {\n nested: boolean;\n depType?: string;\n}\n\nfunction collectDeps(\n content: string,\n key: string,\n registryUrls: string[],\n vars: ExtractedVariables,\n options: CollectDepsOptions = {\n nested: true,\n },\n): PackageDependency[] {\n const ctx = {\n depType: options.depType ?? key,\n registryUrls,\n };\n // A vector like [[\"dep-1\" \"1.0.0\"] [\"dep-2\" \"0.0.0\"]] is nested\n // A vector like [\"dep-1\" \"1.0.0\"] is not\n const dimensions = options.nested ? 2 : 1;\n let result: PackageDependency[] = [];\n let restContent = trimAtKey(content, key);\n while (restContent) {\n result = [\n ...result,\n ...extractFromVectors(restContent, ctx, vars, dimensions),\n ];\n restContent = trimAtKey(restContent, key);\n }\n return result;\n}\n\nexport function extractPackageFile(content: string): PackageFileContent {\n const registryUrls = extractLeinRepos(content);\n const vars = extractVariables(content);\n\n const deps: PackageDependency[] = [\n ...collectDeps(content, 'dependencies', registryUrls, vars),\n ...collectDeps(content, 'managed-dependencies', registryUrls, vars),\n ...collectDeps(content, 'plugins', registryUrls, vars),\n ...collectDeps(content, 'pom-plugins', registryUrls, vars),\n // 'coords' is used in lein parent, and specifies zero or one\n // dependencies. These are not wrapped in a vector in the way other\n // dependencies are. The project.clj fragment looks like\n //\n // :parent-project {... :coords [\"parent\" \"version\"] ...}\n //\n // - https://github.com/achin/lein-parent\n ...collectDeps(content, 'coords', registryUrls, vars, {\n nested: false,\n // The top-level key is 'parent-project', but we skip directly to 'coords'.\n // So fix the dep type label\n depType: 'parent-project',\n }),\n ];\n\n return { deps };\n}\n"]}
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/leiningen/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import { coerceArray } from '../../../util/array';\nimport { newlineRegex, regEx } from '../../../util/regex';\nimport { ClojureDatasource } from '../../datasource/clojure';\nimport type { PackageDependency, PackageFileContent } from '../types';\nimport type { ExtractContext, ExtractedVariables } from './types';\n\nexport function trimAtKey(str: string, kwName: string): string | null {\n const regex = new RegExp(`:${kwName}(?=\\\\s)`); // TODO #12872 lookahead\n const keyOffset = str.search(regex);\n if (keyOffset < 0) {\n return null;\n }\n const withSpaces = str.slice(keyOffset + kwName.length + 1);\n const valueOffset = withSpaces.search(regEx(/[^\\s]/));\n if (valueOffset < 0) {\n return null;\n }\n return withSpaces.slice(valueOffset);\n}\n\nexport function expandDepName(name: string): string {\n return name.includes('/') ? name.replace('/', ':') : `${name}:${name}`;\n}\n\nexport function extractFromVectors(\n str: string,\n ctx: ExtractContext = {},\n vars: ExtractedVariables = {},\n dimensions: 1 | 2 = 2,\n): PackageDependency[] {\n if (!str.startsWith('[')) {\n return [];\n }\n let balance = 0;\n const result: PackageDependency[] = [];\n let idx = 0;\n let vecPos = 0;\n let artifactId = '';\n let version = '';\n // Are we currently parsing a comment? If so, at what depth?\n let commentLevel: number | null = null;\n\n const isSpace = (ch: string | null): boolean =>\n !!ch && regEx(/[\\s,]/).test(ch);\n\n const cleanStrLiteral = (s: string): string =>\n s.replace(regEx(/^\"/), '').replace(regEx(/\"$/), '');\n\n const yieldDep = (): void => {\n if (!commentLevel && artifactId && version) {\n const depName = expandDepName(cleanStrLiteral(artifactId));\n if (version.startsWith('~')) {\n const varName = version.replace(regEx(/^~\\s*/), '');\n const currentValue = vars[varName];\n if (currentValue) {\n result.push({\n ...ctx,\n datasource: ClojureDatasource.id,\n depName,\n currentValue,\n sharedVariableName: varName,\n });\n }\n } else {\n result.push({\n ...ctx,\n datasource: ClojureDatasource.id,\n depName,\n currentValue: cleanStrLiteral(version),\n });\n }\n }\n artifactId = '';\n version = '';\n };\n\n let prevChar: string | null = null;\n while (idx < str.length) {\n const char = str.charAt(idx);\n\n if (str.substring(idx).startsWith('#_[')) {\n commentLevel = balance;\n }\n\n if (char === '[') {\n balance += 1;\n if (balance === dimensions) {\n vecPos = 0;\n }\n } else if (char === ']') {\n balance -= 1;\n\n if (commentLevel === balance) {\n artifactId = '';\n version = '';\n commentLevel = null;\n }\n\n if (balance === dimensions - 1) {\n yieldDep();\n }\n\n if (balance === 0) {\n break;\n }\n } else if (balance === dimensions) {\n if (isSpace(char)) {\n if (!isSpace(prevChar)) {\n vecPos += 1;\n }\n } else if (vecPos === 0) {\n artifactId += char;\n } else if (vecPos === 1) {\n version += char;\n }\n }\n prevChar = char;\n idx += 1;\n }\n return result;\n}\n\nfunction extractLeinRepos(content: string): string[] {\n const result: string[] = [];\n\n const repoContent = trimAtKey(\n content.replace(/;;.*(?=[\\r\\n])/g, ''), // get rid of comments // TODO #12872 lookahead\n 'repositories',\n );\n\n if (repoContent) {\n let balance = 0;\n let endIdx = 0;\n for (let idx = 0; idx < repoContent.length; idx += 1) {\n const char = repoContent.charAt(idx);\n if (char === '[') {\n balance += 1;\n } else if (char === ']') {\n balance -= 1;\n if (balance <= 0) {\n endIdx = idx;\n break;\n }\n }\n }\n const repoSectionContent = repoContent.slice(0, endIdx);\n const matches = coerceArray(\n repoSectionContent.match(regEx(/\"https?:\\/\\/[^\"]*\"/g)),\n );\n const urls = matches.map((x) =>\n x.replace(regEx(/^\"/), '').replace(regEx(/\"$/), ''),\n );\n urls.forEach((url) => result.push(url));\n }\n\n return result;\n}\n\nconst defRegex = regEx(\n /^[\\s,]*\\([\\s,]*def[\\s,]+(?<varName>[-+*=<>.!?#$%&_|a-zA-Z][-+*=<>.!?#$%&_|a-zA-Z0-9']+)[\\s,]*\"(?<stringValue>[^\"]*)\"[\\s,]*\\)[\\s,]*$/,\n);\n\nexport function extractVariables(content: string): ExtractedVariables {\n const result: ExtractedVariables = {};\n const lines = content.split(newlineRegex);\n for (const line of lines) {\n const match = defRegex.exec(line);\n if (match?.groups) {\n const { varName: key, stringValue: val } = match.groups;\n result[key] = val;\n }\n }\n return result;\n}\n\ninterface CollectDepsOptions {\n nested: boolean;\n depType?: string;\n}\n\nfunction collectDeps(\n content: string,\n key: string,\n registryUrls: string[],\n vars: ExtractedVariables,\n options: CollectDepsOptions = {\n nested: true,\n },\n): PackageDependency[] {\n const ctx = {\n depType: options.depType ?? key,\n registryUrls,\n };\n // A vector like [[\"dep-1\" \"1.0.0\"] [\"dep-2\" \"0.0.0\"]] is nested\n // A vector like [\"dep-1\" \"1.0.0\"] is not\n const dimensions = options.nested ? 2 : 1;\n let result: PackageDependency[] = [];\n let restContent = trimAtKey(content, key);\n while (restContent) {\n result = [\n ...result,\n ...extractFromVectors(restContent, ctx, vars, dimensions),\n ];\n restContent = trimAtKey(restContent, key);\n }\n return result;\n}\n\nexport function extractPackageFile(content: string): PackageFileContent {\n const registryUrls = extractLeinRepos(content);\n const vars = extractVariables(content);\n\n const deps: PackageDependency[] = [\n ...collectDeps(content, 'dependencies', registryUrls, vars),\n ...collectDeps(content, 'managed-dependencies', registryUrls, vars),\n ...collectDeps(content, 'plugins', registryUrls, vars),\n ...collectDeps(content, 'pom-plugins', registryUrls, vars),\n // 'coords' is used in lein parent, and specifies zero or one\n // dependencies. These are not wrapped in a vector in the way other\n // dependencies are. The project.clj fragment looks like\n //\n // :parent-project {... :coords [\"parent\" \"version\"] ...}\n //\n // - https://github.com/achin/lein-parent\n ...collectDeps(content, 'coords', registryUrls, vars, {\n nested: false,\n // The top-level key is 'parent-project', but we skip directly to 'coords'.\n // So fix the dep type label\n depType: 'parent-project',\n }),\n ];\n\n return { deps };\n}\n"]}
|