renovate 41.0.0-next.22 → 41.0.0-next.23
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/decrypt.js +5 -3
- package/dist/config/decrypt.js.map +1 -1
- package/dist/config/options/index.js +45 -3
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/presets/github/index.js +2 -2
- package/dist/config/presets/github/index.js.map +1 -1
- package/dist/config/presets/internal/group.js +21 -0
- package/dist/config/presets/internal/group.js.map +1 -1
- package/dist/config/presets/internal/workarounds.js +11 -0
- package/dist/config/presets/internal/workarounds.js.map +1 -1
- package/dist/config/secrets.d.ts +2 -0
- package/dist/config/secrets.js +10 -77
- package/dist/config/secrets.js.map +1 -1
- package/dist/config/types.d.ts +9 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config-validator.js +4 -2
- package/dist/config-validator.js.map +1 -1
- package/dist/data/monorepo.json +10 -1
- package/dist/data-files.generated.d.ts +1 -1
- package/dist/data-files.generated.js +2 -1
- package/dist/data-files.generated.js.map +1 -1
- package/dist/instrumentation/index.js +5 -3
- package/dist/instrumentation/index.js.map +1 -1
- package/dist/instrumentation/reporting.d.ts +2 -2
- package/dist/instrumentation/reporting.js +3 -7
- package/dist/instrumentation/reporting.js.map +1 -1
- package/dist/instrumentation/types.d.ts +11 -5
- package/dist/instrumentation/types.js.map +1 -1
- package/dist/instrumentation/utils.js +3 -2
- package/dist/instrumentation/utils.js.map +1 -1
- package/dist/logger/once.js +2 -0
- package/dist/logger/once.js.map +1 -1
- package/dist/modules/datasource/aws-eks-addon/schema.d.ts +14 -38
- package/dist/modules/datasource/aws-eks-addon/schema.js +11 -22
- package/dist/modules/datasource/aws-eks-addon/schema.js.map +1 -1
- package/dist/modules/datasource/cdnjs/index.js +2 -1
- package/dist/modules/datasource/cdnjs/index.js.map +1 -1
- package/dist/modules/datasource/crate/index.js +7 -2
- package/dist/modules/datasource/crate/index.js.map +1 -1
- package/dist/modules/datasource/docker/ecr.js +2 -2
- package/dist/modules/datasource/docker/ecr.js.map +1 -1
- package/dist/modules/datasource/docker/index.js +26 -9
- package/dist/modules/datasource/docker/index.js.map +1 -1
- package/dist/modules/datasource/docker/schema.d.ts +9 -87
- package/dist/modules/datasource/docker/schema.js +1 -1
- package/dist/modules/datasource/docker/schema.js.map +1 -1
- package/dist/modules/datasource/git-refs/base.js +2 -6
- package/dist/modules/datasource/git-refs/base.js.map +1 -1
- package/dist/modules/datasource/go/goproxy-parser.js +6 -2
- package/dist/modules/datasource/go/goproxy-parser.js.map +1 -1
- package/dist/modules/datasource/go/index.js +4 -2
- package/dist/modules/datasource/go/index.js.map +1 -1
- package/dist/modules/datasource/go/releases-goproxy.js +3 -2
- package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
- package/dist/modules/datasource/index.js +1 -1
- package/dist/modules/datasource/index.js.map +1 -1
- package/dist/modules/datasource/maven/index.js +5 -19
- package/dist/modules/datasource/maven/index.js.map +1 -1
- package/dist/modules/datasource/maven/util.js +8 -1
- package/dist/modules/datasource/maven/util.js.map +1 -1
- package/dist/modules/datasource/npm/get.js +2 -1
- package/dist/modules/datasource/npm/get.js.map +1 -1
- package/dist/modules/datasource/npm/npmrc.js +2 -1
- package/dist/modules/datasource/npm/npmrc.js.map +1 -1
- package/dist/modules/datasource/nuget/v3.js +3 -2
- package/dist/modules/datasource/nuget/v3.js.map +1 -1
- package/dist/modules/datasource/pod/index.js +3 -1
- package/dist/modules/datasource/pod/index.js.map +1 -1
- package/dist/modules/datasource/pypi/index.js +2 -1
- package/dist/modules/datasource/pypi/index.js.map +1 -1
- package/dist/modules/datasource/types.d.ts +2 -1
- package/dist/modules/datasource/types.js.map +1 -1
- package/dist/modules/manager/asdf/upgradeable-tooling.js +8 -0
- package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/bazel/rules/git.d.ts +7 -7
- package/dist/modules/manager/bazel/rules/git.js +6 -1
- package/dist/modules/manager/bazel/rules/git.js.map +1 -1
- package/dist/modules/manager/bazel-module/bazelrc.d.ts +2 -0
- package/dist/modules/manager/bazel-module/bazelrc.js +30 -1
- package/dist/modules/manager/bazel-module/bazelrc.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/rules.js +1 -0
- package/dist/modules/manager/bazel-module/parser/rules.js.map +1 -1
- package/dist/modules/manager/bazel-module/rules.d.ts +62 -24
- package/dist/modules/manager/bazel-module/rules.js +10 -4
- package/dist/modules/manager/bazel-module/rules.js.map +1 -1
- package/dist/modules/manager/cargo/extract.js +2 -1
- package/dist/modules/manager/cargo/extract.js.map +1 -1
- package/dist/modules/manager/composer/schema.js +1 -1
- package/dist/modules/manager/composer/schema.js.map +1 -1
- package/dist/modules/manager/docker-compose/extract.js +2 -0
- package/dist/modules/manager/docker-compose/extract.js.map +1 -1
- package/dist/modules/manager/docker-compose/schema.d.ts +120 -9
- package/dist/modules/manager/docker-compose/schema.js +35 -4
- package/dist/modules/manager/docker-compose/schema.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +19 -19
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/fleet/extract.js +2 -2
- package/dist/modules/manager/fleet/extract.js.map +1 -1
- package/dist/modules/manager/fleet/schema.d.ts +5 -5
- package/dist/modules/manager/fleet/schema.js +1 -1
- package/dist/modules/manager/fleet/schema.js.map +1 -1
- package/dist/modules/manager/flux/extract.js +1 -1
- package/dist/modules/manager/flux/extract.js.map +1 -1
- package/dist/modules/manager/git-submodules/extract.js +2 -6
- package/dist/modules/manager/git-submodules/extract.js.map +1 -1
- package/dist/modules/manager/git-submodules/update.js +3 -7
- package/dist/modules/manager/git-submodules/update.js.map +1 -1
- package/dist/modules/manager/github-actions/extract.js +1 -1
- package/dist/modules/manager/github-actions/extract.js.map +1 -1
- package/dist/modules/manager/gleam/artifacts.js +5 -1
- package/dist/modules/manager/gleam/artifacts.js.map +1 -1
- package/dist/modules/manager/gomod/artifacts.js +8 -6
- package/dist/modules/manager/gomod/artifacts.js.map +1 -1
- package/dist/modules/manager/gradle/extract.js +4 -1
- package/dist/modules/manager/gradle/extract.js.map +1 -1
- package/dist/modules/manager/gradle/utils.js +8 -14
- package/dist/modules/manager/gradle/utils.js.map +1 -1
- package/dist/modules/manager/helmfile/utils.js +1 -1
- package/dist/modules/manager/helmfile/utils.js.map +1 -1
- package/dist/modules/manager/helmv3/artifacts.js +8 -2
- package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
- package/dist/modules/manager/helmv3/common.d.ts +1 -1
- package/dist/modules/manager/helmv3/common.js +9 -3
- package/dist/modules/manager/helmv3/common.js.map +1 -1
- package/dist/modules/manager/hermit/artifacts.js +2 -2
- package/dist/modules/manager/hermit/artifacts.js.map +1 -1
- package/dist/modules/manager/kubernetes/extract.js +2 -2
- package/dist/modules/manager/kubernetes/extract.js.map +1 -1
- package/dist/modules/manager/kustomize/artifacts.js +1 -1
- package/dist/modules/manager/kustomize/artifacts.js.map +1 -1
- package/dist/modules/manager/maven/extract.d.ts +1 -1
- package/dist/modules/manager/maven/extract.js +82 -24
- package/dist/modules/manager/maven/extract.js.map +1 -1
- package/dist/modules/manager/maven/index.d.ts +0 -1
- package/dist/modules/manager/maven/index.js +2 -4
- package/dist/modules/manager/maven/index.js.map +1 -1
- package/dist/modules/manager/maven/update.js +15 -0
- package/dist/modules/manager/maven/update.js.map +1 -1
- package/dist/modules/manager/mise/backends.d.ts +48 -0
- package/dist/modules/manager/mise/backends.js +219 -0
- package/dist/modules/manager/mise/backends.js.map +1 -0
- package/dist/modules/manager/mise/extract.js +77 -10
- package/dist/modules/manager/mise/extract.js.map +1 -1
- package/dist/modules/manager/mise/index.js +37 -2
- package/dist/modules/manager/mise/index.js.map +1 -1
- package/dist/modules/manager/mise/schema.d.ts +24 -0
- package/dist/modules/manager/mise/schema.js +7 -1
- package/dist/modules/manager/mise/schema.js.map +1 -1
- package/dist/modules/manager/mise/upgradeable-tooling.js +210 -1
- package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/mix/artifacts.js +5 -0
- package/dist/modules/manager/mix/artifacts.js.map +1 -1
- package/dist/modules/manager/npm/extract/index.js +27 -24
- package/dist/modules/manager/npm/extract/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/index.js +9 -3
- package/dist/modules/manager/npm/post-update/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/npm.js +8 -5
- package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/pnpm.js +4 -0
- package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/utils.js +17 -0
- package/dist/modules/manager/npm/post-update/utils.js.map +1 -1
- package/dist/modules/manager/npm/post-update/yarn.js +7 -5
- package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
- package/dist/modules/manager/npm/schema.d.ts +116 -0
- package/dist/modules/manager/npm/schema.js +9 -0
- package/dist/modules/manager/npm/schema.js.map +1 -1
- package/dist/modules/manager/npm/utils.js +1 -1
- package/dist/modules/manager/npm/utils.js.map +1 -1
- package/dist/modules/manager/nuget/util.js +9 -0
- package/dist/modules/manager/nuget/util.js.map +1 -1
- package/dist/modules/manager/pep621/processors/uv.js +1 -1
- package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
- package/dist/modules/manager/pip-compile/artifacts.js +6 -4
- package/dist/modules/manager/pip-compile/artifacts.js.map +1 -1
- package/dist/modules/manager/pip_requirements/common.js +2 -1
- package/dist/modules/manager/pip_requirements/common.js.map +1 -1
- package/dist/modules/manager/poetry/schema.js +2 -1
- package/dist/modules/manager/poetry/schema.js.map +1 -1
- package/dist/modules/manager/pre-commit/index.js +2 -1
- package/dist/modules/manager/pre-commit/index.js.map +1 -1
- package/dist/modules/manager/renovate-config-presets/index.d.ts +1 -1
- package/dist/modules/manager/renovate-config-presets/index.js +1 -3
- package/dist/modules/manager/renovate-config-presets/index.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/others/modules.js +4 -9
- package/dist/modules/manager/terraform/extractors/others/modules.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.d.ts +1 -0
- package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.js +9 -4
- package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/resources/utils.d.ts +1 -0
- package/dist/modules/manager/terraform/extractors/resources/utils.js +4 -1
- package/dist/modules/manager/terraform/extractors/resources/utils.js.map +1 -1
- package/dist/modules/manager/terraform/hcl/types.d.ts +1 -0
- package/dist/modules/manager/terraform/hcl/types.js.map +1 -1
- package/dist/modules/manager/types.d.ts +3 -0
- package/dist/modules/manager/types.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/index.js +4 -2
- package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
- package/dist/modules/platform/codecommit/codecommit-client.js +7 -5
- package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
- package/dist/modules/platform/codecommit/index.js +7 -5
- package/dist/modules/platform/codecommit/index.js.map +1 -1
- package/dist/modules/platform/default-scm.d.ts +1 -0
- package/dist/modules/platform/default-scm.js +3 -0
- package/dist/modules/platform/default-scm.js.map +1 -1
- package/dist/modules/platform/gerrit/client.d.ts +6 -7
- package/dist/modules/platform/gerrit/client.js +58 -38
- package/dist/modules/platform/gerrit/client.js.map +1 -1
- package/dist/modules/platform/gerrit/index.d.ts +4 -3
- package/dist/modules/platform/gerrit/index.js +103 -42
- package/dist/modules/platform/gerrit/index.js.map +1 -1
- package/dist/modules/platform/gerrit/scm.d.ts +1 -1
- package/dist/modules/platform/gerrit/scm.js +56 -34
- package/dist/modules/platform/gerrit/scm.js.map +1 -1
- package/dist/modules/platform/gerrit/types.d.ts +23 -12
- package/dist/modules/platform/gerrit/types.js.map +1 -1
- package/dist/modules/platform/gerrit/utils.d.ts +8 -4
- package/dist/modules/platform/gerrit/utils.js +24 -12
- package/dist/modules/platform/gerrit/utils.js.map +1 -1
- package/dist/modules/platform/gitea/index.js +7 -2
- package/dist/modules/platform/gitea/index.js.map +1 -1
- package/dist/modules/platform/gitea/types.d.ts +2 -1
- package/dist/modules/platform/gitea/types.js.map +1 -1
- package/dist/modules/platform/github/index.js +12 -26
- package/dist/modules/platform/github/index.js.map +1 -1
- package/dist/modules/platform/gitlab/code-owners.d.ts +2 -0
- package/dist/modules/platform/gitlab/code-owners.js +38 -0
- package/dist/modules/platform/gitlab/code-owners.js.map +1 -0
- package/dist/modules/platform/gitlab/index.d.ts +2 -1
- package/dist/modules/platform/gitlab/index.js +29 -56
- package/dist/modules/platform/gitlab/index.js.map +1 -1
- package/dist/modules/platform/gitlab/pr-cache.d.ts +21 -0
- package/dist/modules/platform/gitlab/pr-cache.js +124 -0
- package/dist/modules/platform/gitlab/pr-cache.js.map +1 -0
- package/dist/modules/platform/gitlab/types.d.ts +7 -0
- package/dist/modules/platform/gitlab/types.js.map +1 -1
- package/dist/modules/platform/gitlab/utils.js +1 -0
- package/dist/modules/platform/gitlab/utils.js.map +1 -1
- package/dist/modules/platform/types.d.ts +8 -0
- package/dist/modules/platform/types.js.map +1 -1
- package/dist/modules/versioning/api.js +2 -0
- package/dist/modules/versioning/api.js.map +1 -1
- package/dist/modules/versioning/cargo/index.js +20 -0
- package/dist/modules/versioning/cargo/index.js.map +1 -1
- package/dist/modules/versioning/composer/index.js +4 -0
- package/dist/modules/versioning/composer/index.js.map +1 -1
- package/dist/modules/versioning/lambda-node/index.d.ts +8 -0
- package/dist/modules/versioning/lambda-node/index.js +27 -0
- package/dist/modules/versioning/lambda-node/index.js.map +1 -0
- package/dist/modules/versioning/lambda-node/schedule.d.ts +10 -0
- package/dist/modules/versioning/lambda-node/schedule.js +19 -0
- package/dist/modules/versioning/lambda-node/schedule.js.map +1 -0
- package/dist/modules/versioning/npm/index.js +2 -0
- package/dist/modules/versioning/npm/index.js.map +1 -1
- package/dist/modules/versioning/npm/range.js +4 -0
- package/dist/modules/versioning/npm/range.js.map +1 -1
- package/dist/modules/versioning/pep440/index.js +1 -1
- package/dist/modules/versioning/pep440/index.js.map +1 -1
- package/dist/modules/versioning/python/index.d.ts +1 -0
- package/dist/modules/versioning/python/index.js +9 -0
- package/dist/modules/versioning/python/index.js.map +1 -1
- package/dist/modules/versioning/semver/index.d.ts +1 -0
- package/dist/modules/versioning/semver/index.js +15 -0
- package/dist/modules/versioning/semver/index.js.map +1 -1
- package/dist/modules/versioning/semver-coerced/index.js +9 -0
- package/dist/modules/versioning/semver-coerced/index.js.map +1 -1
- package/dist/modules/versioning/types.d.ts +1 -0
- package/dist/modules/versioning/types.js.map +1 -1
- package/dist/util/cache/memory/index.d.ts +1 -0
- package/dist/util/cache/memory/index.js +17 -6
- package/dist/util/cache/memory/index.js.map +1 -1
- package/dist/util/cache/package/index.js +2 -1
- package/dist/util/cache/package/index.js.map +1 -1
- package/dist/util/cache/package/key.js +1 -1
- package/dist/util/cache/package/key.js.map +1 -1
- package/dist/util/cache/package/types.d.ts +2 -2
- package/dist/util/cache/package/types.js.map +1 -1
- package/dist/util/cache/repository/impl/s3.js +2 -1
- package/dist/util/cache/repository/impl/s3.js.map +1 -1
- package/dist/util/cache/repository/types.d.ts +3 -0
- package/dist/util/cache/repository/types.js.map +1 -1
- package/dist/util/env.d.ts +6 -0
- package/dist/util/env.js +13 -0
- package/dist/util/env.js.map +1 -1
- package/dist/util/exec/common.js +2 -1
- package/dist/util/exec/common.js.map +1 -1
- package/dist/util/exec/containerbase.js +2 -1
- package/dist/util/exec/containerbase.js.map +1 -1
- package/dist/util/exec/env.js +1 -0
- package/dist/util/exec/env.js.map +1 -1
- package/dist/util/exec/utils.d.ts +1 -1
- package/dist/util/exec/utils.js +1 -1
- package/dist/util/exec/utils.js.map +1 -1
- package/dist/util/fs/index.js +2 -2
- package/dist/util/fs/index.js.map +1 -1
- package/dist/util/git/auth.js +4 -2
- package/dist/util/git/auth.js.map +1 -1
- package/dist/util/git/error.js +2 -1
- package/dist/util/git/error.js.map +1 -1
- package/dist/util/git/index.d.ts +20 -0
- package/dist/util/git/index.js +140 -10
- package/dist/util/git/index.js.map +1 -1
- package/dist/util/git/types.d.ts +1 -0
- package/dist/util/git/types.js.map +1 -1
- package/dist/util/github/graphql/datasource-fetcher.js +2 -3
- package/dist/util/github/graphql/datasource-fetcher.js.map +1 -1
- package/dist/util/github/graphql/query-adapters/tags-query-adapter.d.ts +48 -2
- package/dist/util/github/graphql/query-adapters/tags-query-adapter.js +27 -7
- package/dist/util/github/graphql/query-adapters/tags-query-adapter.js.map +1 -1
- package/dist/util/host-rules.js +4 -3
- package/dist/util/host-rules.js.map +1 -1
- package/dist/util/http/cache/package-http-cache-provider.d.ts +4 -4
- package/dist/util/http/cache/package-http-cache-provider.js +4 -4
- package/dist/util/http/cache/package-http-cache-provider.js.map +1 -1
- package/dist/util/http/github.js +20 -12
- package/dist/util/http/github.js.map +1 -1
- package/dist/util/http/gitlab.js +2 -1
- package/dist/util/http/gitlab.js.map +1 -1
- package/dist/util/http/http.js +7 -3
- package/dist/util/http/http.js.map +1 -1
- package/dist/util/interpolator.d.ts +8 -0
- package/dist/util/interpolator.js +85 -0
- package/dist/util/interpolator.js.map +1 -0
- package/dist/util/merge-confidence/index.js +4 -1
- package/dist/util/merge-confidence/index.js.map +1 -1
- package/dist/util/promises.d.ts +4 -4
- package/dist/util/promises.js +3 -4
- package/dist/util/promises.js.map +1 -1
- package/dist/util/regex.js +3 -2
- package/dist/util/regex.js.map +1 -1
- package/dist/util/{schema-utils.d.ts → schema-utils/index.d.ts} +2 -2
- package/dist/util/{schema-utils.js → schema-utils/index.js} +5 -5
- package/dist/util/schema-utils/index.js.map +1 -0
- package/dist/util/schema-utils/v4.d.ts +7 -0
- package/dist/util/schema-utils/v4.js +64 -0
- package/dist/util/schema-utils/v4.js.map +1 -0
- package/dist/util/stats.d.ts +13 -2
- package/dist/util/stats.js +38 -27
- package/dist/util/stats.js.map +1 -1
- package/dist/workers/global/config/parse/codespaces.js +7 -4
- package/dist/workers/global/config/parse/codespaces.js.map +1 -1
- package/dist/workers/global/index.js +7 -5
- package/dist/workers/global/index.js.map +1 -1
- package/dist/workers/repository/config-migration/branch/migrated-data.js +1 -1
- package/dist/workers/repository/config-migration/branch/migrated-data.js.map +1 -1
- package/dist/workers/repository/dependency-dashboard.d.ts +1 -0
- package/dist/workers/repository/dependency-dashboard.js +47 -0
- package/dist/workers/repository/dependency-dashboard.js.map +1 -1
- package/dist/workers/repository/index.js +1 -0
- package/dist/workers/repository/index.js.map +1 -1
- package/dist/workers/repository/init/inherited.js +10 -6
- package/dist/workers/repository/init/inherited.js.map +1 -1
- package/dist/workers/repository/init/merge.d.ts +2 -2
- package/dist/workers/repository/init/merge.js +12 -5
- package/dist/workers/repository/init/merge.js.map +1 -1
- package/dist/workers/repository/package-files.js +11 -1
- package/dist/workers/repository/package-files.js.map +1 -1
- package/dist/workers/repository/process/extract-update.d.ts +1 -1
- package/dist/workers/repository/process/extract-update.js +15 -10
- package/dist/workers/repository/process/extract-update.js.map +1 -1
- package/dist/workers/repository/process/index.d.ts +1 -1
- package/dist/workers/repository/process/index.js +6 -3
- package/dist/workers/repository/process/index.js.map +1 -1
- package/dist/workers/repository/process/libyear.js +15 -7
- package/dist/workers/repository/process/libyear.js.map +1 -1
- package/dist/workers/repository/process/lookup/abandonment.d.ts +3 -0
- package/dist/workers/repository/process/lookup/abandonment.js +50 -0
- package/dist/workers/repository/process/lookup/abandonment.js.map +1 -0
- package/dist/workers/repository/process/lookup/current.js +0 -5
- package/dist/workers/repository/process/lookup/current.js.map +1 -1
- package/dist/workers/repository/process/lookup/generate.js +10 -0
- package/dist/workers/repository/process/lookup/generate.js.map +1 -1
- package/dist/workers/repository/process/lookup/index.js +7 -0
- package/dist/workers/repository/process/lookup/index.js.map +1 -1
- package/dist/workers/repository/process/lookup/timestamps.d.ts +4 -4
- package/dist/workers/repository/process/lookup/timestamps.js +10 -10
- package/dist/workers/repository/process/lookup/timestamps.js.map +1 -1
- package/dist/workers/repository/process/lookup/types.d.ts +4 -0
- package/dist/workers/repository/process/lookup/types.js.map +1 -1
- package/dist/workers/repository/update/branch/auto-replace.js +30 -7
- package/dist/workers/repository/update/branch/auto-replace.js.map +1 -1
- package/dist/workers/repository/update/branch/bump-versions.d.ts +2 -0
- package/dist/workers/repository/update/branch/bump-versions.js +192 -0
- package/dist/workers/repository/update/branch/bump-versions.js.map +1 -0
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +14 -8
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js.map +1 -1
- package/dist/workers/repository/update/branch/get-updated.js +3 -4
- package/dist/workers/repository/update/branch/get-updated.js.map +1 -1
- package/dist/workers/repository/update/branch/index.js +3 -0
- package/dist/workers/repository/update/branch/index.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/release-notes.js +23 -19
- package/dist/workers/repository/update/pr/changelog/release-notes.js.map +1 -1
- package/dist/workers/repository/update/pr/code-owners.js +13 -9
- package/dist/workers/repository/update/pr/code-owners.js.map +1 -1
- package/dist/workers/repository/updates/generate.js +1 -0
- package/dist/workers/repository/updates/generate.js.map +1 -1
- package/package.json +75 -80
- package/renovate-schema.json +78 -14
- package/dist/util/schema-utils.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/gradle/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import upath from 'upath';\nimport { logger } from '../../../logger';\nimport { coerceArray } from '../../../util/array';\nimport { getLocalFiles } from '../../../util/fs';\nimport { regEx } from '../../../util/regex';\nimport { MavenDatasource } from '../../datasource/maven';\nimport gradleVersioning from '../../versioning/gradle';\nimport type { ExtractConfig, PackageDependency, PackageFile } from '../types';\nimport { parseCatalog } from './extract/catalog';\nimport {\n isGcvPropsFile,\n parseGcv,\n usesGcv,\n} from './extract/consistent-versions-plugin';\nimport { parseGradle, parseKotlinSource, parseProps } from './parser';\nimport { REGISTRY_URLS } from './parser/common';\nimport type {\n ContentDescriptorSpec,\n GradleManagerData,\n PackageRegistry,\n VariableRegistry,\n} from './types';\nimport {\n getVars,\n isGradleScriptFile,\n isKotlinSourceFile,\n isPropsFile,\n isTOMLFile,\n reorderFiles,\n toAbsolutePath,\n updateVars,\n} from './utils';\n\nconst mavenDatasource = MavenDatasource.id;\n\nfunction updatePackageRegistries(\n packageRegistries: PackageRegistry[],\n urls: PackageRegistry[],\n): void {\n for (const url of urls) {\n const registryAlreadyKnown = packageRegistries.some(\n (item) =>\n item.registryUrl === url.registryUrl && item.scope === url.scope,\n );\n if (!registryAlreadyKnown) {\n packageRegistries.push(url);\n }\n }\n}\n\nexport function matchesContentDescriptor(\n dep: PackageDependency<GradleManagerData>,\n contentDescriptors?: ContentDescriptorSpec[],\n): boolean {\n const [groupId, artifactId] = (dep.packageName ?? dep.depName!).split(':');\n let hasIncludes = false;\n let hasExcludes = false;\n let matchesInclude = false;\n let matchesExclude = false;\n\n for (const content of coerceArray(contentDescriptors)) {\n const {\n mode,\n matcher,\n groupId: contentGroupId,\n artifactId: contentArtifactId,\n version: contentVersion,\n } = content;\n\n // group matching\n let groupMatch = false;\n if (matcher === 'regex') {\n groupMatch = regEx(contentGroupId).test(groupId);\n } else if (matcher === 'subgroup') {\n groupMatch =\n groupId === contentGroupId || `${groupId}.`.startsWith(contentGroupId);\n } else {\n groupMatch = groupId === contentGroupId;\n }\n\n // artifact matching (optional)\n let artifactMatch = true;\n if (groupMatch && contentArtifactId) {\n if (matcher === 'regex') {\n artifactMatch = regEx(contentArtifactId).test(artifactId);\n } else {\n artifactMatch = artifactId === contentArtifactId;\n }\n }\n\n // version matching (optional)\n let versionMatch = true;\n if (groupMatch && artifactMatch && contentVersion && dep.currentValue) {\n if (matcher === 'regex') {\n versionMatch = regEx(contentVersion).test(dep.currentValue);\n } else {\n // contentVersion can be an exact version or a gradle-supported version range\n versionMatch = gradleVersioning.matches(\n dep.currentValue,\n contentVersion,\n );\n }\n }\n\n const isMatch = groupMatch && artifactMatch && versionMatch;\n if (mode === 'include') {\n hasIncludes = true;\n if (isMatch) {\n matchesInclude = true;\n }\n } else if (mode === 'exclude') {\n hasExcludes = true;\n if (isMatch) {\n matchesExclude = true;\n }\n }\n }\n\n if (hasIncludes && hasExcludes) {\n // if both includes and excludes exist, dep must match include and not match exclude\n return matchesInclude && !matchesExclude;\n } else if (hasIncludes) {\n // if only includes exist, dep must match at least one include\n return matchesInclude;\n } else if (hasExcludes) {\n // if only excludes exist, dep must not match any exclude\n return !matchesExclude;\n }\n\n // by default, repositories include everything and exclude nothing\n return true;\n}\n\nfunction getRegistryUrlsForDep(\n packageRegistries: PackageRegistry[],\n dep: PackageDependency<GradleManagerData>,\n): string[] {\n const scope = dep.depType === 'plugin' ? 'plugin' : 'dep';\n\n const matchingRegistries = packageRegistries.filter(\n (item) =>\n item.scope === scope && matchesContentDescriptor(dep, item.content),\n );\n\n const exclusiveRegistries = matchingRegistries.filter(\n (item) => item.registryType === 'exclusive',\n );\n\n const registryUrls = (\n exclusiveRegistries.length ? exclusiveRegistries : matchingRegistries\n ).map((item) => item.registryUrl);\n\n if (!registryUrls.length && scope === 'plugin') {\n registryUrls.push(REGISTRY_URLS.gradlePluginPortal);\n }\n\n return [...new Set(registryUrls)];\n}\n\nasync function parsePackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n extractedDeps: PackageDependency<GradleManagerData>[],\n packageFilesByName: Record<string, PackageFile>,\n packageRegistries: PackageRegistry[],\n): Promise<PackageDependency<GradleManagerData>[]> {\n const varRegistry: VariableRegistry = {};\n const fileContents = await getLocalFiles(packageFiles);\n\n for (const packageFile of packageFiles) {\n packageFilesByName[packageFile] = {\n packageFile,\n datasource: mavenDatasource,\n deps: [],\n };\n\n try {\n // TODO #22198\n const content = fileContents[packageFile]!;\n const packageFileDir = upath.dirname(toAbsolutePath(packageFile));\n\n if (isPropsFile(packageFile)) {\n const { vars, deps } = parseProps(content, packageFile);\n updateVars(varRegistry, packageFileDir, vars);\n extractedDeps.push(...deps);\n } else if (isTOMLFile(packageFile)) {\n const deps = parseCatalog(packageFile, content);\n extractedDeps.push(...deps);\n } else if (\n isGcvPropsFile(packageFile) &&\n usesGcv(packageFile, fileContents)\n ) {\n const deps = parseGcv(packageFile, fileContents);\n extractedDeps.push(...deps);\n } else if (isKotlinSourceFile(packageFile)) {\n const vars = getVars(varRegistry, packageFileDir);\n const { vars: gradleVars, deps } = parseKotlinSource(\n content,\n vars,\n packageFile,\n );\n updateVars(varRegistry, '/', gradleVars);\n extractedDeps.push(...deps);\n } else if (isGradleScriptFile(packageFile)) {\n const vars = getVars(varRegistry, packageFileDir);\n const {\n deps,\n urls,\n vars: gradleVars,\n } = parseGradle(content, vars, packageFile, fileContents);\n updatePackageRegistries(packageRegistries, urls);\n updateVars(varRegistry, packageFileDir, gradleVars);\n extractedDeps.push(...deps);\n }\n } catch (err) {\n logger.debug(\n { err, config, packageFile },\n `Failed to process Gradle file`,\n );\n }\n }\n\n return extractedDeps;\n}\n\nexport async function extractAllPackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[] | null> {\n const packageFilesByName: Record<string, PackageFile> = {};\n const packageRegistries: PackageRegistry[] = [];\n const extractedDeps: PackageDependency<GradleManagerData>[] = [];\n const kotlinSourceFiles = packageFiles.filter(isKotlinSourceFile);\n const gradleFiles = reorderFiles(\n packageFiles.filter((e) => !kotlinSourceFiles.includes(e)),\n );\n\n await parsePackageFiles(\n config,\n [...kotlinSourceFiles, ...kotlinSourceFiles, ...gradleFiles],\n extractedDeps,\n packageFilesByName,\n packageRegistries,\n );\n\n if (!extractedDeps.length) {\n return null;\n }\n\n for (const dep of extractedDeps) {\n dep.fileReplacePosition = dep?.managerData?.fileReplacePosition; // #8224\n\n const key = dep.managerData?.packageFile;\n // istanbul ignore else\n if (key) {\n let pkgFile: PackageFile = packageFilesByName[key];\n // istanbul ignore if: won't happen if \"apply from\" processes only initially known files\n if (!pkgFile) {\n pkgFile = {\n packageFile: key,\n datasource: mavenDatasource,\n deps: [],\n };\n }\n\n dep.datasource ??= mavenDatasource;\n\n if (dep.datasource === mavenDatasource) {\n dep.registryUrls = getRegistryUrlsForDep(packageRegistries, dep);\n\n dep.depType ??=\n key.startsWith('buildSrc') && !kotlinSourceFiles.length\n ? 'devDependencies'\n : 'dependencies';\n }\n\n const depAlreadyInPkgFile = pkgFile.deps.some(\n (item) =>\n item.depName === dep.depName &&\n item.managerData?.fileReplacePosition ===\n dep.managerData?.fileReplacePosition,\n );\n if (!depAlreadyInPkgFile) {\n pkgFile.deps.push(dep);\n }\n\n packageFilesByName[key] = pkgFile;\n } else {\n logger.debug({ dep }, `Failed to process Gradle dependency`);\n }\n }\n\n return Object.values(packageFilesByName);\n}\n"]}
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/gradle/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import upath from 'upath';\nimport { logger } from '../../../logger';\nimport { coerceArray } from '../../../util/array';\nimport { getLocalFiles } from '../../../util/fs';\nimport { regEx } from '../../../util/regex';\nimport { MavenDatasource } from '../../datasource/maven';\nimport gradleVersioning from '../../versioning/gradle';\nimport type { ExtractConfig, PackageDependency, PackageFile } from '../types';\nimport { parseCatalog } from './extract/catalog';\nimport {\n isGcvPropsFile,\n parseGcv,\n usesGcv,\n} from './extract/consistent-versions-plugin';\nimport { parseGradle, parseKotlinSource, parseProps } from './parser';\nimport { REGISTRY_URLS } from './parser/common';\nimport type {\n ContentDescriptorSpec,\n GradleManagerData,\n PackageRegistry,\n VariableRegistry,\n} from './types';\nimport {\n getVars,\n isGradleScriptFile,\n isKotlinSourceFile,\n isPropsFile,\n isTOMLFile,\n reorderFiles,\n toAbsolutePath,\n updateVars,\n} from './utils';\n\nconst mavenDatasource = MavenDatasource.id;\n\nfunction updatePackageRegistries(\n packageRegistries: PackageRegistry[],\n urls: PackageRegistry[],\n): void {\n for (const url of urls) {\n const registryAlreadyKnown = packageRegistries.some(\n (item) =>\n item.registryUrl === url.registryUrl &&\n item.scope === url.scope &&\n item.registryType === url.registryType &&\n item.content === url.content,\n );\n if (!registryAlreadyKnown) {\n packageRegistries.push(url);\n }\n }\n}\n\nexport function matchesContentDescriptor(\n dep: PackageDependency<GradleManagerData>,\n contentDescriptors?: ContentDescriptorSpec[],\n): boolean {\n const [groupId, artifactId] = (dep.packageName ?? dep.depName!).split(':');\n let hasIncludes = false;\n let hasExcludes = false;\n let matchesInclude = false;\n let matchesExclude = false;\n\n for (const content of coerceArray(contentDescriptors)) {\n const {\n mode,\n matcher,\n groupId: contentGroupId,\n artifactId: contentArtifactId,\n version: contentVersion,\n } = content;\n\n // group matching\n let groupMatch = false;\n if (matcher === 'regex') {\n groupMatch = regEx(contentGroupId).test(groupId);\n } else if (matcher === 'subgroup') {\n groupMatch =\n groupId === contentGroupId || `${groupId}.`.startsWith(contentGroupId);\n } else {\n groupMatch = groupId === contentGroupId;\n }\n\n // artifact matching (optional)\n let artifactMatch = true;\n if (groupMatch && contentArtifactId) {\n if (matcher === 'regex') {\n artifactMatch = regEx(contentArtifactId).test(artifactId);\n } else {\n artifactMatch = artifactId === contentArtifactId;\n }\n }\n\n // version matching (optional)\n let versionMatch = true;\n if (groupMatch && artifactMatch && contentVersion && dep.currentValue) {\n if (matcher === 'regex') {\n versionMatch = regEx(contentVersion).test(dep.currentValue);\n } else {\n // contentVersion can be an exact version or a gradle-supported version range\n versionMatch = gradleVersioning.matches(\n dep.currentValue,\n contentVersion,\n );\n }\n }\n\n const isMatch = groupMatch && artifactMatch && versionMatch;\n if (mode === 'include') {\n hasIncludes = true;\n if (isMatch) {\n matchesInclude = true;\n }\n } else if (mode === 'exclude') {\n hasExcludes = true;\n if (isMatch) {\n matchesExclude = true;\n }\n }\n }\n\n if (hasIncludes && hasExcludes) {\n // if both includes and excludes exist, dep must match include and not match exclude\n return matchesInclude && !matchesExclude;\n } else if (hasIncludes) {\n // if only includes exist, dep must match at least one include\n return matchesInclude;\n } else if (hasExcludes) {\n // if only excludes exist, dep must not match any exclude\n return !matchesExclude;\n }\n\n // by default, repositories include everything and exclude nothing\n return true;\n}\n\nfunction getRegistryUrlsForDep(\n packageRegistries: PackageRegistry[],\n dep: PackageDependency<GradleManagerData>,\n): string[] {\n const scope = dep.depType === 'plugin' ? 'plugin' : 'dep';\n\n const matchingRegistries = packageRegistries.filter(\n (item) =>\n item.scope === scope && matchesContentDescriptor(dep, item.content),\n );\n\n const exclusiveRegistries = matchingRegistries.filter(\n (item) => item.registryType === 'exclusive',\n );\n\n const registryUrls = (\n exclusiveRegistries.length ? exclusiveRegistries : matchingRegistries\n ).map((item) => item.registryUrl);\n\n if (!registryUrls.length && scope === 'plugin') {\n registryUrls.push(REGISTRY_URLS.gradlePluginPortal);\n }\n\n return [...new Set(registryUrls)];\n}\n\nasync function parsePackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n extractedDeps: PackageDependency<GradleManagerData>[],\n packageFilesByName: Record<string, PackageFile>,\n packageRegistries: PackageRegistry[],\n): Promise<PackageDependency<GradleManagerData>[]> {\n const varRegistry: VariableRegistry = {};\n const fileContents = await getLocalFiles(packageFiles);\n\n for (const packageFile of packageFiles) {\n packageFilesByName[packageFile] = {\n packageFile,\n datasource: mavenDatasource,\n deps: [],\n };\n\n try {\n // TODO #22198\n const content = fileContents[packageFile]!;\n const packageFileDir = upath.dirname(toAbsolutePath(packageFile));\n\n if (isPropsFile(packageFile)) {\n const { vars, deps } = parseProps(content, packageFile);\n updateVars(varRegistry, packageFileDir, vars);\n extractedDeps.push(...deps);\n } else if (isTOMLFile(packageFile)) {\n const deps = parseCatalog(packageFile, content);\n extractedDeps.push(...deps);\n } else if (\n isGcvPropsFile(packageFile) &&\n usesGcv(packageFile, fileContents)\n ) {\n const deps = parseGcv(packageFile, fileContents);\n extractedDeps.push(...deps);\n } else if (isKotlinSourceFile(packageFile)) {\n const vars = getVars(varRegistry, packageFileDir);\n const { vars: gradleVars, deps } = parseKotlinSource(\n content,\n vars,\n packageFile,\n );\n updateVars(varRegistry, '/', gradleVars);\n extractedDeps.push(...deps);\n } else if (isGradleScriptFile(packageFile)) {\n const vars = getVars(varRegistry, packageFileDir);\n const {\n deps,\n urls,\n vars: gradleVars,\n } = parseGradle(content, vars, packageFile, fileContents);\n updatePackageRegistries(packageRegistries, urls);\n updateVars(varRegistry, packageFileDir, gradleVars);\n extractedDeps.push(...deps);\n }\n } catch (err) {\n logger.debug(\n { err, config, packageFile },\n `Failed to process Gradle file`,\n );\n }\n }\n\n return extractedDeps;\n}\n\nexport async function extractAllPackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[] | null> {\n const packageFilesByName: Record<string, PackageFile> = {};\n const packageRegistries: PackageRegistry[] = [];\n const extractedDeps: PackageDependency<GradleManagerData>[] = [];\n const kotlinSourceFiles = packageFiles.filter(isKotlinSourceFile);\n const gradleFiles = reorderFiles(\n packageFiles.filter((e) => !kotlinSourceFiles.includes(e)),\n );\n\n await parsePackageFiles(\n config,\n [...kotlinSourceFiles, ...kotlinSourceFiles, ...gradleFiles],\n extractedDeps,\n packageFilesByName,\n packageRegistries,\n );\n\n if (!extractedDeps.length) {\n return null;\n }\n\n for (const dep of extractedDeps) {\n dep.fileReplacePosition = dep?.managerData?.fileReplacePosition; // #8224\n\n const key = dep.managerData?.packageFile;\n // istanbul ignore else\n if (key) {\n let pkgFile: PackageFile = packageFilesByName[key];\n // istanbul ignore if: won't happen if \"apply from\" processes only initially known files\n if (!pkgFile) {\n pkgFile = {\n packageFile: key,\n datasource: mavenDatasource,\n deps: [],\n };\n }\n\n dep.datasource ??= mavenDatasource;\n\n if (dep.datasource === mavenDatasource) {\n dep.registryUrls = getRegistryUrlsForDep(packageRegistries, dep);\n\n dep.depType ??=\n key.startsWith('buildSrc') && !kotlinSourceFiles.length\n ? 'devDependencies'\n : 'dependencies';\n }\n\n const depAlreadyInPkgFile = pkgFile.deps.some(\n (item) =>\n item.depName === dep.depName &&\n item.managerData?.fileReplacePosition ===\n dep.managerData?.fileReplacePosition,\n );\n if (!depAlreadyInPkgFile) {\n pkgFile.deps.push(dep);\n }\n\n packageFilesByName[key] = pkgFile;\n } else {\n logger.debug({ dep }, `Failed to process Gradle dependency`);\n }\n }\n\n return Object.values(packageFilesByName);\n}\n"]}
|
@@ -35,35 +35,29 @@ function versionLikeSubstring(input) {
|
|
35
35
|
return version;
|
36
36
|
}
|
37
37
|
function isDependencyString(input) {
|
38
|
-
const
|
39
|
-
if (
|
38
|
+
const [depNotation, ...extra] = input.split('@');
|
39
|
+
if (extra.length > 1) {
|
40
40
|
return false;
|
41
41
|
}
|
42
|
-
const
|
43
|
-
if (
|
42
|
+
const parts = depNotation.split(':');
|
43
|
+
if (parts.length !== 3 && parts.length !== 4) {
|
44
44
|
return false;
|
45
45
|
}
|
46
|
-
|
47
|
-
if (versionPart.includes('@')) {
|
48
|
-
const [actualVersion, ...rest] = versionPart.split('@');
|
49
|
-
if (rest.length !== 1) {
|
50
|
-
return false;
|
51
|
-
}
|
52
|
-
version = actualVersion;
|
53
|
-
}
|
46
|
+
const [groupId, artifactId, version, classifier] = parts;
|
54
47
|
return !!(groupId &&
|
55
48
|
artifactId &&
|
56
49
|
version &&
|
57
50
|
artifactRegex.test(groupId) &&
|
58
51
|
artifactRegex.test(artifactId) &&
|
52
|
+
(!classifier || artifactRegex.test(classifier)) &&
|
59
53
|
version === versionLikeSubstring(version));
|
60
54
|
}
|
61
55
|
function parseDependencyString(input) {
|
62
56
|
if (!isDependencyString(input)) {
|
63
57
|
return null;
|
64
58
|
}
|
65
|
-
const [
|
66
|
-
const [
|
59
|
+
const [depNotation, dataType] = input.split('@');
|
60
|
+
const [groupId, artifactId, currentValue] = depNotation.split(':');
|
67
61
|
return {
|
68
62
|
depName: `${groupId}:${artifactId}`,
|
69
63
|
currentValue,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../lib/modules/manager/gradle/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import upath from 'upath';\nimport { regEx } from '../../../util/regex';\nimport { api as gradleVersioning } from '../../versioning/gradle';\nimport type { PackageDependency } from '../types';\nimport type {\n GradleManagerData,\n PackageVariables,\n VariableRegistry,\n} from './types';\n\nconst artifactRegex = regEx(\n '^[a-zA-Z][-_a-zA-Z0-9]*(?:\\\\.[a-zA-Z0-9][-_a-zA-Z0-9]*?)*$',\n);\n\nconst versionLikeRegex = regEx('^(?<version>[-_.\\\\[\\\\](),a-zA-Z0-9+ ]+)');\n\n// Extracts version-like and range-like strings from the beginning of input\nexport function versionLikeSubstring(\n input: string | null | undefined,\n): string | null {\n if (!input) {\n return null;\n }\n\n const match = versionLikeRegex.exec(input);\n const version = match?.groups?.version?.trim();\n if (!version || !regEx(/\\d/).test(version)) {\n return null;\n }\n\n if (!gradleVersioning.isValid(version)) {\n return null;\n }\n\n return version;\n}\n\nexport function isDependencyString(input: string): boolean {\n const parts = input.split(':');\n if (parts.length !== 3 && parts.length !== 4) {\n return false;\n }\n const [groupId, artifactId, versionPart, optionalClassifier] = parts;\n\n if (optionalClassifier && !artifactRegex.test(optionalClassifier)) {\n return false;\n }\n\n let version = versionPart;\n if (versionPart.includes('@')) {\n const [actualVersion, ...rest] = versionPart.split('@');\n if (rest.length !== 1) {\n return false;\n }\n version = actualVersion;\n }\n\n return !!(\n groupId &&\n artifactId &&\n version &&\n artifactRegex.test(groupId) &&\n artifactRegex.test(artifactId) &&\n version === versionLikeSubstring(version)\n );\n}\n\nexport function parseDependencyString(\n input: string,\n): PackageDependency<GradleManagerData> | null {\n if (!isDependencyString(input)) {\n return null;\n }\n\n const [groupId, artifactId, fullValue] = input.split(':');\n const [currentValue, dataType] = fullValue.split('@');\n\n return {\n depName: `${groupId}:${artifactId}`,\n currentValue,\n ...(dataType && { dataType }),\n };\n}\n\nconst gradleVersionsFileRegex = regEx('^versions\\\\.gradle(?:\\\\.kts)?$', 'i');\nconst gradleBuildFileRegex = regEx('^build\\\\.gradle(?:\\\\.kts)?$', 'i');\n\nexport function isGradleScriptFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename.endsWith('.gradle.kts') || filename.endsWith('.gradle');\n}\n\nexport function isGradleVersionsFile(path: string): boolean {\n const filename = upath.basename(path);\n return gradleVersionsFileRegex.test(filename);\n}\n\nexport function isGradleBuildFile(path: string): boolean {\n const filename = upath.basename(path);\n return gradleBuildFileRegex.test(filename);\n}\n\nexport function isPropsFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename === 'gradle.properties';\n}\n\nexport function isKotlinSourceFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename.endsWith('.kt');\n}\n\nexport function isTOMLFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename.endsWith('.toml');\n}\n\nexport function toAbsolutePath(packageFile: string): string {\n return upath.join(packageFile.replace(regEx(/^[/\\\\]*/), '/'));\n}\n\nfunction getFileRank(filename: string): number {\n if (isPropsFile(filename)) {\n return 0;\n }\n if (isGradleVersionsFile(filename)) {\n return 1;\n }\n if (isGradleBuildFile(filename)) {\n return 3;\n }\n return 2;\n}\n\nexport function reorderFiles(packageFiles: string[]): string[] {\n return packageFiles.sort((x, y) => {\n const xAbs = toAbsolutePath(x);\n const yAbs = toAbsolutePath(y);\n\n const xDir = upath.dirname(xAbs);\n const yDir = upath.dirname(yAbs);\n\n if (xDir === yDir) {\n const xRank = getFileRank(xAbs);\n const yRank = getFileRank(yAbs);\n if (xRank === yRank) {\n if (xAbs > yAbs) {\n return 1;\n }\n if (xAbs < yAbs) {\n return -1;\n }\n } else if (xRank > yRank) {\n return 1;\n } else if (yRank > xRank) {\n return -1;\n }\n } else if (xDir.startsWith(yDir)) {\n return 1;\n } else if (yDir.startsWith(xDir)) {\n return -1;\n }\n\n return 0;\n });\n}\n\nexport function getVars(\n registry: VariableRegistry,\n dir: string,\n vars: PackageVariables = registry[dir] || {},\n): PackageVariables {\n const dirAbs = toAbsolutePath(dir);\n const parentDir = upath.dirname(dirAbs);\n if (parentDir === dirAbs) {\n return vars;\n }\n const parentVars = registry[parentDir] || {};\n return getVars(registry, parentDir, { ...parentVars, ...vars });\n}\n\nexport function updateVars(\n registry: VariableRegistry,\n dir: string,\n newVars: PackageVariables,\n): void {\n const oldVars = registry[dir] ?? {};\n registry[dir] = { ...oldVars, ...newVars };\n}\n"]}
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../lib/modules/manager/gradle/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import upath from 'upath';\nimport { regEx } from '../../../util/regex';\nimport { api as gradleVersioning } from '../../versioning/gradle';\nimport type { PackageDependency } from '../types';\nimport type {\n GradleManagerData,\n PackageVariables,\n VariableRegistry,\n} from './types';\n\nconst artifactRegex = regEx(\n '^[a-zA-Z][-_a-zA-Z0-9]*(?:\\\\.[a-zA-Z0-9][-_a-zA-Z0-9]*?)*$',\n);\n\nconst versionLikeRegex = regEx('^(?<version>[-_.\\\\[\\\\](),a-zA-Z0-9+ ]+)');\n\n// Extracts version-like and range-like strings from the beginning of input\nexport function versionLikeSubstring(\n input: string | null | undefined,\n): string | null {\n if (!input) {\n return null;\n }\n\n const match = versionLikeRegex.exec(input);\n const version = match?.groups?.version?.trim();\n if (!version || !regEx(/\\d/).test(version)) {\n return null;\n }\n\n if (!gradleVersioning.isValid(version)) {\n return null;\n }\n\n return version;\n}\n\nexport function isDependencyString(input: string): boolean {\n const [depNotation, ...extra] = input.split('@');\n if (extra.length > 1) {\n return false;\n }\n\n const parts = depNotation.split(':');\n if (parts.length !== 3 && parts.length !== 4) {\n return false;\n }\n\n const [groupId, artifactId, version, classifier] = parts;\n\n return !!(\n groupId &&\n artifactId &&\n version &&\n artifactRegex.test(groupId) &&\n artifactRegex.test(artifactId) &&\n (!classifier || artifactRegex.test(classifier)) &&\n version === versionLikeSubstring(version)\n );\n}\n\nexport function parseDependencyString(\n input: string,\n): PackageDependency<GradleManagerData> | null {\n if (!isDependencyString(input)) {\n return null;\n }\n\n const [depNotation, dataType] = input.split('@');\n const [groupId, artifactId, currentValue] = depNotation.split(':');\n\n return {\n depName: `${groupId}:${artifactId}`,\n currentValue,\n ...(dataType && { dataType }),\n };\n}\n\nconst gradleVersionsFileRegex = regEx('^versions\\\\.gradle(?:\\\\.kts)?$', 'i');\nconst gradleBuildFileRegex = regEx('^build\\\\.gradle(?:\\\\.kts)?$', 'i');\n\nexport function isGradleScriptFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename.endsWith('.gradle.kts') || filename.endsWith('.gradle');\n}\n\nexport function isGradleVersionsFile(path: string): boolean {\n const filename = upath.basename(path);\n return gradleVersionsFileRegex.test(filename);\n}\n\nexport function isGradleBuildFile(path: string): boolean {\n const filename = upath.basename(path);\n return gradleBuildFileRegex.test(filename);\n}\n\nexport function isPropsFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename === 'gradle.properties';\n}\n\nexport function isKotlinSourceFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename.endsWith('.kt');\n}\n\nexport function isTOMLFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename.endsWith('.toml');\n}\n\nexport function toAbsolutePath(packageFile: string): string {\n return upath.join(packageFile.replace(regEx(/^[/\\\\]*/), '/'));\n}\n\nfunction getFileRank(filename: string): number {\n if (isPropsFile(filename)) {\n return 0;\n }\n if (isGradleVersionsFile(filename)) {\n return 1;\n }\n if (isGradleBuildFile(filename)) {\n return 3;\n }\n return 2;\n}\n\nexport function reorderFiles(packageFiles: string[]): string[] {\n return packageFiles.sort((x, y) => {\n const xAbs = toAbsolutePath(x);\n const yAbs = toAbsolutePath(y);\n\n const xDir = upath.dirname(xAbs);\n const yDir = upath.dirname(yAbs);\n\n if (xDir === yDir) {\n const xRank = getFileRank(xAbs);\n const yRank = getFileRank(yAbs);\n if (xRank === yRank) {\n if (xAbs > yAbs) {\n return 1;\n }\n if (xAbs < yAbs) {\n return -1;\n }\n } else if (xRank > yRank) {\n return 1;\n } else if (yRank > xRank) {\n return -1;\n }\n } else if (xDir.startsWith(yDir)) {\n return 1;\n } else if (yDir.startsWith(xDir)) {\n return -1;\n }\n\n return 0;\n });\n}\n\nexport function getVars(\n registry: VariableRegistry,\n dir: string,\n vars: PackageVariables = registry[dir] || {},\n): PackageVariables {\n const dirAbs = toAbsolutePath(dir);\n const parentDir = upath.dirname(dirAbs);\n if (parentDir === dirAbs) {\n return vars;\n }\n const parentVars = registry[parentDir] || {};\n return getVars(registry, parentDir, { ...parentVars, ...vars });\n}\n\nexport function updateVars(\n registry: VariableRegistry,\n dir: string,\n newVars: PackageVariables,\n): void {\n const oldVars = registry[dir] ?? {};\n registry[dir] = { ...oldVars, ...newVars };\n}\n"]}
|
@@ -34,6 +34,6 @@ async function generateRegistryLoginCmd(repositoryName, repositoryBaseURL, repos
|
|
34
34
|
hostType: docker_1.DockerDatasource.id,
|
35
35
|
}),
|
36
36
|
};
|
37
|
-
return await (0, common_1.generateLoginCmd)(repositoryRule
|
37
|
+
return await (0, common_1.generateLoginCmd)(repositoryRule);
|
38
38
|
}
|
39
39
|
//# sourceMappingURL=utils.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmfile/utils.ts"],"names":[],"mappings":";;AAWA,wDAMC;AAID,0EAQC;AAED,sCAEC;AAED,4DAeC;;AAlDD,0DAA0B;AAE1B,yCAAiE;AACjE,4EAAsD;AACtD,oDAA2D;AAC3D,6CAAoD;AAKpD,2EAA2E;AAC3E,SAAgB,sBAAsB,CAAC,OAAoB;IACzD,OAAO,CACL,OAAO,CAAC,qBAAqB,KAAK,SAAS;QAC3C,OAAO,CAAC,WAAW,KAAK,SAAS;QACjC,OAAO,CAAC,YAAY,KAAK,SAAS,CACnC,CAAC;AACJ,CAAC;AAED,4FAA4F;AAC5F,yCAAyC;AAClC,KAAK,UAAU,+BAA+B,CACnD,OAAoB,EACpB,oBAA4B;IAE5B,MAAM,qBAAqB,GAAG,IAAA,iBAAY,EAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IACvE,OAAO,IAAA,oBAAe,EACpB,eAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,CACvE,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,UAA0B;IACtD,OAAO,UAAU,CAAC,GAAG,KAAK,IAAI,CAAC;AACjC,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAC5C,cAAsB,EACtB,iBAAyB,EACzB,cAAsB;IAEtB,MAAM,cAAc,GAAmB;QACrC,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,cAAc;QAC1B,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC;YACvB,GAAG,EAAE,iBAAiB;YACtB,QAAQ,EAAE,yBAAgB,CAAC,EAAE;SAC9B,CAAC;KACH,CAAC;IAEF,OAAO,MAAM,IAAA,yBAAgB,EAAC,cAAc,
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmfile/utils.ts"],"names":[],"mappings":";;AAWA,wDAMC;AAID,0EAQC;AAED,sCAEC;AAED,4DAeC;;AAlDD,0DAA0B;AAE1B,yCAAiE;AACjE,4EAAsD;AACtD,oDAA2D;AAC3D,6CAAoD;AAKpD,2EAA2E;AAC3E,SAAgB,sBAAsB,CAAC,OAAoB;IACzD,OAAO,CACL,OAAO,CAAC,qBAAqB,KAAK,SAAS;QAC3C,OAAO,CAAC,WAAW,KAAK,SAAS;QACjC,OAAO,CAAC,YAAY,KAAK,SAAS,CACnC,CAAC;AACJ,CAAC;AAED,4FAA4F;AAC5F,yCAAyC;AAClC,KAAK,UAAU,+BAA+B,CACnD,OAAoB,EACpB,oBAA4B;IAE5B,MAAM,qBAAqB,GAAG,IAAA,iBAAY,EAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IACvE,OAAO,IAAA,oBAAe,EACpB,eAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,CACvE,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,UAA0B;IACtD,OAAO,UAAU,CAAC,GAAG,KAAK,IAAI,CAAC;AACjC,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAC5C,cAAsB,EACtB,iBAAyB,EACzB,cAAsB;IAEtB,MAAM,cAAc,GAAmB;QACrC,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,cAAc;QAC1B,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC;YACvB,GAAG,EAAE,iBAAiB;YACtB,QAAQ,EAAE,yBAAgB,CAAC,EAAE;SAC9B,CAAC;KACH,CAAC;IAEF,OAAO,MAAM,IAAA,yBAAgB,EAAC,cAAc,CAAC,CAAC;AAChD,CAAC","sourcesContent":["import upath from 'upath';\n\nimport { getParentDir, localPathExists } from '../../../util/fs';\nimport * as hostRules from '../../../util/host-rules';\nimport { DockerDatasource } from '../../datasource/docker';\nimport { generateLoginCmd } from '../helmv3/common';\nimport type { RepositoryRule } from '../helmv3/types';\n\nimport type { HelmRelease, HelmRepository } from './schema';\n\n/** Returns true if a helmfile release contains kustomize specific keys **/\nexport function kustomizationsKeysUsed(release: HelmRelease): boolean {\n return (\n release.strategicMergePatches !== undefined ||\n release.jsonPatches !== undefined ||\n release.transformers !== undefined\n );\n}\n\n/** Returns true if a helmfile release uses a local chart with a kustomization.yaml file **/\n// eslint-disable-next-line require-await\nexport async function localChartHasKustomizationsYaml(\n release: HelmRelease,\n helmFileYamlFileName: string,\n): Promise<boolean> {\n const helmfileYamlParentDir = getParentDir(helmFileYamlFileName) || '';\n return localPathExists(\n upath.join(helmfileYamlParentDir, release.chart, 'kustomization.yaml'),\n );\n}\n\nexport function isOCIRegistry(repository: HelmRepository): boolean {\n return repository.oci === true;\n}\n\nexport async function generateRegistryLoginCmd(\n repositoryName: string,\n repositoryBaseURL: string,\n repositoryHost: string,\n): Promise<string | null> {\n const repositoryRule: RepositoryRule = {\n name: repositoryName,\n repository: repositoryHost,\n hostRule: hostRules.find({\n url: repositoryBaseURL,\n hostType: DockerDatasource.id,\n }),\n };\n\n return await generateLoginCmd(repositoryRule);\n}\n"]}
|
@@ -11,6 +11,7 @@ const exec_1 = require("../../../util/exec");
|
|
11
11
|
const fs_1 = require("../../../util/fs");
|
12
12
|
const git_1 = require("../../../util/git");
|
13
13
|
const hostRules = tslib_1.__importStar(require("../../../util/host-rules"));
|
14
|
+
const regex_1 = require("../../../util/regex");
|
14
15
|
const yaml = tslib_1.__importStar(require("../../../util/yaml"));
|
15
16
|
const docker_1 = require("../../datasource/docker");
|
16
17
|
const helm_1 = require("../../datasource/helm");
|
@@ -34,7 +35,7 @@ async function helmCommands(execOptions, manifestPath, repositories) {
|
|
34
35
|
});
|
35
36
|
// if credentials for the registry have been found, log into it
|
36
37
|
await (0, p_map_1.default)(registries, async (value) => {
|
37
|
-
const loginCmd = await (0, common_1.generateLoginCmd)(value
|
38
|
+
const loginCmd = await (0, common_1.generateLoginCmd)(value);
|
38
39
|
if (loginCmd) {
|
39
40
|
cmd.push(loginCmd);
|
40
41
|
}
|
@@ -112,7 +113,8 @@ async function updateArtifacts({ packageFileName, updatedDeps, newPackageFileCon
|
|
112
113
|
const fileChanges = [];
|
113
114
|
if (is_1.default.truthy(existingLockFileContent)) {
|
114
115
|
const newHelmLockContent = await (0, fs_1.readLocalFile)(lockFileName, 'utf8');
|
115
|
-
const isLockFileChanged =
|
116
|
+
const isLockFileChanged = !is_1.default.string(newHelmLockContent) ||
|
117
|
+
isHelmLockChanged(existingLockFileContent, newHelmLockContent);
|
116
118
|
if (isLockFileChanged) {
|
117
119
|
fileChanges.push({
|
118
120
|
file: {
|
@@ -176,4 +178,8 @@ async function updateArtifacts({ packageFileName, updatedDeps, newPackageFileCon
|
|
176
178
|
];
|
177
179
|
}
|
178
180
|
}
|
181
|
+
function isHelmLockChanged(oldContent, newContent) {
|
182
|
+
const regex = (0, regex_1.regEx)(/^generated: ".+"$/m);
|
183
|
+
return newContent.replace(regex, '') !== oldContent.replace(regex, '');
|
184
|
+
}
|
179
185
|
//# sourceMappingURL=artifacts.js.map
|
@@ -1 +1 @@
|
|
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 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 { regEx } from '../../../util/regex';\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);\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 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 =\n !is.string(newHelmLockContent) ||\n isHelmLockChanged(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\nfunction isHelmLockChanged(oldContent: string, newContent: string): boolean {\n const regex = regEx(/^generated: \".+\"$/m);\n return newContent.replace(regex, '') !== oldContent.replace(regex, '');\n}\n"]}
|
@@ -1,4 +1,4 @@
|
|
1
1
|
import type { ExtraEnv } from '../../../util/exec/types';
|
2
2
|
import type { RepositoryRule } from './types';
|
3
|
-
export declare function generateLoginCmd(repositoryRule: RepositoryRule
|
3
|
+
export declare function generateLoginCmd(repositoryRule: RepositoryRule): Promise<string | null>;
|
4
4
|
export declare function generateHelmEnvs(): ExtraEnv;
|
@@ -11,9 +11,11 @@ const fs_1 = require("../../../util/fs");
|
|
11
11
|
const sanitize_1 = require("../../../util/sanitize");
|
12
12
|
const string_1 = require("../../../util/string");
|
13
13
|
const ecr_1 = require("../../datasource/docker/ecr");
|
14
|
-
async function generateLoginCmd(repositoryRule
|
14
|
+
async function generateLoginCmd(repositoryRule) {
|
15
|
+
logger_1.logger.trace({ repositoryRule }, 'Generating Helm registry login command');
|
15
16
|
const { hostRule, repository } = repositoryRule;
|
16
17
|
const { username, password } = hostRule;
|
18
|
+
const loginCMD = 'helm registry login';
|
17
19
|
if (username !== 'AWS' && ecr_1.ecrRegex.test(repository)) {
|
18
20
|
logger_1.logger.trace({ repository }, `Using ecr auth for Helm registry`);
|
19
21
|
const [, region] = (0, array_1.coerceArray)(ecr_1.ecrRegex.exec(repository));
|
@@ -27,11 +29,15 @@ async function generateLoginCmd(repositoryRule, loginCMD) {
|
|
27
29
|
}
|
28
30
|
(0, sanitize_1.addSecretForSanitizing)(username);
|
29
31
|
(0, sanitize_1.addSecretForSanitizing)(password);
|
30
|
-
return `${loginCMD} --username ${(0, shlex_1.quote)(username)} --password ${(0, shlex_1.quote)(password)} ${repository}`;
|
32
|
+
return `${loginCMD} --username ${(0, shlex_1.quote)(username)} --password ${(0, shlex_1.quote)(password)} ${(0, shlex_1.quote)(repository)}`;
|
31
33
|
}
|
32
34
|
if (username && password) {
|
33
35
|
logger_1.logger.trace({ repository }, `Using basic auth for Helm registry`);
|
34
|
-
|
36
|
+
// Split off any path as it's not valid for the helm registry login command
|
37
|
+
const hostPart = repository.split('/')[0];
|
38
|
+
const cmd = `${loginCMD} --username ${(0, shlex_1.quote)(username)} --password ${(0, shlex_1.quote)(password)} ${(0, shlex_1.quote)(hostPart)}`;
|
39
|
+
logger_1.logger.trace({ cmd }, 'Generated Helm registry login command');
|
40
|
+
return cmd;
|
35
41
|
}
|
36
42
|
return null;
|
37
43
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmv3/common.ts"],"names":[],"mappings":";;AAYA,
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../lib/modules/manager/helmv3/common.ts"],"names":[],"mappings":";;AAYA,4CAmCC;AAED,4CAWC;;AA5DD,iCAA8B;AAC9B,0DAA0B;AAE1B,4CAAyC;AACzC,+CAAkD;AAElD,yCAAmD;AACnD,qDAAgE;AAChE,iDAAkD;AAClD,qDAAwE;AAGjE,KAAK,UAAU,gBAAgB,CACpC,cAA8B;IAE9B,eAAM,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,EAAE,wCAAwC,CAAC,CAAC;IAC3E,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC;IAChD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IACxC,MAAM,QAAQ,GAAG,qBAAqB,CAAC;IACvC,IAAI,QAAQ,KAAK,KAAK,IAAI,cAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,eAAM,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,kCAAkC,CAAC,CAAC;QACjE,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,IAAA,mBAAW,EAAC,cAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,MAAM,IAAA,qBAAe,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAA,iCAAsB,EAAC,QAAQ,CAAC,CAAC;QACjC,IAAA,iCAAsB,EAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,GAAG,QAAQ,eAAe,IAAA,aAAK,EAAC,QAAQ,CAAC,eAAe,IAAA,aAAK,EAClE,QAAQ,CACT,IAAI,IAAA,aAAK,EAAC,UAAU,CAAC,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QACzB,eAAM,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,oCAAoC,CAAC,CAAC;QACnE,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,GAAG,QAAQ,eAAe,IAAA,aAAK,EAAC,QAAQ,CAAC,eAAe,IAAA,aAAK,EACvE,QAAQ,CACT,IAAI,IAAA,aAAK,EAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,uCAAuC,CAAC,CAAC;QAC/D,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,gBAAgB;IAC9B,OAAO;QACL,qBAAqB,EAAE,GAAG;QAC1B,iGAAiG;QACjG,oBAAoB,EAAE,GAAG,eAAK,CAAC,IAAI,CAAC,IAAA,oBAAe,GAAE,EAAE,eAAe,CAAC,EAAE;QACzE,sBAAsB,EAAE,GAAG,eAAK,CAAC,IAAI,CACnC,IAAA,oBAAe,GAAE,EACjB,mBAAmB,CACpB,EAAE;QACH,qBAAqB,EAAE,GAAG,eAAK,CAAC,IAAI,CAAC,IAAA,oBAAe,GAAE,EAAE,cAAc,CAAC,EAAE;KAC1E,CAAC;AACJ,CAAC","sourcesContent":["import { quote } from 'shlex';\nimport upath from 'upath';\n\nimport { logger } from '../../../logger';\nimport { coerceArray } from '../../../util/array';\nimport type { ExtraEnv } from '../../../util/exec/types';\nimport { privateCacheDir } from '../../../util/fs';\nimport { addSecretForSanitizing } from '../../../util/sanitize';\nimport { fromBase64 } from '../../../util/string';\nimport { ecrRegex, getECRAuthToken } from '../../datasource/docker/ecr';\nimport type { RepositoryRule } from './types';\n\nexport async function generateLoginCmd(\n repositoryRule: RepositoryRule,\n): Promise<string | null> {\n logger.trace({ repositoryRule }, 'Generating Helm registry login command');\n const { hostRule, repository } = repositoryRule;\n const { username, password } = hostRule;\n const loginCMD = 'helm registry login';\n if (username !== 'AWS' && ecrRegex.test(repository)) {\n logger.trace({ repository }, `Using ecr auth for Helm registry`);\n const [, region] = coerceArray(ecrRegex.exec(repository));\n const auth = await getECRAuthToken(region, hostRule);\n if (!auth) {\n return null;\n }\n const [username, password] = fromBase64(auth).split(':');\n if (!username || !password) {\n return null;\n }\n addSecretForSanitizing(username);\n addSecretForSanitizing(password);\n return `${loginCMD} --username ${quote(username)} --password ${quote(\n password,\n )} ${quote(repository)}`;\n }\n if (username && password) {\n logger.trace({ repository }, `Using basic auth for Helm registry`);\n // Split off any path as it's not valid for the helm registry login command\n const hostPart = repository.split('/')[0];\n const cmd = `${loginCMD} --username ${quote(username)} --password ${quote(\n password,\n )} ${quote(hostPart)}`;\n logger.trace({ cmd }, 'Generated Helm registry login command');\n return cmd;\n }\n return null;\n}\n\nexport function generateHelmEnvs(): ExtraEnv {\n return {\n HELM_EXPERIMENTAL_OCI: '1',\n // set cache and config files to a path in privateCacheDir to prevent file and credential leakage\n HELM_REGISTRY_CONFIG: `${upath.join(privateCacheDir(), 'registry.json')}`,\n HELM_REPOSITORY_CONFIG: `${upath.join(\n privateCacheDir(),\n 'repositories.yaml',\n )}`,\n HELM_REPOSITORY_CACHE: `${upath.join(privateCacheDir(), 'repositories')}`,\n };\n}\n"]}
|
@@ -172,7 +172,7 @@ async function updateHermitPackage(update) {
|
|
172
172
|
const fromPackages = from.map(shlex_1.quote).join(' ');
|
173
173
|
// when a name replacement happens, need to uninstall the old package
|
174
174
|
if (toUninstall.length > 0) {
|
175
|
-
const packagesToUninstall = toUninstall.join(' ');
|
175
|
+
const packagesToUninstall = toUninstall.map(shlex_1.quote).join(' ');
|
176
176
|
const uninstallCommands = `./hermit uninstall ${packagesToUninstall}`;
|
177
177
|
try {
|
178
178
|
const result = await (0, exec_1.exec)(uninstallCommands, execOptions);
|
@@ -183,7 +183,7 @@ async function updateHermitPackage(update) {
|
|
183
183
|
throw new UpdateHermitError(fromPackages, packagesToUninstall, e.stderr, e.stdout);
|
184
184
|
}
|
185
185
|
}
|
186
|
-
const packagesToInstall = toInstall.join(' ');
|
186
|
+
const packagesToInstall = toInstall.map(shlex_1.quote).join(' ');
|
187
187
|
const execCommands = `./hermit install ${packagesToInstall}`;
|
188
188
|
logger_1.logger.debug({
|
189
189
|
packageFile: update.packageFileName,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/hermit/artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import { quote } from 'shlex';\nimport upath from 'upath';\nimport { logger } from '../../../logger';\nimport { exec } from '../../../util/exec';\nimport type { ExecOptions } from '../../../util/exec/types';\nimport { localPathIsSymbolicLink, readLocalSymlink } from '../../../util/fs';\nimport { getRepoStatus } from '../../../util/git';\nimport * as p from '../../../util/promises';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types';\nimport type { ReadContentResult } from './types';\n\n/**\n * updateArtifacts runs hermit install for each updated dependencies\n */\nexport async function updateArtifacts(\n update: UpdateArtifact,\n): Promise<UpdateArtifactsResult[] | null> {\n const { packageFileName } = update;\n try {\n await updateHermitPackage(update);\n } catch (err) {\n const execErr: UpdateHermitError = err;\n logger.debug({ err }, `error updating hermit packages.`);\n return [\n {\n artifactError: {\n lockFile: `from: ${execErr.from}, to: ${execErr.to}`,\n stderr: execErr.stderr,\n },\n },\n ];\n }\n\n logger.debug(`scanning the changes after update`);\n\n let updateResult: UpdateArtifactsResult[] | null = null;\n\n try {\n updateResult = await getUpdateResult(packageFileName);\n logger.debug({ updateResult }, `update result for hermit`);\n } catch (err) {\n logger.debug({ err }, 'Error getting hermet update results');\n return [\n {\n artifactError: {\n stderr: err.message,\n },\n },\n ];\n }\n\n return updateResult;\n}\n\n/**\n * getContent returns the content of either link or a normal file\n */\nasync function getContent(file: string): Promise<ReadContentResult> {\n let contents: string | null = '';\n const isSymlink = await localPathIsSymbolicLink(file);\n\n if (isSymlink) {\n contents = await readLocalSymlink(file);\n }\n\n if (contents === null) {\n throw new Error(`error getting content for ${file}`);\n }\n\n return {\n isSymlink,\n contents,\n };\n}\n\n/**\n * getAddResult returns the UpdateArtifactsResult for the added files\n */\nfunction getAddResult(\n path: string,\n contentRes: ReadContentResult,\n): UpdateArtifactsResult {\n return {\n file: {\n type: 'addition',\n path,\n contents: contentRes.contents,\n isSymlink: contentRes.isSymlink,\n isExecutable: contentRes.isExecutable,\n },\n };\n}\n\n/**\n * getDeleteResult returns the UpdateArtifactsResult for deleted files\n */\nfunction getDeleteResult(path: string): UpdateArtifactsResult {\n return {\n file: {\n type: 'deletion',\n path,\n },\n };\n}\n\n/**\n * getUpdateResult will return the update result after `hermit install`\n * has been performed for all packages\n */\nasync function getUpdateResult(\n packageFileName: string,\n): Promise<UpdateArtifactsResult[]> {\n const hermitFolder = `${upath.dirname(packageFileName)}/`;\n const hermitChanges = await getRepoStatus(hermitFolder);\n logger.debug(\n { hermitChanges, hermitFolder },\n `hermit changes after package update`,\n );\n\n // handle added files\n const added = await p.map(\n [...hermitChanges.created, ...hermitChanges.not_added],\n async (path: string): Promise<UpdateArtifactsResult> => {\n const contents = await getContent(path);\n\n return getAddResult(path, contents);\n },\n );\n\n const deleted = hermitChanges.deleted.map(getDeleteResult);\n\n const modified = await p.map(\n hermitChanges.modified,\n async (path: string): Promise<UpdateArtifactsResult[]> => {\n const contents = await getContent(path);\n return [\n getDeleteResult(path), // delete existing link\n getAddResult(path, contents), // add a new link\n ];\n },\n );\n\n const renamed = await p.map(\n hermitChanges.renamed,\n async (renamed): Promise<UpdateArtifactsResult[]> => {\n const from = renamed.from;\n const to = renamed.to;\n const toContents = await getContent(to);\n\n return [getDeleteResult(from), getAddResult(to, toContents)];\n },\n );\n\n return [\n // rename will need to go first, because\n // it needs to create the new link for the new version\n // for the modified links to use\n ...renamed.flat(),\n ...modified.flat(),\n ...added,\n ...deleted,\n ];\n}\n\n/**\n * getHermitPackage returns the hermit package for running the hermit install\n */\nfunction getHermitPackage(name: string, version: string): string {\n return `${name}-${version}`;\n}\n\n/**\n * updateHermitPackage runs hermit install for the given package\n */\nasync function updateHermitPackage(update: UpdateArtifact): Promise<void> {\n logger.trace({ update }, `hermit.updateHermitPackage()`);\n\n const toInstall = [];\n const from = [];\n // storing the old package for replacement\n const toUninstall = [];\n\n for (const pkg of update.updatedDeps) {\n if (!pkg.depName || !pkg.currentVersion || !pkg.newValue) {\n logger.debug(\n {\n depName: pkg.depName,\n currentVersion: pkg.currentVersion,\n newValue: pkg.newValue,\n },\n 'missing package update information',\n );\n\n throw new UpdateHermitError(\n getHermitPackage(pkg.depName ?? '', pkg.currentVersion ?? ''),\n getHermitPackage(pkg.depName ?? '', pkg.newValue ?? ''),\n 'invalid package to update',\n );\n }\n\n const depName = pkg.depName;\n const newName = pkg.newName;\n const currentVersion = pkg.currentVersion;\n const newValue = pkg.newValue;\n const fromPackage = getHermitPackage(depName, currentVersion);\n // newName will be available for replacement\n const toPackage = getHermitPackage(newName ?? depName, newValue);\n toInstall.push(toPackage);\n from.push(fromPackage);\n // skips uninstall for version only replacement\n if (pkg.updateType === 'replacement' && newName !== depName) {\n toUninstall.push(depName);\n }\n }\n\n const execOptions: ExecOptions = {\n docker: {},\n cwdFile: update.packageFileName,\n };\n\n const fromPackages = from.map(quote).join(' ');\n\n // when a name replacement happens, need to uninstall the old package\n if (toUninstall.length > 0) {\n const packagesToUninstall = toUninstall.join(' ');\n const uninstallCommands = `./hermit uninstall ${packagesToUninstall}`;\n\n try {\n const result = await exec(uninstallCommands, execOptions);\n logger.trace(\n { stdout: result.stdout },\n `hermit uninstall command stdout`,\n );\n } catch (e) {\n logger.warn({ err: e }, `error uninstall hermit package for replacement`);\n throw new UpdateHermitError(\n fromPackages,\n packagesToUninstall,\n e.stderr,\n e.stdout,\n );\n }\n }\n\n const packagesToInstall = toInstall.join(' ');\n\n const execCommands = `./hermit install ${packagesToInstall}`;\n logger.debug(\n {\n packageFile: update.packageFileName,\n packagesToInstall,\n },\n `performing updates`,\n );\n\n try {\n const result = await exec(execCommands, execOptions);\n logger.trace({ stdout: result.stdout }, `hermit command stdout`);\n } catch (e) {\n logger.warn({ err: e }, `error updating hermit package`);\n throw new UpdateHermitError(\n fromPackages,\n packagesToInstall,\n e.stderr,\n e.stdout,\n );\n }\n}\n\nexport class UpdateHermitError extends Error {\n stdout: string;\n stderr: string;\n from: string;\n to: string;\n\n constructor(from: string, to: string, stderr: string, stdout = '') {\n super();\n this.stdout = stdout;\n this.stderr = stderr;\n this.from = from;\n this.to = to;\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/hermit/artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import { quote } from 'shlex';\nimport upath from 'upath';\nimport { logger } from '../../../logger';\nimport { exec } from '../../../util/exec';\nimport type { ExecOptions } from '../../../util/exec/types';\nimport { localPathIsSymbolicLink, readLocalSymlink } from '../../../util/fs';\nimport { getRepoStatus } from '../../../util/git';\nimport * as p from '../../../util/promises';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types';\nimport type { ReadContentResult } from './types';\n\n/**\n * updateArtifacts runs hermit install for each updated dependencies\n */\nexport async function updateArtifacts(\n update: UpdateArtifact,\n): Promise<UpdateArtifactsResult[] | null> {\n const { packageFileName } = update;\n try {\n await updateHermitPackage(update);\n } catch (err) {\n const execErr: UpdateHermitError = err;\n logger.debug({ err }, `error updating hermit packages.`);\n return [\n {\n artifactError: {\n lockFile: `from: ${execErr.from}, to: ${execErr.to}`,\n stderr: execErr.stderr,\n },\n },\n ];\n }\n\n logger.debug(`scanning the changes after update`);\n\n let updateResult: UpdateArtifactsResult[] | null = null;\n\n try {\n updateResult = await getUpdateResult(packageFileName);\n logger.debug({ updateResult }, `update result for hermit`);\n } catch (err) {\n logger.debug({ err }, 'Error getting hermet update results');\n return [\n {\n artifactError: {\n stderr: err.message,\n },\n },\n ];\n }\n\n return updateResult;\n}\n\n/**\n * getContent returns the content of either link or a normal file\n */\nasync function getContent(file: string): Promise<ReadContentResult> {\n let contents: string | null = '';\n const isSymlink = await localPathIsSymbolicLink(file);\n\n if (isSymlink) {\n contents = await readLocalSymlink(file);\n }\n\n if (contents === null) {\n throw new Error(`error getting content for ${file}`);\n }\n\n return {\n isSymlink,\n contents,\n };\n}\n\n/**\n * getAddResult returns the UpdateArtifactsResult for the added files\n */\nfunction getAddResult(\n path: string,\n contentRes: ReadContentResult,\n): UpdateArtifactsResult {\n return {\n file: {\n type: 'addition',\n path,\n contents: contentRes.contents,\n isSymlink: contentRes.isSymlink,\n isExecutable: contentRes.isExecutable,\n },\n };\n}\n\n/**\n * getDeleteResult returns the UpdateArtifactsResult for deleted files\n */\nfunction getDeleteResult(path: string): UpdateArtifactsResult {\n return {\n file: {\n type: 'deletion',\n path,\n },\n };\n}\n\n/**\n * getUpdateResult will return the update result after `hermit install`\n * has been performed for all packages\n */\nasync function getUpdateResult(\n packageFileName: string,\n): Promise<UpdateArtifactsResult[]> {\n const hermitFolder = `${upath.dirname(packageFileName)}/`;\n const hermitChanges = await getRepoStatus(hermitFolder);\n logger.debug(\n { hermitChanges, hermitFolder },\n `hermit changes after package update`,\n );\n\n // handle added files\n const added = await p.map(\n [...hermitChanges.created, ...hermitChanges.not_added],\n async (path: string): Promise<UpdateArtifactsResult> => {\n const contents = await getContent(path);\n\n return getAddResult(path, contents);\n },\n );\n\n const deleted = hermitChanges.deleted.map(getDeleteResult);\n\n const modified = await p.map(\n hermitChanges.modified,\n async (path: string): Promise<UpdateArtifactsResult[]> => {\n const contents = await getContent(path);\n return [\n getDeleteResult(path), // delete existing link\n getAddResult(path, contents), // add a new link\n ];\n },\n );\n\n const renamed = await p.map(\n hermitChanges.renamed,\n async (renamed): Promise<UpdateArtifactsResult[]> => {\n const from = renamed.from;\n const to = renamed.to;\n const toContents = await getContent(to);\n\n return [getDeleteResult(from), getAddResult(to, toContents)];\n },\n );\n\n return [\n // rename will need to go first, because\n // it needs to create the new link for the new version\n // for the modified links to use\n ...renamed.flat(),\n ...modified.flat(),\n ...added,\n ...deleted,\n ];\n}\n\n/**\n * getHermitPackage returns the hermit package for running the hermit install\n */\nfunction getHermitPackage(name: string, version: string): string {\n return `${name}-${version}`;\n}\n\n/**\n * updateHermitPackage runs hermit install for the given package\n */\nasync function updateHermitPackage(update: UpdateArtifact): Promise<void> {\n logger.trace({ update }, `hermit.updateHermitPackage()`);\n\n const toInstall = [];\n const from = [];\n // storing the old package for replacement\n const toUninstall = [];\n\n for (const pkg of update.updatedDeps) {\n if (!pkg.depName || !pkg.currentVersion || !pkg.newValue) {\n logger.debug(\n {\n depName: pkg.depName,\n currentVersion: pkg.currentVersion,\n newValue: pkg.newValue,\n },\n 'missing package update information',\n );\n\n throw new UpdateHermitError(\n getHermitPackage(pkg.depName ?? '', pkg.currentVersion ?? ''),\n getHermitPackage(pkg.depName ?? '', pkg.newValue ?? ''),\n 'invalid package to update',\n );\n }\n\n const depName = pkg.depName;\n const newName = pkg.newName;\n const currentVersion = pkg.currentVersion;\n const newValue = pkg.newValue;\n const fromPackage = getHermitPackage(depName, currentVersion);\n // newName will be available for replacement\n const toPackage = getHermitPackage(newName ?? depName, newValue);\n toInstall.push(toPackage);\n from.push(fromPackage);\n // skips uninstall for version only replacement\n if (pkg.updateType === 'replacement' && newName !== depName) {\n toUninstall.push(depName);\n }\n }\n\n const execOptions: ExecOptions = {\n docker: {},\n cwdFile: update.packageFileName,\n };\n\n const fromPackages = from.map(quote).join(' ');\n\n // when a name replacement happens, need to uninstall the old package\n if (toUninstall.length > 0) {\n const packagesToUninstall = toUninstall.map(quote).join(' ');\n const uninstallCommands = `./hermit uninstall ${packagesToUninstall}`;\n\n try {\n const result = await exec(uninstallCommands, execOptions);\n logger.trace(\n { stdout: result.stdout },\n `hermit uninstall command stdout`,\n );\n } catch (e) {\n logger.warn({ err: e }, `error uninstall hermit package for replacement`);\n throw new UpdateHermitError(\n fromPackages,\n packagesToUninstall,\n e.stderr,\n e.stdout,\n );\n }\n }\n\n const packagesToInstall = toInstall.map(quote).join(' ');\n\n const execCommands = `./hermit install ${packagesToInstall}`;\n logger.debug(\n {\n packageFile: update.packageFileName,\n packagesToInstall,\n },\n `performing updates`,\n );\n\n try {\n const result = await exec(execCommands, execOptions);\n logger.trace({ stdout: result.stdout }, `hermit command stdout`);\n } catch (e) {\n logger.warn({ err: e }, `error updating hermit package`);\n throw new UpdateHermitError(\n fromPackages,\n packagesToInstall,\n e.stderr,\n e.stdout,\n );\n }\n}\n\nexport class UpdateHermitError extends Error {\n stdout: string;\n stderr: string;\n from: string;\n to: string;\n\n constructor(from: string, to: string, stderr: string, stdout = '') {\n super();\n this.stdout = stdout;\n this.stderr = stderr;\n this.from = from;\n this.to = to;\n }\n}\n"]}
|
@@ -23,8 +23,8 @@ function extractPackageFile(content, packageFile, config) {
|
|
23
23
|
return deps.length ? { deps } : null;
|
24
24
|
}
|
25
25
|
// Comes from https://github.com/distribution/reference/blob/v0.6.0/regexp.go
|
26
|
-
// Extracted & converted with https://go.dev/play/p/
|
27
|
-
const dockerImageRegexPattern = `((?:(?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])(?:\\.(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]))*|\\[(?:[a-fA-F0-9:]+)\\])(?::[0-9]+)?/)?[a-z0-9]+(?:(?:[._]|__|[-]+)[a-z0-9]+)*(?:/[a-z0-9]+(?:(?:[._]|__|[-]+)[a-z0-9]+)*)*)(?::([A-Za-z0-
|
26
|
+
// Extracted & converted with https://go.dev/play/p/KQQAONGp__2
|
27
|
+
const dockerImageRegexPattern = `((?:(?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])(?:\\.(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]))*|\\[(?:[a-fA-F0-9:]+)\\])(?::[0-9]+)?/)?[a-z0-9]+(?:(?:[._]|__|[-]+)[a-z0-9]+)*(?:/[a-z0-9]+(?:(?:[._]|__|[-]+)[a-z0-9]+)*)*)(?::([A-Za-z0-9_][A-Za-z0-9_.-]{0,127}))?(?:@([A-Za-z][A-Za-z0-9]*(?:[-_+.][A-Za-z][A-Za-z0-9]*)*[:][0-9a-fA-F]{32,}))?`;
|
28
28
|
const k8sImageRegex = (0, regex_1.regEx)(`^\\s*-?\\s*image:\\s*['"]?(${dockerImageRegexPattern})['"]?\\s*`);
|
29
29
|
function extractImages(content, config) {
|
30
30
|
const deps = [];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/kubernetes/extract.ts"],"names":[],"mappings":";;AAiBA,gDAoBC;;AArCD,kEAAkC;AAClC,4CAAyC;AACzC,+CAA0D;AAC1D,6CAA+C;AAC/C,oEAGyC;AACzC,iGAA2E;AAC3E,mDAA+C;AAQ/C,SAAgB,kBAAkB,CAChC,OAAe,EACf,WAAmB,EACnB,MAAqB;IAErB,eAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAEhD,MAAM,oBAAoB,GACxB,IAAA,aAAK,EAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACxC,IAAA,aAAK,EAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAwB;QAChC,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC;QACjC,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC;KACrC,CAAC;IAEF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,6EAA6E;AAC7E,+DAA+D;AAC/D,MAAM,uBAAuB,GAAG,
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/kubernetes/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { newlineRegex, regEx } from '../../../util/regex';\nimport { parseYaml } from '../../../util/yaml';\nimport {\n KubernetesApiDatasource,\n supportedApis,\n} from '../../datasource/kubernetes-api';\nimport * as kubernetesApiVersioning from '../../versioning/kubernetes-api';\nimport { getDep } from '../dockerfile/extract';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types';\nimport type { KubernetesConfiguration } from './types';\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n config: ExtractConfig,\n): PackageFileContent | null {\n logger.trace('kubernetes.extractPackageFile()');\n\n const isKubernetesManifest =\n regEx(/\\s*apiVersion\\s*:/).test(content) &&\n regEx(/\\s*kind\\s*:/).test(content);\n if (!isKubernetesManifest) {\n return null;\n }\n\n const deps: PackageDependency[] = [\n ...extractImages(content, config),\n ...extractApis(content, packageFile),\n ];\n\n return deps.length ? { deps } : null;\n}\n\n// Comes from https://github.com/distribution/reference/blob/v0.6.0/regexp.go\n// Extracted & converted with https://go.dev/play/p/KQQAONGp__2\nconst dockerImageRegexPattern = `((?:(?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])(?:\\\\.(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]))*|\\\\[(?:[a-fA-F0-9:]+)\\\\])(?::[0-9]+)?/)?[a-z0-9]+(?:(?:[._]|__|[-]+)[a-z0-9]+)*(?:/[a-z0-9]+(?:(?:[._]|__|[-]+)[a-z0-9]+)*)*)(?::([A-Za-z0-9_][A-Za-z0-9_.-]{0,127}))?(?:@([A-Za-z][A-Za-z0-9]*(?:[-_+.][A-Za-z][A-Za-z0-9]*)*[:][0-9a-fA-F]{32,}))?`;\n\nconst k8sImageRegex = regEx(\n `^\\\\s*-?\\\\s*image:\\\\s*['\"]?(${dockerImageRegexPattern})['\"]?\\\\s*`,\n);\n\nfunction extractImages(\n content: string,\n config: ExtractConfig,\n): PackageDependency[] {\n const deps: PackageDependency[] = [];\n\n for (const line of content.split(newlineRegex)) {\n const match = k8sImageRegex.exec(line);\n if (match) {\n const currentFrom = match[1];\n const dep = getDep(currentFrom, true, config.registryAliases);\n logger.debug(\n {\n depName: dep.depName,\n currentValue: dep.currentValue,\n currentDigest: dep.currentDigest,\n },\n 'Kubernetes image',\n );\n deps.push(dep);\n }\n }\n\n return deps;\n}\n\nfunction extractApis(\n content: string,\n packageFile: string,\n): PackageDependency[] {\n let doc: KubernetesConfiguration[];\n\n try {\n // TODO: use schema (#9610)\n doc = parseYaml(content, {\n removeTemplates: true,\n });\n } catch (err) {\n logger.debug({ err, packageFile }, 'Failed to parse Kubernetes manifest.');\n return [];\n }\n\n return doc\n .filter(is.truthy)\n .filter(\n (m) =>\n is.nonEmptyStringAndNotWhitespace(m.kind) &&\n is.nonEmptyStringAndNotWhitespace(m.apiVersion),\n )\n .filter((m) => supportedApis.has(m.kind))\n .map((configuration) => ({\n depName: configuration.kind,\n currentValue: configuration.apiVersion,\n datasource: KubernetesApiDatasource.id,\n versioning: kubernetesApiVersioning.id,\n }));\n}\n"]}
|
@@ -23,7 +23,7 @@ async function localExistingChartPath(chartHome, dependencyName, version) {
|
|
23
23
|
function helmRepositoryArgs(repository, depName, datasource) {
|
24
24
|
switch (datasource) {
|
25
25
|
case helm_1.HelmDatasource.id:
|
26
|
-
return `--repo ${(0, shlex_1.quote)(repository)} ${depName}`;
|
26
|
+
return `--repo ${(0, shlex_1.quote)(repository)} ${(0, shlex_1.quote)(depName)}`;
|
27
27
|
case docker_1.DockerDatasource.id:
|
28
28
|
return (0, shlex_1.quote)(`oci://${repository}`);
|
29
29
|
/* v8 ignore next 2: should never happen */
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/kustomize/artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport upath from 'upath';\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 deleteLocalFile,\n getSiblingFileName,\n localPathExists,\n readLocalFile,\n} from '../../../util/fs';\nimport { getRepoStatus } from '../../../util/git';\nimport { DockerDatasource } from '../../datasource/docker';\nimport { HelmDatasource } from '../../datasource/helm';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types';\nimport { generateHelmEnvs } from './common';\nimport { parseKustomize } from './extract';\n\nasync function localExistingChartPath(\n chartHome: string,\n dependencyName: string,\n version?: string,\n): Promise<string | null> {\n const folderName = `${dependencyName}-${version}`;\n const path = upath.join(chartHome, folderName);\n const pathExists = await localPathExists(path);\n\n return pathExists ? path : null;\n}\n\nfunction helmRepositoryArgs(\n repository: string,\n depName: string,\n datasource?: string,\n): string {\n switch (datasource) {\n case HelmDatasource.id:\n return `--repo ${quote(repository)} ${depName}`;\n case DockerDatasource.id:\n return quote(`oci://${repository}`);\n /* v8 ignore next 2: should never happen */\n default:\n throw new Error(`Unknown datasource: ${datasource}`);\n }\n}\n\nasync function inflateHelmChart(\n flagEnabled: boolean,\n execOptions: ExecOptions,\n chartHome: string,\n depName: string,\n repository: string,\n currentVersion: string,\n newVersion?: string,\n datasource?: string,\n): Promise<void> {\n const currentChartExistingPath = await localExistingChartPath(\n chartHome,\n depName,\n currentVersion,\n );\n\n if (!flagEnabled && is.nullOrUndefined(currentChartExistingPath)) {\n logger.debug(\n `Not inflating Helm chart for ${depName} as kustomizeInflateHelmCharts is not enabled and the current version isn't inflated`,\n );\n return;\n }\n\n if (\n is.nonEmptyString(currentChartExistingPath) &&\n is.nonEmptyString(newVersion)\n ) {\n logger.debug(`Deleting previous helm chart: ${currentChartExistingPath}`);\n await deleteLocalFile(currentChartExistingPath);\n }\n\n const versionToPull = newVersion ?? currentVersion;\n const versionToPullExistingPath = await localExistingChartPath(\n chartHome,\n depName,\n versionToPull,\n );\n\n if (is.nonEmptyString(versionToPullExistingPath)) {\n logger.debug(\n `Helm chart ${depName} version ${versionToPull} already exists at ${versionToPullExistingPath}`,\n );\n return;\n }\n\n const folderName = `${depName}-${versionToPull}`;\n const untarDir = upath.join(chartHome, folderName);\n logger.debug(\n `Pulling helm chart ${depName} version ${versionToPull} to ${untarDir}`,\n );\n\n const cmd =\n `helm pull --untar --untardir ${quote(untarDir)} ` +\n `--version ${quote(versionToPull)} ${helmRepositoryArgs(repository, depName, datasource)}`;\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(`kustomize.updateArtifacts(${packageFileName})`);\n const project = parseKustomize(newPackageFileContent);\n const isUpdateOptionInflateChartArchives =\n config.postUpdateOptions?.includes('kustomizeInflateHelmCharts') === true;\n if (is.nullOrUndefined(project)) {\n return [\n {\n artifactError: {\n stderr: 'Failed to parse new package file content',\n },\n },\n ];\n }\n\n const chartHome = getSiblingFileName(\n packageFileName,\n project.helmGlobals?.chartHome ?? 'charts',\n );\n\n try {\n const helmToolConstraint: ToolConstraint = {\n toolName: 'helm',\n constraint: config.constraints?.helm,\n };\n\n const execOptions: ExecOptions = {\n docker: {},\n extraEnv: generateHelmEnvs(config),\n toolConstraints: [helmToolConstraint],\n };\n\n for (const dependency of updatedDeps) {\n if (!dependency.currentVersion) {\n continue;\n }\n\n if (dependency.newVersion === dependency.currentVersion) {\n continue;\n }\n\n if (!is.nonEmptyString(dependency.depName)) {\n continue;\n }\n\n if (dependency.depType !== 'HelmChart') {\n continue;\n }\n\n let repository = null;\n\n switch (dependency.datasource) {\n case HelmDatasource.id:\n repository = dependency.registryUrls?.[0];\n break;\n case DockerDatasource.id:\n repository = dependency.packageName;\n break;\n }\n\n if (is.nullOrUndefined(repository)) {\n continue;\n }\n\n await inflateHelmChart(\n isUpdateOptionInflateChartArchives,\n execOptions,\n chartHome,\n dependency.depName,\n repository,\n dependency.currentVersion,\n dependency.newVersion,\n dependency.datasource,\n );\n }\n\n const status = await getRepoStatus();\n const chartsAddition = status?.not_added ?? [];\n const chartsDeletion = status?.deleted ?? [];\n\n const fileChanges: UpdateArtifactsResult[] = [];\n\n for (const file of chartsAddition) {\n // only add artifacts in the chartHome path\n if (!file.startsWith(chartHome)) {\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 chartHome path\n if (!file.startsWith(chartHome)) {\n continue;\n }\n fileChanges.push({\n file: {\n type: 'deletion',\n path: file,\n },\n });\n }\n\n return fileChanges.length > 0 ? fileChanges : null;\n } catch (err) {\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.debug({ err }, 'Failed to inflate helm chart');\n return [\n {\n artifactError: {\n stderr: err.message,\n },\n },\n ];\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/kustomize/artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport upath from 'upath';\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 deleteLocalFile,\n getSiblingFileName,\n localPathExists,\n readLocalFile,\n} from '../../../util/fs';\nimport { getRepoStatus } from '../../../util/git';\nimport { DockerDatasource } from '../../datasource/docker';\nimport { HelmDatasource } from '../../datasource/helm';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types';\nimport { generateHelmEnvs } from './common';\nimport { parseKustomize } from './extract';\n\nasync function localExistingChartPath(\n chartHome: string,\n dependencyName: string,\n version?: string,\n): Promise<string | null> {\n const folderName = `${dependencyName}-${version}`;\n const path = upath.join(chartHome, folderName);\n const pathExists = await localPathExists(path);\n\n return pathExists ? path : null;\n}\n\nfunction helmRepositoryArgs(\n repository: string,\n depName: string,\n datasource?: string,\n): string {\n switch (datasource) {\n case HelmDatasource.id:\n return `--repo ${quote(repository)} ${quote(depName)}`;\n case DockerDatasource.id:\n return quote(`oci://${repository}`);\n /* v8 ignore next 2: should never happen */\n default:\n throw new Error(`Unknown datasource: ${datasource}`);\n }\n}\n\nasync function inflateHelmChart(\n flagEnabled: boolean,\n execOptions: ExecOptions,\n chartHome: string,\n depName: string,\n repository: string,\n currentVersion: string,\n newVersion?: string,\n datasource?: string,\n): Promise<void> {\n const currentChartExistingPath = await localExistingChartPath(\n chartHome,\n depName,\n currentVersion,\n );\n\n if (!flagEnabled && is.nullOrUndefined(currentChartExistingPath)) {\n logger.debug(\n `Not inflating Helm chart for ${depName} as kustomizeInflateHelmCharts is not enabled and the current version isn't inflated`,\n );\n return;\n }\n\n if (\n is.nonEmptyString(currentChartExistingPath) &&\n is.nonEmptyString(newVersion)\n ) {\n logger.debug(`Deleting previous helm chart: ${currentChartExistingPath}`);\n await deleteLocalFile(currentChartExistingPath);\n }\n\n const versionToPull = newVersion ?? currentVersion;\n const versionToPullExistingPath = await localExistingChartPath(\n chartHome,\n depName,\n versionToPull,\n );\n\n if (is.nonEmptyString(versionToPullExistingPath)) {\n logger.debug(\n `Helm chart ${depName} version ${versionToPull} already exists at ${versionToPullExistingPath}`,\n );\n return;\n }\n\n const folderName = `${depName}-${versionToPull}`;\n const untarDir = upath.join(chartHome, folderName);\n logger.debug(\n `Pulling helm chart ${depName} version ${versionToPull} to ${untarDir}`,\n );\n\n const cmd =\n `helm pull --untar --untardir ${quote(untarDir)} ` +\n `--version ${quote(versionToPull)} ${helmRepositoryArgs(repository, depName, datasource)}`;\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(`kustomize.updateArtifacts(${packageFileName})`);\n const project = parseKustomize(newPackageFileContent);\n const isUpdateOptionInflateChartArchives =\n config.postUpdateOptions?.includes('kustomizeInflateHelmCharts') === true;\n if (is.nullOrUndefined(project)) {\n return [\n {\n artifactError: {\n stderr: 'Failed to parse new package file content',\n },\n },\n ];\n }\n\n const chartHome = getSiblingFileName(\n packageFileName,\n project.helmGlobals?.chartHome ?? 'charts',\n );\n\n try {\n const helmToolConstraint: ToolConstraint = {\n toolName: 'helm',\n constraint: config.constraints?.helm,\n };\n\n const execOptions: ExecOptions = {\n docker: {},\n extraEnv: generateHelmEnvs(config),\n toolConstraints: [helmToolConstraint],\n };\n\n for (const dependency of updatedDeps) {\n if (!dependency.currentVersion) {\n continue;\n }\n\n if (dependency.newVersion === dependency.currentVersion) {\n continue;\n }\n\n if (!is.nonEmptyString(dependency.depName)) {\n continue;\n }\n\n if (dependency.depType !== 'HelmChart') {\n continue;\n }\n\n let repository = null;\n\n switch (dependency.datasource) {\n case HelmDatasource.id:\n repository = dependency.registryUrls?.[0];\n break;\n case DockerDatasource.id:\n repository = dependency.packageName;\n break;\n }\n\n if (is.nullOrUndefined(repository)) {\n continue;\n }\n\n await inflateHelmChart(\n isUpdateOptionInflateChartArchives,\n execOptions,\n chartHome,\n dependency.depName,\n repository,\n dependency.currentVersion,\n dependency.newVersion,\n dependency.datasource,\n );\n }\n\n const status = await getRepoStatus();\n const chartsAddition = status?.not_added ?? [];\n const chartsDeletion = status?.deleted ?? [];\n\n const fileChanges: UpdateArtifactsResult[] = [];\n\n for (const file of chartsAddition) {\n // only add artifacts in the chartHome path\n if (!file.startsWith(chartHome)) {\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 chartHome path\n if (!file.startsWith(chartHome)) {\n continue;\n }\n fileChanges.push({\n file: {\n type: 'deletion',\n path: file,\n },\n });\n }\n\n return fileChanges.length > 0 ? fileChanges : null;\n } catch (err) {\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.debug({ err }, 'Failed to inflate helm chart');\n return [\n {\n artifactError: {\n stderr: err.message,\n },\n },\n ];\n }\n}\n"]}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { XmlDocument } from 'xmldoc';
|
2
2
|
import type { ExtractConfig, PackageFile } from '../types';
|
3
|
-
export declare function extractPackage(rawContent: string, packageFile: string,
|
3
|
+
export declare function extractPackage(rawContent: string, packageFile: string, config: ExtractConfig): PackageFile | null;
|
4
4
|
export declare function extractRegistries(rawContent: string): string[];
|
5
5
|
export declare function parseSettings(raw: string): XmlDocument | null;
|
6
6
|
export declare function resolveParents(packages: PackageFile[]): PackageFile[];
|