renovate 39.176.4 → 40.0.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/migrations/custom/package-rules-migration.js.map +1 -1
- package/dist/config/migrations/migrations-service.d.ts +2 -2
- package/dist/config/migrations/migrations-service.js.map +1 -1
- package/dist/config/migrations/types.d.ts +1 -3
- package/dist/config/migrations/types.js.map +1 -1
- package/dist/config/options/index.js +1 -1
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/presets/internal/group.js +0 -1
- package/dist/config/presets/internal/group.js.map +1 -1
- package/dist/config/presets/types.d.ts +4 -4
- package/dist/config/presets/types.js.map +1 -1
- package/dist/config-validator.js.map +1 -1
- package/dist/logger/utils.js +4 -2
- package/dist/logger/utils.js.map +1 -1
- package/dist/modules/datasource/artifactory/index.js +1 -1
- package/dist/modules/datasource/artifactory/index.js.map +1 -1
- package/dist/modules/datasource/conan/index.js +1 -1
- package/dist/modules/datasource/conan/index.js.map +1 -1
- package/dist/modules/datasource/crate/index.js.map +1 -1
- package/dist/modules/datasource/datasource.d.ts +1 -1
- package/dist/modules/datasource/datasource.js +3 -1
- package/dist/modules/datasource/datasource.js.map +1 -1
- package/dist/modules/datasource/deb/common.d.ts +3 -3
- package/dist/modules/datasource/deb/common.js.map +1 -1
- package/dist/modules/datasource/docker/ecr.js +1 -1
- package/dist/modules/datasource/docker/ecr.js.map +1 -1
- package/dist/modules/datasource/docker/index.js.map +1 -1
- package/dist/modules/datasource/hexpm-bob/index.js +1 -1
- package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
- package/dist/modules/datasource/nuget/v2.js +1 -1
- package/dist/modules/datasource/nuget/v2.js.map +1 -1
- package/dist/modules/datasource/pod/index.js +1 -2
- package/dist/modules/datasource/pod/index.js.map +1 -1
- package/dist/modules/datasource/rubygems/metadata-cache.js.map +1 -1
- package/dist/modules/datasource/sbt-plugin/index.js +1 -2
- package/dist/modules/datasource/sbt-plugin/index.js.map +1 -1
- package/dist/modules/manager/ansible-galaxy/collections-metadata.js +1 -2
- package/dist/modules/manager/ansible-galaxy/collections-metadata.js.map +1 -1
- package/dist/modules/manager/asdf/upgradeable-tooling.js +4 -4
- package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/batect/extract.js.map +1 -1
- package/dist/modules/manager/bazel/artifacts.js +2 -2
- package/dist/modules/manager/bazel/artifacts.js.map +1 -1
- package/dist/modules/manager/bazel/common.js +1 -2
- package/dist/modules/manager/bazel/common.js.map +1 -1
- package/dist/modules/manager/bazel/parser.js +1 -1
- package/dist/modules/manager/bazel/parser.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/context.d.ts +4 -3
- package/dist/modules/manager/bazel-module/parser/context.js +9 -6
- package/dist/modules/manager/bazel-module/parser/context.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/extension-tags.js +10 -2
- package/dist/modules/manager/bazel-module/parser/extension-tags.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/fragments.d.ts +20 -2
- package/dist/modules/manager/bazel-module/parser/fragments.js +8 -2
- package/dist/modules/manager/bazel-module/parser/fragments.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/index.js +1 -1
- package/dist/modules/manager/bazel-module/parser/index.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/maven.d.ts +16 -0
- package/dist/modules/manager/bazel-module/parser/oci.d.ts +8 -0
- package/dist/modules/manager/bazel-module/parser/oci.js +4 -1
- package/dist/modules/manager/bazel-module/parser/oci.js.map +1 -1
- package/dist/modules/manager/bun/artifacts.js +1 -1
- package/dist/modules/manager/bun/artifacts.js.map +1 -1
- package/dist/modules/manager/bundler/extract.js.map +1 -1
- package/dist/modules/manager/cargo/artifacts.js +1 -1
- package/dist/modules/manager/cargo/artifacts.js.map +1 -1
- package/dist/modules/manager/cargo/extract.js.map +1 -1
- package/dist/modules/manager/cargo/types.d.ts +1 -3
- package/dist/modules/manager/cargo/types.js.map +1 -1
- package/dist/modules/manager/composer/utils.js +4 -4
- package/dist/modules/manager/composer/utils.js.map +1 -1
- package/dist/modules/manager/deps-edn/extract.js +3 -3
- package/dist/modules/manager/deps-edn/extract.js.map +1 -1
- package/dist/modules/manager/deps-edn/types.js.map +1 -1
- package/dist/modules/manager/dockerfile/extract.js +2 -3
- package/dist/modules/manager/dockerfile/extract.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +17 -17
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/flux/types.d.ts +3 -3
- package/dist/modules/manager/flux/types.js.map +1 -1
- package/dist/modules/manager/git-submodules/types.d.ts +2 -2
- package/dist/modules/manager/git-submodules/types.js.map +1 -1
- package/dist/modules/manager/github-actions/extract.js +2 -2
- package/dist/modules/manager/github-actions/extract.js.map +1 -1
- package/dist/modules/manager/glasskube/types.d.ts +2 -2
- package/dist/modules/manager/glasskube/types.js.map +1 -1
- package/dist/modules/manager/gleam/artifacts.js +1 -1
- package/dist/modules/manager/gleam/artifacts.js.map +1 -1
- package/dist/modules/manager/gradle/utils.js +6 -2
- package/dist/modules/manager/gradle/utils.js.map +1 -1
- package/dist/modules/manager/haskell-cabal/extract.js +1 -1
- package/dist/modules/manager/haskell-cabal/extract.js.map +1 -1
- package/dist/modules/manager/helmfile/artifacts.js +1 -1
- package/dist/modules/manager/helmfile/artifacts.js.map +1 -1
- package/dist/modules/manager/helmfile/extract.js +2 -2
- package/dist/modules/manager/helmfile/extract.js.map +1 -1
- package/dist/modules/manager/helmv3/artifacts.js +1 -1
- package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
- package/dist/modules/manager/helmv3/extract.js.map +1 -1
- package/dist/modules/manager/helmv3/utils.js +1 -1
- package/dist/modules/manager/helmv3/utils.js.map +1 -1
- package/dist/modules/manager/homebrew/util.js +1 -2
- package/dist/modules/manager/homebrew/util.js.map +1 -1
- package/dist/modules/manager/jsonnet-bundler/extract.js +1 -1
- package/dist/modules/manager/jsonnet-bundler/extract.js.map +1 -1
- package/dist/modules/manager/leiningen/extract.js +1 -2
- package/dist/modules/manager/leiningen/extract.js.map +1 -1
- package/dist/modules/manager/maven/extract.js.map +1 -1
- package/dist/modules/manager/maven/update.js.map +1 -1
- package/dist/modules/manager/mise/upgradeable-tooling.js +7 -7
- package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/nix/extract.js +1 -1
- package/dist/modules/manager/nix/extract.js.map +1 -1
- package/dist/modules/manager/npm/extract/pnpm.js +1 -1
- package/dist/modules/manager/npm/extract/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/index.js +1 -1
- package/dist/modules/manager/npm/post-update/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
- package/dist/modules/manager/nuget/config-formatter.js +1 -2
- package/dist/modules/manager/nuget/config-formatter.js.map +1 -1
- package/dist/modules/manager/nuget/package-tree.js +1 -1
- package/dist/modules/manager/nuget/package-tree.js.map +1 -1
- package/dist/modules/manager/nuget/util.js +2 -2
- package/dist/modules/manager/nuget/util.js.map +1 -1
- package/dist/modules/manager/osgi/extract.js +3 -3
- package/dist/modules/manager/osgi/extract.js.map +1 -1
- package/dist/modules/manager/pep621/processors/pdm.js +1 -1
- package/dist/modules/manager/pep621/processors/pdm.js.map +1 -1
- package/dist/modules/manager/pep621/processors/uv.js +3 -2
- package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
- package/dist/modules/manager/pip-compile/artifacts.js +8 -2
- package/dist/modules/manager/pip-compile/artifacts.js.map +1 -1
- package/dist/modules/manager/pip-compile/common.d.ts +5 -3
- package/dist/modules/manager/pip-compile/common.js +34 -13
- package/dist/modules/manager/pip-compile/common.js.map +1 -1
- package/dist/modules/manager/pip-compile/extract.js.map +1 -1
- package/dist/modules/manager/pip-compile/types.d.ts +1 -0
- package/dist/modules/manager/pip-compile/types.js.map +1 -1
- package/dist/modules/manager/poetry/artifacts.js +2 -2
- package/dist/modules/manager/poetry/artifacts.js.map +1 -1
- package/dist/modules/manager/pre-commit/types.d.ts +2 -2
- package/dist/modules/manager/pre-commit/types.js.map +1 -1
- package/dist/modules/manager/pub/artifacts.js +1 -1
- package/dist/modules/manager/pub/artifacts.js.map +1 -1
- package/dist/modules/manager/swift/extract.js +1 -2
- package/dist/modules/manager/swift/extract.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/terraform-block/required-provider.js +2 -2
- package/dist/modules/manager/terraform/extractors/terraform-block/required-provider.js.map +1 -1
- package/dist/modules/manager/terraform/hcl/types.d.ts +1 -3
- package/dist/modules/manager/terraform/hcl/types.js.map +1 -1
- package/dist/modules/manager/terraform/lockfile/index.js +1 -1
- package/dist/modules/manager/terraform/lockfile/index.js.map +1 -1
- package/dist/modules/manager/terragrunt/artifacts.js +1 -1
- package/dist/modules/manager/terragrunt/artifacts.js.map +1 -1
- package/dist/modules/manager/types.d.ts +1 -0
- package/dist/modules/manager/types.js.map +1 -1
- package/dist/modules/manager/woodpecker/types.d.ts +2 -2
- package/dist/modules/manager/woodpecker/types.js.map +1 -1
- package/dist/modules/platform/azure/azure-helper.js.map +1 -1
- package/dist/modules/platform/azure/index.js +1 -1
- package/dist/modules/platform/azure/index.js.map +1 -1
- package/dist/modules/platform/bitbucket/index.js.map +1 -1
- package/dist/modules/platform/bitbucket/utils.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/index.js +2 -2
- package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
- package/dist/modules/platform/gerrit/scm.js +1 -1
- package/dist/modules/platform/gerrit/scm.js.map +1 -1
- package/dist/modules/platform/gitea/index.js +6 -5
- package/dist/modules/platform/gitea/index.js.map +1 -1
- package/dist/modules/platform/gitea/pr-cache.d.ts +3 -2
- package/dist/modules/platform/gitea/pr-cache.js +21 -12
- package/dist/modules/platform/gitea/pr-cache.js.map +1 -1
- package/dist/modules/platform/github/index.js.map +1 -1
- package/dist/modules/platform/gitlab/index.js +20 -16
- package/dist/modules/platform/gitlab/index.js.map +1 -1
- package/dist/modules/platform/types.d.ts +2 -2
- package/dist/modules/platform/types.js.map +1 -1
- package/dist/modules/versioning/bazel-module/bzlmod-version.d.ts +1 -1
- package/dist/modules/versioning/bazel-module/bzlmod-version.js.map +1 -1
- package/dist/modules/versioning/generic.d.ts +2 -6
- package/dist/modules/versioning/generic.js.map +1 -1
- package/dist/modules/versioning/gradle/compare.d.ts +2 -2
- package/dist/modules/versioning/gradle/compare.js.map +1 -1
- package/dist/modules/versioning/gradle/index.js +1 -1
- package/dist/modules/versioning/gradle/index.js.map +1 -1
- package/dist/modules/versioning/pvp/range.js +2 -2
- package/dist/modules/versioning/pvp/range.js.map +1 -1
- package/dist/modules/versioning/rpm/index.js +5 -5
- package/dist/modules/versioning/rpm/index.js.map +1 -1
- package/dist/modules/versioning/semver-coerced/index.js +4 -4
- package/dist/modules/versioning/semver-coerced/index.js.map +1 -1
- package/dist/modules/versioning/types.d.ts +1 -3
- package/dist/modules/versioning/types.js.map +1 -1
- package/dist/types/git.d.ts +2 -2
- package/dist/types/git.js.map +1 -1
- package/dist/types/platform/github/index.d.ts +4 -4
- package/dist/types/platform/github/index.js.map +1 -1
- package/dist/types/platform/gitlab/index.d.ts +2 -2
- package/dist/types/platform/gitlab/index.js.map +1 -1
- package/dist/util/assign-keys.d.ts +1 -3
- package/dist/util/assign-keys.js.map +1 -1
- package/dist/util/cache/repository/http-cache.js +1 -1
- package/dist/util/cache/repository/http-cache.js.map +1 -1
- package/dist/util/exec/types.d.ts +2 -2
- package/dist/util/exec/types.js.map +1 -1
- package/dist/util/git/auth.js +1 -1
- package/dist/util/git/auth.js.map +1 -1
- package/dist/util/git/index.d.ts +10 -10
- package/dist/util/git/index.js +22 -26
- package/dist/util/git/index.js.map +1 -1
- package/dist/util/http/bitbucket.js.map +1 -1
- package/dist/util/http/cache/abstract-http-cache-provider.js +1 -1
- package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
- package/dist/util/http/index.js.map +1 -1
- package/dist/util/http/types.d.ts +3 -5
- package/dist/util/http/types.js.map +1 -1
- package/dist/util/pretty-time.js.map +1 -1
- package/dist/util/schema-utils.js.map +1 -1
- package/dist/util/stats.js +1 -0
- package/dist/util/stats.js.map +1 -1
- package/dist/workers/repository/dependency-dashboard.js +2 -2
- package/dist/workers/repository/dependency-dashboard.js.map +1 -1
- package/dist/workers/repository/init/config.d.ts +1 -2
- package/dist/workers/repository/init/config.js +0 -13
- package/dist/workers/repository/init/config.js.map +1 -1
- package/dist/workers/repository/init/merge.d.ts +2 -1
- package/dist/workers/repository/init/merge.js +13 -3
- package/dist/workers/repository/init/merge.js.map +1 -1
- package/dist/workers/repository/model/commit-message.js.map +1 -1
- package/dist/workers/repository/process/vulnerabilities.js +3 -1
- package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
- package/dist/workers/repository/process/write.js +1 -1
- package/dist/workers/repository/process/write.js.map +1 -1
- package/dist/workers/repository/reconfigure/validate.js +3 -1
- package/dist/workers/repository/reconfigure/validate.js.map +1 -1
- package/dist/workers/repository/update/branch/schedule.js +1 -1
- package/dist/workers/repository/update/branch/schedule.js.map +1 -1
- package/dist/workers/repository/update/pr/body/updates-table.js.map +1 -1
- package/dist/workers/repository/updates/generate.js +9 -0
- package/dist/workers/repository/updates/generate.js.map +1 -1
- package/package.json +28 -24
- package/renovate-schema.json +1 -1
@@ -16,12 +16,15 @@ exports.RuleToDockerPackageDep = fragments_1.ExtensionTagFragmentSchema.extend({
|
|
16
16
|
tag: fragments_1.StringFragmentSchema.optional(),
|
17
17
|
digest: fragments_1.StringFragmentSchema.optional(),
|
18
18
|
}),
|
19
|
-
}).transform(({ children: { name, image, tag, digest } }) => ({
|
19
|
+
}).transform(({ rawString, children: { name, image, tag, digest }, }) => ({
|
20
20
|
datasource: docker_1.DockerDatasource.id,
|
21
21
|
depType: 'oci_pull',
|
22
22
|
depName: name.value,
|
23
23
|
packageName: image.value,
|
24
24
|
currentValue: tag?.value,
|
25
25
|
currentDigest: digest?.value,
|
26
|
+
// Provide a replace string so the auto replacer can replace both the tag
|
27
|
+
// and digest if applicable.
|
28
|
+
replaceString: rawString,
|
26
29
|
}));
|
27
30
|
//# sourceMappingURL=oci.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"oci.js","sourceRoot":"","sources":["../../../../../lib/modules/manager/bazel-module/parser/oci.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,uDAA8D;AAE9D,2CAA+E;AAElE,QAAA,kBAAkB,GAAG,KAAK,CAAC;AAExC,MAAM,OAAO,GAAG,MAAM,CAAC;AAEV,QAAA,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC;AAE5B,QAAA,sBAAsB,GAAG,sCAA0B,CAAC,MAAM,CAAC;IACtE,SAAS,EAAE,OAAC,CAAC,OAAO,CAAC,0BAAkB,CAAC;IACxC,GAAG,EAAE,OAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,gCAAoB;QAC1B,KAAK,EAAE,gCAAoB;QAC3B,GAAG,EAAE,gCAAoB,CAAC,QAAQ,EAAE;QACpC,MAAM,EAAE,gCAAoB,CAAC,QAAQ,EAAE;KACxC,CAAC;CACH,CAAC,CAAC,SAAS,CACV,CAAC,
|
1
|
+
{"version":3,"file":"oci.js","sourceRoot":"","sources":["../../../../../lib/modules/manager/bazel-module/parser/oci.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,uDAA8D;AAE9D,2CAA+E;AAElE,QAAA,kBAAkB,GAAG,KAAK,CAAC;AAExC,MAAM,OAAO,GAAG,MAAM,CAAC;AAEV,QAAA,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC;AAE5B,QAAA,sBAAsB,GAAG,sCAA0B,CAAC,MAAM,CAAC;IACtE,SAAS,EAAE,OAAC,CAAC,OAAO,CAAC,0BAAkB,CAAC;IACxC,GAAG,EAAE,OAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,gCAAoB;QAC1B,KAAK,EAAE,gCAAoB;QAC3B,GAAG,EAAE,gCAAoB,CAAC,QAAQ,EAAE;QACpC,MAAM,EAAE,gCAAoB,CAAC,QAAQ,EAAE;KACxC,CAAC;CACH,CAAC,CAAC,SAAS,CACV,CAAC,EACC,SAAS,EACT,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GACvC,EAAqB,EAAE,CAAC,CAAC;IACxB,UAAU,EAAE,yBAAgB,CAAC,EAAE;IAC/B,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,IAAI,CAAC,KAAK;IACnB,WAAW,EAAE,KAAK,CAAC,KAAK;IACxB,YAAY,EAAE,GAAG,EAAE,KAAK;IACxB,aAAa,EAAE,MAAM,EAAE,KAAK;IAC5B,yEAAyE;IACzE,4BAA4B;IAC5B,aAAa,EAAE,SAAS;CACzB,CAAC,CACH,CAAC","sourcesContent":["import { z } from 'zod';\nimport { DockerDatasource } from '../../../datasource/docker';\nimport type { PackageDependency } from '../../types';\nimport { ExtensionTagFragmentSchema, StringFragmentSchema } from './fragments';\n\nexport const ociExtensionPrefix = 'oci';\n\nconst pullTag = 'pull';\n\nexport const ociExtensionTags = ['pull'];\n\nexport const RuleToDockerPackageDep = ExtensionTagFragmentSchema.extend({\n extension: z.literal(ociExtensionPrefix),\n tag: z.literal(pullTag),\n children: z.object({\n name: StringFragmentSchema,\n image: StringFragmentSchema,\n tag: StringFragmentSchema.optional(),\n digest: StringFragmentSchema.optional(),\n }),\n}).transform(\n ({\n rawString,\n children: { name, image, tag, digest },\n }): PackageDependency => ({\n datasource: DockerDatasource.id,\n depType: 'oci_pull',\n depName: name.value,\n packageName: image.value,\n currentValue: tag?.value,\n currentDigest: digest?.value,\n // Provide a replace string so the auto replacer can replace both the tag\n // and digest if applicable.\n replaceString: rawString,\n }),\n);\n"]}
|
@@ -14,7 +14,7 @@ const utils_1 = require("../npm/utils");
|
|
14
14
|
async function updateArtifacts(updateArtifact) {
|
15
15
|
const { packageFileName, updatedDeps, newPackageFileContent, config } = updateArtifact;
|
16
16
|
logger_1.logger.debug(`bun.updateArtifacts(${packageFileName})`);
|
17
|
-
const isLockFileMaintenance = config
|
17
|
+
const { isLockFileMaintenance } = config;
|
18
18
|
if (is_1.default.emptyArray(updatedDeps) && !isLockFileMaintenance) {
|
19
19
|
logger_1.logger.debug('No updated bun deps - returning null');
|
20
20
|
return null;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/bun/artifacts.ts"],"names":[],"mappings":";;AAoBA,0CA0FC;;AA9GD,kEAAkC;AAClC,0DAA0B;AAC1B,mDAAsD;AACtD,sEAAoE;AACpE,4CAAyC;AACzC,6CAA0C;AAE1C,yCAI0B;AAC1B,oDAA4D;AAC5D,wCAIsB;AAGf,KAAK,UAAU,eAAe,CACnC,cAA8B;IAE9B,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,EAAE,GACnE,cAAc,CAAC;IACjB,eAAM,CAAC,KAAK,CAAC,uBAAuB,eAAe,GAAG,CAAC,CAAC;IACxD,MAAM,qBAAqB,GAAG,MAAM,CAAC
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/bun/artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport upath from 'upath';\nimport { GlobalConfig } from '../../../config/global';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { exec } from '../../../util/exec';\nimport type { ExecOptions } from '../../../util/exec/types';\nimport {\n deleteLocalFile,\n readLocalFile,\n writeLocalFile,\n} from '../../../util/fs';\nimport { processHostRules } from '../npm/post-update/rules';\nimport {\n getNpmrcContent,\n resetNpmrcContent,\n updateNpmrcContent,\n} from '../npm/utils';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types';\n\nexport async function updateArtifacts(\n updateArtifact: UpdateArtifact,\n): Promise<UpdateArtifactsResult[] | null> {\n const { packageFileName, updatedDeps, newPackageFileContent, config } =\n updateArtifact;\n logger.debug(`bun.updateArtifacts(${packageFileName})`);\n const { isLockFileMaintenance } = config;\n\n if (is.emptyArray(updatedDeps) && !isLockFileMaintenance) {\n logger.debug('No updated bun deps - returning null');\n return null;\n }\n\n // Find the first bun dependency in order to handle mixed manager updates\n const lockFileName = updatedDeps.find((dep) => dep.manager === 'bun')\n ?.lockFiles?.[0];\n\n if (!lockFileName) {\n logger.debug(`No ${lockFileName} found`);\n return null;\n }\n\n const oldLockFileContent = await readLocalFile(lockFileName);\n if (!oldLockFileContent) {\n logger.debug(`No ${lockFileName} found`);\n return null;\n }\n\n const pkgFileDir = upath.dirname(packageFileName);\n const npmrcContent = await getNpmrcContent(pkgFileDir);\n const { additionalNpmrcContent } = processHostRules();\n await updateNpmrcContent(pkgFileDir, npmrcContent, additionalNpmrcContent);\n\n try {\n await writeLocalFile(packageFileName, newPackageFileContent);\n if (isLockFileMaintenance) {\n await deleteLocalFile(lockFileName);\n }\n\n let cmd = 'bun install';\n\n if (!GlobalConfig.get('allowScripts') || config.ignoreScripts) {\n cmd += ' --ignore-scripts';\n }\n\n const execOptions: ExecOptions = {\n userConfiguredEnv: config.env,\n cwdFile: packageFileName,\n docker: {},\n toolConstraints: [\n {\n toolName: 'bun',\n constraint: updateArtifact?.config?.constraints?.bun,\n },\n ],\n };\n\n await exec(cmd, execOptions);\n await resetNpmrcContent(pkgFileDir, npmrcContent);\n\n const newLockFileContent = await readLocalFile(lockFileName);\n if (\n !newLockFileContent ||\n Buffer.compare(oldLockFileContent, newLockFileContent) === 0\n ) {\n return null;\n }\n return [\n {\n file: {\n type: 'addition',\n path: lockFileName,\n contents: newLockFileContent,\n },\n },\n ];\n } catch (err) {\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.warn({ lockfile: lockFileName, err }, `Failed to update lock file`);\n return [\n {\n artifactError: {\n lockFile: lockFileName,\n stderr: err.message,\n },\n },\n ];\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/bundler/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { readLocalFile } from '../../../util/fs';\nimport { newlineRegex, regEx } from '../../../util/regex';\nimport { GitRefsDatasource } from '../../datasource/git-refs';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version';\nimport { RubygemsDatasource } from '../../datasource/rubygems';\nimport type { PackageDependency, PackageFileContent } from '../types';\nimport { delimiters, extractRubyVersion, getLockFilePath } from './common';\nimport { extractLockFileEntries } from './locked-version';\n\nfunction formatContent(input: string): string {\n return input.replace(regEx(/^ {2}/), '') + '\\n'; //remove leading whitespace and add a new line at the end\n}\n\nconst variableMatchRegex = regEx(\n `^(?<key>\\\\w+)\\\\s*=\\\\s*['\"](?<value>[^'\"]+)['\"]`,\n);\nconst gemMatchRegex = regEx(\n `^\\\\s*gem\\\\s+(['\"])(?<depName>[^'\"]+)(['\"])(\\\\s*,\\\\s*(?<currentValue>(['\"])[^'\"]+['\"](\\\\s*,\\\\s*['\"][^'\"]+['\"])?))?`,\n);\nconst sourceMatchRegex = regEx(\n `source:\\\\s*((?:['\"](?<registryUrl>[^'\"]+)['\"])|(?<sourceName>\\\\w+))?`,\n);\nconst gitRefsMatchRegex = regEx(\n `((git:\\\\s*['\"](?<gitUrl>[^'\"]+)['\"])|(\\\\s*,\\\\s*github:\\\\s*['\"](?<repoName>[^'\"]+)['\"]))(\\\\s*,\\\\s*branch:\\\\s*['\"](?<branchName>[^'\"]+)['\"])?(\\\\s*,\\\\s*ref:\\\\s*['\"](?<refName>[^'\"]+)['\"])?(\\\\s*,\\\\s*tag:\\\\s*['\"](?<tagName>[^'\"]+)['\"])?`,\n);\nconst pathMatchRegex = regEx(`path:\\\\s*['\"](?<path>[^'\"]+)['\"]`);\n\nexport async function extractPackageFile(\n content: string,\n packageFile?: string,\n): Promise<PackageFileContent | null> {\n let lineNumber: number;\n async function processGroupBlock(\n line: string,\n repositoryUrl?: string,\n trimGroupLine: boolean = false,\n ): Promise<void> {\n const groupMatch = regEx(/^group\\s+(.*?)\\s+do/).exec(line);\n if (groupMatch) {\n const depTypes = groupMatch[1]\n .split(',')\n .map((group) => group.trim())\n .map((group) => group.replace(regEx(/^:/), ''));\n\n const groupLineNumber = lineNumber;\n let groupContent = '';\n let groupLine = '';\n\n while (\n lineNumber < lines.length &&\n (trimGroupLine ? groupLine.trim() !== 'end' : groupLine !== 'end')\n ) {\n lineNumber += 1;\n groupLine = lines[lineNumber];\n\n // istanbul ignore if\n if (!is.string(groupLine)) {\n logger.debug(\n { content, packageFile, type: 'groupLine' },\n 'Bundler parsing error',\n );\n groupLine = 'end';\n }\n if (trimGroupLine ? groupLine.trim() !== 'end' : groupLine !== 'end') {\n groupContent += formatContent(groupLine);\n }\n }\n\n const groupRes = await extractPackageFile(groupContent);\n if (groupRes) {\n res.deps = res.deps.concat(\n groupRes.deps.map((dep) => {\n const depObject = {\n ...dep,\n depTypes,\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + groupLineNumber + 1,\n },\n };\n if (repositoryUrl) {\n depObject.registryUrls = [repositoryUrl];\n }\n return depObject;\n }),\n );\n }\n }\n }\n const res: PackageFileContent = {\n registryUrls: [],\n deps: [],\n };\n\n const variables: Record<string, string> = {};\n\n const lines = content.split(newlineRegex);\n for (lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {\n const line = lines[lineNumber];\n let sourceMatch: RegExpMatchArray | null = null;\n for (const delimiter of delimiters) {\n sourceMatch =\n sourceMatch ??\n regEx(\n `^source ((${delimiter}(?<registryUrl>[^${delimiter}]+)${delimiter})|(?<sourceName>\\\\w+))\\\\s*$`,\n ).exec(line);\n }\n if (sourceMatch) {\n if (sourceMatch.groups?.registryUrl) {\n res.registryUrls?.push(sourceMatch.groups.registryUrl);\n }\n if (sourceMatch.groups?.sourceName) {\n const registryUrl = variables[sourceMatch.groups.sourceName];\n if (registryUrl) {\n res.registryUrls?.push(registryUrl);\n }\n }\n }\n\n const rubyMatch = extractRubyVersion(line);\n if (rubyMatch) {\n res.deps.push({\n depName: 'ruby',\n currentValue: rubyMatch,\n datasource: RubyVersionDatasource.id,\n registryUrls: null,\n });\n }\n\n const variableMatch = variableMatchRegex.exec(line);\n if (variableMatch) {\n if (variableMatch.groups?.key) {\n variables[variableMatch.groups?.key] = variableMatch.groups?.value;\n }\n }\n\n const gemMatch = gemMatchRegex.exec(line)?.groups;\n\n if (gemMatch) {\n const dep: PackageDependency = {\n depName: gemMatch.depName,\n managerData: { lineNumber },\n datasource: RubygemsDatasource.id,\n };\n\n if (gemMatch.currentValue) {\n const currentValue = gemMatch.currentValue;\n dep.currentValue = currentValue;\n }\n\n const pathMatch = pathMatchRegex.exec(line)?.groups;\n if (pathMatch) {\n dep.skipReason = 'internal-package';\n }\n\n const sourceMatch = sourceMatchRegex.exec(line)?.groups;\n if (sourceMatch) {\n if (sourceMatch.registryUrl) {\n dep.registryUrls = [sourceMatch.registryUrl];\n } else if (sourceMatch.sourceName) {\n dep.registryUrls = [variables[sourceMatch.sourceName]];\n }\n }\n\n const gitRefsMatch = gitRefsMatchRegex.exec(line)?.groups;\n if (gitRefsMatch) {\n if (gitRefsMatch.gitUrl) {\n const gitUrl = gitRefsMatch.gitUrl;\n dep.packageName = gitUrl;\n\n if (gitUrl.startsWith('https://')) {\n dep.sourceUrl = gitUrl.replace(/\\.git$/, '');\n }\n } else if (gitRefsMatch.repoName) {\n dep.packageName = `https://github.com/${gitRefsMatch.repoName}`;\n dep.sourceUrl = dep.packageName;\n }\n if (gitRefsMatch.refName) {\n dep.currentDigest = gitRefsMatch.refName;\n } else if (gitRefsMatch.branchName) {\n dep.currentValue = gitRefsMatch.branchName;\n } else if (gitRefsMatch.tagName) {\n dep.currentValue = gitRefsMatch.tagName;\n }\n dep.datasource = GitRefsDatasource.id;\n }\n res.deps.push(dep);\n }\n\n await processGroupBlock(line);\n\n for (const delimiter of delimiters) {\n const sourceBlockMatch = regEx(\n `^source\\\\s+((${delimiter}(?<registryUrl>[^${delimiter}]+)${delimiter})|(?<sourceName>\\\\w+))\\\\s+do`,\n ).exec(line);\n if (sourceBlockMatch) {\n let repositoryUrl = '';\n if (sourceBlockMatch.groups?.registryUrl) {\n repositoryUrl = sourceBlockMatch.groups.registryUrl;\n }\n if (sourceBlockMatch.groups?.sourceName) {\n if (variables[sourceBlockMatch.groups.sourceName]) {\n repositoryUrl = variables[sourceBlockMatch.groups.sourceName];\n }\n }\n const sourceLineNumber = lineNumber;\n let sourceContent = '';\n let sourceLine = '';\n\n while (lineNumber < lines.length && sourceLine.trim() !== 'end') {\n lineNumber += 1;\n sourceLine = lines[lineNumber];\n // istanbul ignore if\n if (!is.string(sourceLine)) {\n logger.debug(\n { content, packageFile, type: 'sourceLine' },\n 'Bundler parsing error',\n );\n sourceLine = 'end';\n }\n\n await processGroupBlock(sourceLine.trim(), repositoryUrl, true);\n\n if (sourceLine.trim() !== 'end') {\n sourceContent += formatContent(sourceLine);\n }\n }\n\n const sourceRes = await extractPackageFile(sourceContent);\n\n if (sourceRes) {\n res.deps = res.deps.concat(\n sourceRes.deps.map((dep) => ({\n ...dep,\n registryUrls: [repositoryUrl],\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + sourceLineNumber + 1,\n },\n })),\n );\n }\n }\n }\n const platformsMatch = regEx(/^platforms\\s+(.*?)\\s+do/).test(line);\n if (platformsMatch) {\n const platformsLineNumber = lineNumber;\n let platformsContent = '';\n let platformsLine = '';\n while (lineNumber < lines.length && platformsLine !== 'end') {\n lineNumber += 1;\n platformsLine = lines[lineNumber];\n // istanbul ignore if\n if (!is.string(platformsLine)) {\n logger.debug(\n { content, packageFile, type: 'platformsLine' },\n 'Bundler parsing error',\n );\n platformsLine = 'end';\n }\n if (platformsLine !== 'end') {\n platformsContent += formatContent(platformsLine);\n }\n }\n const platformsRes = await extractPackageFile(platformsContent);\n if (platformsRes) {\n res.deps = res.deps.concat(\n platformsRes.deps.map((dep) => ({\n ...dep,\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + platformsLineNumber + 1,\n },\n })),\n );\n }\n }\n const ifMatch = regEx(/^if\\s+(.*?)/).test(line);\n if (ifMatch) {\n const ifLineNumber = lineNumber;\n let ifContent = '';\n let ifLine = '';\n while (lineNumber < lines.length && ifLine !== 'end') {\n lineNumber += 1;\n ifLine = lines[lineNumber];\n // istanbul ignore if\n if (!is.string(ifLine)) {\n logger.debug(\n { content, packageFile, type: 'ifLine' },\n 'Bundler parsing error',\n );\n ifLine = 'end';\n }\n if (ifLine !== 'end') {\n ifContent += formatContent(ifLine);\n }\n }\n const ifRes = await extractPackageFile(ifContent);\n if (ifRes) {\n res.deps = res.deps.concat(\n ifRes.deps.map((dep) => ({\n ...dep,\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + ifLineNumber + 1,\n },\n })),\n );\n }\n }\n }\n if (!res.deps.length && !res.registryUrls?.length) {\n return null;\n }\n\n if (packageFile) {\n const gemfileLockPath = await getLockFilePath(packageFile);\n const lockContent = await readLocalFile(gemfileLockPath, 'utf8');\n if (lockContent) {\n logger.debug(\n `Found lock file ${gemfileLockPath} for packageFile: ${packageFile}`,\n );\n res.lockFiles = [gemfileLockPath];\n const lockedEntries = extractLockFileEntries(lockContent);\n for (const dep of res.deps) {\n // TODO: types (#22198)\n const lockedDepValue = lockedEntries.get(`${dep.depName!}`);\n if (lockedDepValue) {\n dep.lockedVersion = lockedDepValue;\n }\n }\n }\n }\n return res;\n}\n"]}
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/bundler/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { readLocalFile } from '../../../util/fs';\nimport { newlineRegex, regEx } from '../../../util/regex';\nimport { GitRefsDatasource } from '../../datasource/git-refs';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version';\nimport { RubygemsDatasource } from '../../datasource/rubygems';\nimport type { PackageDependency, PackageFileContent } from '../types';\nimport { delimiters, extractRubyVersion, getLockFilePath } from './common';\nimport { extractLockFileEntries } from './locked-version';\n\nfunction formatContent(input: string): string {\n return input.replace(regEx(/^ {2}/), '') + '\\n'; //remove leading whitespace and add a new line at the end\n}\n\nconst variableMatchRegex = regEx(\n `^(?<key>\\\\w+)\\\\s*=\\\\s*['\"](?<value>[^'\"]+)['\"]`,\n);\nconst gemMatchRegex = regEx(\n `^\\\\s*gem\\\\s+(['\"])(?<depName>[^'\"]+)(['\"])(\\\\s*,\\\\s*(?<currentValue>(['\"])[^'\"]+['\"](\\\\s*,\\\\s*['\"][^'\"]+['\"])?))?`,\n);\nconst sourceMatchRegex = regEx(\n `source:\\\\s*((?:['\"](?<registryUrl>[^'\"]+)['\"])|(?<sourceName>\\\\w+))?`,\n);\nconst gitRefsMatchRegex = regEx(\n `((git:\\\\s*['\"](?<gitUrl>[^'\"]+)['\"])|(\\\\s*,\\\\s*github:\\\\s*['\"](?<repoName>[^'\"]+)['\"]))(\\\\s*,\\\\s*branch:\\\\s*['\"](?<branchName>[^'\"]+)['\"])?(\\\\s*,\\\\s*ref:\\\\s*['\"](?<refName>[^'\"]+)['\"])?(\\\\s*,\\\\s*tag:\\\\s*['\"](?<tagName>[^'\"]+)['\"])?`,\n);\nconst pathMatchRegex = regEx(`path:\\\\s*['\"](?<path>[^'\"]+)['\"]`);\n\nexport async function extractPackageFile(\n content: string,\n packageFile?: string,\n): Promise<PackageFileContent | null> {\n let lineNumber: number;\n async function processGroupBlock(\n line: string,\n repositoryUrl?: string,\n trimGroupLine = false,\n ): Promise<void> {\n const groupMatch = regEx(/^group\\s+(.*?)\\s+do/).exec(line);\n if (groupMatch) {\n const depTypes = groupMatch[1]\n .split(',')\n .map((group) => group.trim())\n .map((group) => group.replace(regEx(/^:/), ''));\n\n const groupLineNumber = lineNumber;\n let groupContent = '';\n let groupLine = '';\n\n while (\n lineNumber < lines.length &&\n (trimGroupLine ? groupLine.trim() !== 'end' : groupLine !== 'end')\n ) {\n lineNumber += 1;\n groupLine = lines[lineNumber];\n\n // istanbul ignore if\n if (!is.string(groupLine)) {\n logger.debug(\n { content, packageFile, type: 'groupLine' },\n 'Bundler parsing error',\n );\n groupLine = 'end';\n }\n if (trimGroupLine ? groupLine.trim() !== 'end' : groupLine !== 'end') {\n groupContent += formatContent(groupLine);\n }\n }\n\n const groupRes = await extractPackageFile(groupContent);\n if (groupRes) {\n res.deps = res.deps.concat(\n groupRes.deps.map((dep) => {\n const depObject = {\n ...dep,\n depTypes,\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + groupLineNumber + 1,\n },\n };\n if (repositoryUrl) {\n depObject.registryUrls = [repositoryUrl];\n }\n return depObject;\n }),\n );\n }\n }\n }\n const res: PackageFileContent = {\n registryUrls: [],\n deps: [],\n };\n\n const variables: Record<string, string> = {};\n\n const lines = content.split(newlineRegex);\n for (lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {\n const line = lines[lineNumber];\n let sourceMatch: RegExpMatchArray | null = null;\n for (const delimiter of delimiters) {\n sourceMatch =\n sourceMatch ??\n regEx(\n `^source ((${delimiter}(?<registryUrl>[^${delimiter}]+)${delimiter})|(?<sourceName>\\\\w+))\\\\s*$`,\n ).exec(line);\n }\n if (sourceMatch) {\n if (sourceMatch.groups?.registryUrl) {\n res.registryUrls?.push(sourceMatch.groups.registryUrl);\n }\n if (sourceMatch.groups?.sourceName) {\n const registryUrl = variables[sourceMatch.groups.sourceName];\n if (registryUrl) {\n res.registryUrls?.push(registryUrl);\n }\n }\n }\n\n const rubyMatch = extractRubyVersion(line);\n if (rubyMatch) {\n res.deps.push({\n depName: 'ruby',\n currentValue: rubyMatch,\n datasource: RubyVersionDatasource.id,\n registryUrls: null,\n });\n }\n\n const variableMatch = variableMatchRegex.exec(line);\n if (variableMatch) {\n if (variableMatch.groups?.key) {\n variables[variableMatch.groups?.key] = variableMatch.groups?.value;\n }\n }\n\n const gemMatch = gemMatchRegex.exec(line)?.groups;\n\n if (gemMatch) {\n const dep: PackageDependency = {\n depName: gemMatch.depName,\n managerData: { lineNumber },\n datasource: RubygemsDatasource.id,\n };\n\n if (gemMatch.currentValue) {\n const currentValue = gemMatch.currentValue;\n dep.currentValue = currentValue;\n }\n\n const pathMatch = pathMatchRegex.exec(line)?.groups;\n if (pathMatch) {\n dep.skipReason = 'internal-package';\n }\n\n const sourceMatch = sourceMatchRegex.exec(line)?.groups;\n if (sourceMatch) {\n if (sourceMatch.registryUrl) {\n dep.registryUrls = [sourceMatch.registryUrl];\n } else if (sourceMatch.sourceName) {\n dep.registryUrls = [variables[sourceMatch.sourceName]];\n }\n }\n\n const gitRefsMatch = gitRefsMatchRegex.exec(line)?.groups;\n if (gitRefsMatch) {\n if (gitRefsMatch.gitUrl) {\n const gitUrl = gitRefsMatch.gitUrl;\n dep.packageName = gitUrl;\n\n if (gitUrl.startsWith('https://')) {\n dep.sourceUrl = gitUrl.replace(/\\.git$/, '');\n }\n } else if (gitRefsMatch.repoName) {\n dep.packageName = `https://github.com/${gitRefsMatch.repoName}`;\n dep.sourceUrl = dep.packageName;\n }\n if (gitRefsMatch.refName) {\n dep.currentDigest = gitRefsMatch.refName;\n } else if (gitRefsMatch.branchName) {\n dep.currentValue = gitRefsMatch.branchName;\n } else if (gitRefsMatch.tagName) {\n dep.currentValue = gitRefsMatch.tagName;\n }\n dep.datasource = GitRefsDatasource.id;\n }\n res.deps.push(dep);\n }\n\n await processGroupBlock(line);\n\n for (const delimiter of delimiters) {\n const sourceBlockMatch = regEx(\n `^source\\\\s+((${delimiter}(?<registryUrl>[^${delimiter}]+)${delimiter})|(?<sourceName>\\\\w+))\\\\s+do`,\n ).exec(line);\n if (sourceBlockMatch) {\n let repositoryUrl = '';\n if (sourceBlockMatch.groups?.registryUrl) {\n repositoryUrl = sourceBlockMatch.groups.registryUrl;\n }\n if (sourceBlockMatch.groups?.sourceName) {\n if (variables[sourceBlockMatch.groups.sourceName]) {\n repositoryUrl = variables[sourceBlockMatch.groups.sourceName];\n }\n }\n const sourceLineNumber = lineNumber;\n let sourceContent = '';\n let sourceLine = '';\n\n while (lineNumber < lines.length && sourceLine.trim() !== 'end') {\n lineNumber += 1;\n sourceLine = lines[lineNumber];\n // istanbul ignore if\n if (!is.string(sourceLine)) {\n logger.debug(\n { content, packageFile, type: 'sourceLine' },\n 'Bundler parsing error',\n );\n sourceLine = 'end';\n }\n\n await processGroupBlock(sourceLine.trim(), repositoryUrl, true);\n\n if (sourceLine.trim() !== 'end') {\n sourceContent += formatContent(sourceLine);\n }\n }\n\n const sourceRes = await extractPackageFile(sourceContent);\n\n if (sourceRes) {\n res.deps = res.deps.concat(\n sourceRes.deps.map((dep) => ({\n ...dep,\n registryUrls: [repositoryUrl],\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + sourceLineNumber + 1,\n },\n })),\n );\n }\n }\n }\n const platformsMatch = regEx(/^platforms\\s+(.*?)\\s+do/).test(line);\n if (platformsMatch) {\n const platformsLineNumber = lineNumber;\n let platformsContent = '';\n let platformsLine = '';\n while (lineNumber < lines.length && platformsLine !== 'end') {\n lineNumber += 1;\n platformsLine = lines[lineNumber];\n // istanbul ignore if\n if (!is.string(platformsLine)) {\n logger.debug(\n { content, packageFile, type: 'platformsLine' },\n 'Bundler parsing error',\n );\n platformsLine = 'end';\n }\n if (platformsLine !== 'end') {\n platformsContent += formatContent(platformsLine);\n }\n }\n const platformsRes = await extractPackageFile(platformsContent);\n if (platformsRes) {\n res.deps = res.deps.concat(\n platformsRes.deps.map((dep) => ({\n ...dep,\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + platformsLineNumber + 1,\n },\n })),\n );\n }\n }\n const ifMatch = regEx(/^if\\s+(.*?)/).test(line);\n if (ifMatch) {\n const ifLineNumber = lineNumber;\n let ifContent = '';\n let ifLine = '';\n while (lineNumber < lines.length && ifLine !== 'end') {\n lineNumber += 1;\n ifLine = lines[lineNumber];\n // istanbul ignore if\n if (!is.string(ifLine)) {\n logger.debug(\n { content, packageFile, type: 'ifLine' },\n 'Bundler parsing error',\n );\n ifLine = 'end';\n }\n if (ifLine !== 'end') {\n ifContent += formatContent(ifLine);\n }\n }\n const ifRes = await extractPackageFile(ifContent);\n if (ifRes) {\n res.deps = res.deps.concat(\n ifRes.deps.map((dep) => ({\n ...dep,\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + ifLineNumber + 1,\n },\n })),\n );\n }\n }\n }\n if (!res.deps.length && !res.registryUrls?.length) {\n return null;\n }\n\n if (packageFile) {\n const gemfileLockPath = await getLockFilePath(packageFile);\n const lockContent = await readLocalFile(gemfileLockPath, 'utf8');\n if (lockContent) {\n logger.debug(\n `Found lock file ${gemfileLockPath} for packageFile: ${packageFile}`,\n );\n res.lockFiles = [gemfileLockPath];\n const lockedEntries = extractLockFileEntries(lockContent);\n for (const dep of res.deps) {\n // TODO: types (#22198)\n const lockedDepValue = lockedEntries.get(`${dep.depName!}`);\n if (lockedDepValue) {\n dep.lockedVersion = lockedDepValue;\n }\n }\n }\n }\n return res;\n}\n"]}
|
@@ -63,7 +63,7 @@ async function updateArtifactsImpl({ packageFileName, updatedDeps, newPackageFil
|
|
63
63
|
logger_1.logger.debug('No Cargo.lock found');
|
64
64
|
return null;
|
65
65
|
}
|
66
|
-
const isLockFileMaintenance = config
|
66
|
+
const { isLockFileMaintenance } = config;
|
67
67
|
if (!isLockFileMaintenance && !updatedDeps?.length) {
|
68
68
|
logger_1.logger.debug('No more dependencies to update');
|
69
69
|
return [
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/cargo/artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import { quote } from 'shlex';\nimport type { UserEnv } from '../../../config/types';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { coerceArray } from '../../../util/array';\nimport { exec } from '../../../util/exec';\nimport type { ExecOptions } from '../../../util/exec/types';\nimport {\n findLocalSiblingOrParent,\n readLocalFile,\n writeLocalFile,\n} from '../../../util/fs';\nimport { getGitEnvironmentVariables } from '../../../util/git/auth';\nimport { regEx } from '../../../util/regex';\nimport type { UpdateArtifact, UpdateArtifactsResult, Upgrade } from '../types';\nimport { extractLockFileContentVersions } from './locked-version';\n\nasync function cargoUpdate(\n manifestPath: string,\n isLockFileMaintenance: boolean,\n userConfiguredEnv: UserEnv,\n constraint: string | undefined,\n): Promise<void> {\n let cmd = `cargo update --config net.git-fetch-with-cli=true --manifest-path ${quote(\n manifestPath,\n )}`;\n // If we're updating a specific crate, `cargo-update` requires `--workspace`\n // for more information, see: https://github.com/renovatebot/renovate/issues/12332\n if (!isLockFileMaintenance) {\n cmd += ` --workspace`;\n }\n\n const execOptions: ExecOptions = {\n userConfiguredEnv,\n extraEnv: { ...getGitEnvironmentVariables(['cargo']) },\n docker: {},\n toolConstraints: [{ toolName: 'rust', constraint }],\n };\n await exec(cmd, execOptions);\n}\n\nasync function cargoUpdatePrecise(\n manifestPath: string,\n updatedDeps: Upgrade[],\n userConfiguredEnv: UserEnv,\n constraint: string | undefined,\n): Promise<void> {\n // First update all dependencies that have been bumped in `Cargo.toml`.\n const cmds = [\n 'cargo update --config net.git-fetch-with-cli=true' +\n ` --manifest-path ${quote(manifestPath)} --workspace`,\n ];\n\n // Update individual dependencies to their `newVersion`. Necessary when\n // using the `update-lockfile` rangeStrategy which doesn't touch Cargo.toml.\n for (const dep of updatedDeps) {\n cmds.push(\n `cargo update --config net.git-fetch-with-cli=true` +\n ` --manifest-path ${quote(manifestPath)}` +\n ` --package ${quote(`${dep.packageName}@${dep.lockedVersion}`)}` +\n ` --precise ${quote(dep.newVersion!)}`,\n );\n }\n\n const execOptions: ExecOptions = {\n userConfiguredEnv,\n extraEnv: { ...getGitEnvironmentVariables(['cargo']) },\n docker: {},\n toolConstraints: [{ toolName: 'rust', constraint }],\n };\n\n await exec(cmds, execOptions);\n}\n\nexport async function updateArtifacts(\n updateArtifact: UpdateArtifact,\n): Promise<UpdateArtifactsResult[] | null> {\n return await updateArtifactsImpl(updateArtifact);\n}\n\nasync function updateArtifactsImpl(\n {\n packageFileName,\n updatedDeps,\n newPackageFileContent,\n config,\n }: UpdateArtifact,\n recursionLimit = 10,\n): Promise<UpdateArtifactsResult[] | null> {\n logger.debug(`cargo.updateArtifacts(${packageFileName})`);\n\n // For standalone package crates, the `Cargo.lock` will be in the same\n // directory as `Cargo.toml` (ie. a sibling). For cargo workspaces, it\n // will be further up.\n const lockFileName = await findLocalSiblingOrParent(\n packageFileName,\n 'Cargo.lock',\n );\n const existingLockFileContent = lockFileName\n ? await readLocalFile(lockFileName)\n : null;\n if (!existingLockFileContent || !lockFileName) {\n logger.debug('No Cargo.lock found');\n return null;\n }\n\n const isLockFileMaintenance = config.updateType === 'lockFileMaintenance';\n if (!isLockFileMaintenance && !updatedDeps?.length) {\n logger.debug('No more dependencies to update');\n return [\n {\n file: {\n type: 'addition',\n path: lockFileName,\n contents: existingLockFileContent,\n },\n },\n ];\n }\n\n try {\n await writeLocalFile(packageFileName, newPackageFileContent);\n logger.debug('Updating ' + lockFileName);\n\n if (isLockFileMaintenance) {\n await cargoUpdate(\n packageFileName,\n true,\n config.env ?? {},\n config.constraints?.rust,\n );\n } else {\n const missingDep = updatedDeps.find((dep) => !dep.lockedVersion);\n if (missingDep) {\n // If there is a dependency without a locked version then log a warning\n // and perform a regular workspace lockfile update.\n logger.warn(\n { dependency: missingDep.depName },\n 'Missing locked version for dependency',\n );\n await cargoUpdate(\n packageFileName,\n false,\n config.env ?? {},\n config.constraints?.rust,\n );\n } else {\n // If all dependencies have locked versions then update them precisely.\n await cargoUpdatePrecise(\n packageFileName,\n updatedDeps,\n config.env ?? {},\n config.constraints?.rust,\n );\n }\n }\n\n logger.debug('Returning updated Cargo.lock');\n const newCargoLockContent = await readLocalFile(lockFileName);\n if (existingLockFileContent === newCargoLockContent) {\n logger.debug('Cargo.lock is unchanged');\n return null;\n }\n return [\n {\n file: {\n type: 'addition',\n path: lockFileName,\n contents: newCargoLockContent,\n },\n },\n ];\n } catch (err) {\n // istanbul ignore if\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n\n // Sometimes `cargo update` will fail when a preceding dependency update\n // causes another dependency to update. In this case we can no longer\n // reference the dependency by its old version, so we filter it out\n // and retry recursively.\n const newCargoLockContent = await readLocalFile(lockFileName, 'utf8');\n if (\n recursionLimit > 0 &&\n newCargoLockContent &&\n regEx(/error: package ID specification/).test(err.stderr)\n ) {\n const versions = extractLockFileContentVersions(newCargoLockContent);\n const newUpdatedDeps = updatedDeps.filter(\n (dep) =>\n !coerceArray(versions?.get(dep.packageName!)).includes(\n dep.newVersion!,\n ),\n );\n\n if (newUpdatedDeps.length < updatedDeps.length) {\n logger.debug(\n 'Dependency already up to date - reattempting recursively',\n );\n return updateArtifactsImpl(\n {\n packageFileName,\n updatedDeps: newUpdatedDeps,\n newPackageFileContent,\n config,\n },\n recursionLimit - 1,\n );\n }\n }\n\n logger.debug({ err }, 'Failed to update Cargo lock file');\n\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/cargo/artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import { quote } from 'shlex';\nimport type { UserEnv } from '../../../config/types';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { coerceArray } from '../../../util/array';\nimport { exec } from '../../../util/exec';\nimport type { ExecOptions } from '../../../util/exec/types';\nimport {\n findLocalSiblingOrParent,\n readLocalFile,\n writeLocalFile,\n} from '../../../util/fs';\nimport { getGitEnvironmentVariables } from '../../../util/git/auth';\nimport { regEx } from '../../../util/regex';\nimport type { UpdateArtifact, UpdateArtifactsResult, Upgrade } from '../types';\nimport { extractLockFileContentVersions } from './locked-version';\n\nasync function cargoUpdate(\n manifestPath: string,\n isLockFileMaintenance: boolean,\n userConfiguredEnv: UserEnv,\n constraint: string | undefined,\n): Promise<void> {\n let cmd = `cargo update --config net.git-fetch-with-cli=true --manifest-path ${quote(\n manifestPath,\n )}`;\n // If we're updating a specific crate, `cargo-update` requires `--workspace`\n // for more information, see: https://github.com/renovatebot/renovate/issues/12332\n if (!isLockFileMaintenance) {\n cmd += ` --workspace`;\n }\n\n const execOptions: ExecOptions = {\n userConfiguredEnv,\n extraEnv: { ...getGitEnvironmentVariables(['cargo']) },\n docker: {},\n toolConstraints: [{ toolName: 'rust', constraint }],\n };\n await exec(cmd, execOptions);\n}\n\nasync function cargoUpdatePrecise(\n manifestPath: string,\n updatedDeps: Upgrade[],\n userConfiguredEnv: UserEnv,\n constraint: string | undefined,\n): Promise<void> {\n // First update all dependencies that have been bumped in `Cargo.toml`.\n const cmds = [\n 'cargo update --config net.git-fetch-with-cli=true' +\n ` --manifest-path ${quote(manifestPath)} --workspace`,\n ];\n\n // Update individual dependencies to their `newVersion`. Necessary when\n // using the `update-lockfile` rangeStrategy which doesn't touch Cargo.toml.\n for (const dep of updatedDeps) {\n cmds.push(\n `cargo update --config net.git-fetch-with-cli=true` +\n ` --manifest-path ${quote(manifestPath)}` +\n ` --package ${quote(`${dep.packageName}@${dep.lockedVersion}`)}` +\n ` --precise ${quote(dep.newVersion!)}`,\n );\n }\n\n const execOptions: ExecOptions = {\n userConfiguredEnv,\n extraEnv: { ...getGitEnvironmentVariables(['cargo']) },\n docker: {},\n toolConstraints: [{ toolName: 'rust', constraint }],\n };\n\n await exec(cmds, execOptions);\n}\n\nexport async function updateArtifacts(\n updateArtifact: UpdateArtifact,\n): Promise<UpdateArtifactsResult[] | null> {\n return await updateArtifactsImpl(updateArtifact);\n}\n\nasync function updateArtifactsImpl(\n {\n packageFileName,\n updatedDeps,\n newPackageFileContent,\n config,\n }: UpdateArtifact,\n recursionLimit = 10,\n): Promise<UpdateArtifactsResult[] | null> {\n logger.debug(`cargo.updateArtifacts(${packageFileName})`);\n\n // For standalone package crates, the `Cargo.lock` will be in the same\n // directory as `Cargo.toml` (ie. a sibling). For cargo workspaces, it\n // will be further up.\n const lockFileName = await findLocalSiblingOrParent(\n packageFileName,\n 'Cargo.lock',\n );\n const existingLockFileContent = lockFileName\n ? await readLocalFile(lockFileName)\n : null;\n if (!existingLockFileContent || !lockFileName) {\n logger.debug('No Cargo.lock found');\n return null;\n }\n\n const { isLockFileMaintenance } = config;\n if (!isLockFileMaintenance && !updatedDeps?.length) {\n logger.debug('No more dependencies to update');\n return [\n {\n file: {\n type: 'addition',\n path: lockFileName,\n contents: existingLockFileContent,\n },\n },\n ];\n }\n\n try {\n await writeLocalFile(packageFileName, newPackageFileContent);\n logger.debug('Updating ' + lockFileName);\n\n if (isLockFileMaintenance) {\n await cargoUpdate(\n packageFileName,\n true,\n config.env ?? {},\n config.constraints?.rust,\n );\n } else {\n const missingDep = updatedDeps.find((dep) => !dep.lockedVersion);\n if (missingDep) {\n // If there is a dependency without a locked version then log a warning\n // and perform a regular workspace lockfile update.\n logger.warn(\n { dependency: missingDep.depName },\n 'Missing locked version for dependency',\n );\n await cargoUpdate(\n packageFileName,\n false,\n config.env ?? {},\n config.constraints?.rust,\n );\n } else {\n // If all dependencies have locked versions then update them precisely.\n await cargoUpdatePrecise(\n packageFileName,\n updatedDeps,\n config.env ?? {},\n config.constraints?.rust,\n );\n }\n }\n\n logger.debug('Returning updated Cargo.lock');\n const newCargoLockContent = await readLocalFile(lockFileName);\n if (existingLockFileContent === newCargoLockContent) {\n logger.debug('Cargo.lock is unchanged');\n return null;\n }\n return [\n {\n file: {\n type: 'addition',\n path: lockFileName,\n contents: newCargoLockContent,\n },\n },\n ];\n } catch (err) {\n // istanbul ignore if\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n\n // Sometimes `cargo update` will fail when a preceding dependency update\n // causes another dependency to update. In this case we can no longer\n // reference the dependency by its old version, so we filter it out\n // and retry recursively.\n const newCargoLockContent = await readLocalFile(lockFileName, 'utf8');\n if (\n recursionLimit > 0 &&\n newCargoLockContent &&\n regEx(/error: package ID specification/).test(err.stderr)\n ) {\n const versions = extractLockFileContentVersions(newCargoLockContent);\n const newUpdatedDeps = updatedDeps.filter(\n (dep) =>\n !coerceArray(versions?.get(dep.packageName!)).includes(\n dep.newVersion!,\n ),\n );\n\n if (newUpdatedDeps.length < updatedDeps.length) {\n logger.debug(\n 'Dependency already up to date - reattempting recursively',\n );\n return updateArtifactsImpl(\n {\n packageFileName,\n updatedDeps: newUpdatedDeps,\n newPackageFileContent,\n config,\n },\n recursionLimit - 1,\n );\n }\n }\n\n logger.debug({ err }, 'Failed to update Cargo lock file');\n\n return [\n {\n artifactError: {\n lockFile: lockFileName,\n stderr: err.message,\n },\n },\n ];\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/cargo/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { coerceArray } from '../../../util/array';\nimport { findLocalSiblingOrParent, readLocalFile } from '../../../util/fs';\nimport { api as versioning } from '../../versioning/cargo';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types';\nimport { extractLockFileVersions } from './locked-version';\nimport {\n type CargoConfig,\n CargoConfigSchema,\n CargoManifestSchema,\n} from './schema';\nimport type {\n CargoManagerData,\n CargoRegistries,\n CargoRegistryUrl,\n} from './types';\nimport { DEFAULT_REGISTRY_URL } from './utils';\n\nconst DEFAULT_REGISTRY_ID = 'crates-io';\n\nfunction getCargoIndexEnv(registryName: string): string | null {\n const registry = registryName.toUpperCase().replaceAll('-', '_');\n return process.env[`CARGO_REGISTRIES_${registry}_INDEX`] ?? null;\n}\n\nfunction extractFromSection(\n dependencies: PackageDependency<CargoManagerData>[] | undefined,\n cargoRegistries: CargoRegistries,\n target?: string,\n): PackageDependency[] {\n if (!dependencies) {\n return [];\n }\n\n const deps: PackageDependency<CargoManagerData>[] = [];\n\n for (const dep of Object.values(dependencies)) {\n let registryUrls: string[] | undefined;\n\n if (dep.managerData?.registryName) {\n const registryUrl =\n getCargoIndexEnv(dep.managerData.registryName) ??\n cargoRegistries[dep.managerData?.registryName];\n if (registryUrl) {\n if (registryUrl !== DEFAULT_REGISTRY_URL) {\n registryUrls = [registryUrl];\n }\n } else {\n dep.skipReason = 'unknown-registry';\n }\n }\n\n if (registryUrls) {\n dep.registryUrls = registryUrls;\n } else {\n // if we don't have an explicit registry URL check if the default registry has a non-standard url\n if (cargoRegistries[DEFAULT_REGISTRY_ID]) {\n if (cargoRegistries[DEFAULT_REGISTRY_ID] !== DEFAULT_REGISTRY_URL) {\n dep.registryUrls = [cargoRegistries[DEFAULT_REGISTRY_ID]];\n }\n } else {\n // we always expect to have DEFAULT_REGISTRY_ID set, if it's not it means the config defines an alternative\n // registry that we couldn't resolve.\n dep.skipReason = 'unknown-registry';\n }\n }\n\n if (target) {\n dep.target = target;\n }\n deps.push(dep);\n }\n\n return deps;\n}\n\n/** Reads `.cargo/config.toml`, or, if not found, `.cargo/config` */\nasync function readCargoConfig(): Promise<CargoConfig | null> {\n for (const configName of ['config.toml', 'config']) {\n const path = `.cargo/${configName}`;\n const payload = await readLocalFile(path, 'utf8');\n if (payload) {\n const parsedCargoConfig = CargoConfigSchema.safeParse(payload);\n if (parsedCargoConfig.success) {\n return parsedCargoConfig.data;\n } else {\n logger.debug(\n { err: parsedCargoConfig.error, path },\n `Error parsing cargo config`,\n );\n }\n }\n }\n\n logger.debug('Neither .cargo/config nor .cargo/config.toml found');\n return null;\n}\n\n/** Extracts a map of cargo registries from a CargoConfig */\nfunction extractCargoRegistries(config: CargoConfig): CargoRegistries {\n const result: CargoRegistries = {};\n // check if we're overriding our default registry index\n result[DEFAULT_REGISTRY_ID] = resolveRegistryIndex(\n DEFAULT_REGISTRY_ID,\n config,\n );\n\n const registryNames = new Set([\n ...Object.keys(config.registries ?? {}),\n ...Object.keys(config.source ?? {}),\n ]);\n for (const registryName of registryNames) {\n result[registryName] = resolveRegistryIndex(registryName, config);\n }\n\n return result;\n}\n\nfunction resolveRegistryIndex(\n registryName: string,\n config: CargoConfig,\n originalNames: Set<string> = new Set(),\n): CargoRegistryUrl {\n // if we have a source replacement, follow that.\n // https://doc.rust-lang.org/cargo/reference/source-replacement.html\n const replacementName = config.source?.[registryName]?.['replace-with'];\n if (replacementName) {\n logger.debug(\n `Replacing index of cargo registry ${registryName} with ${replacementName}`,\n );\n if (originalNames.has(replacementName)) {\n logger.warn({ registryName }, 'cargo registry resolves to itself');\n return null;\n }\n return resolveRegistryIndex(\n replacementName,\n config,\n originalNames.add(replacementName),\n );\n }\n\n const sourceRegistry = config.source?.[registryName]?.registry;\n if (sourceRegistry) {\n logger.debug(\n `Replacing cargo source registry with ${sourceRegistry} for ${registryName}`,\n );\n return sourceRegistry;\n }\n\n const registryIndex = config.registries?.[registryName]?.index;\n if (registryIndex) {\n return registryIndex;\n } else {\n // we don't need an explicit index if we're using the default registry\n if (registryName === DEFAULT_REGISTRY_ID) {\n return DEFAULT_REGISTRY_URL;\n } else {\n logger.debug(`${registryName} cargo registry is missing index`);\n return null;\n }\n }\n}\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n _config?: ExtractConfig,\n): Promise<PackageFileContent<CargoManagerData> | null> {\n logger.trace(`cargo.extractPackageFile(${packageFile})`);\n\n const cargoConfig = (await readCargoConfig()) ?? {};\n const cargoRegistries = extractCargoRegistries(cargoConfig);\n\n const parsedCargoManifest = CargoManifestSchema.safeParse(content);\n if (!parsedCargoManifest.success) {\n logger.debug(\n { err: parsedCargoManifest.error, packageFile },\n 'Error parsing Cargo.toml file',\n );\n return null;\n }\n\n const cargoManifest = parsedCargoManifest.data;\n\n /*\n There are the following sections in Cargo.toml:\n [package]\n [dependencies]\n [dev-dependencies]\n [build-dependencies]\n [target.*.dependencies]\n [workspace.dependencies]\n */\n const targetSection = cargoManifest.target;\n // An array of all dependencies in the target section\n let targetDeps: PackageDependency[] = [];\n if (targetSection) {\n const targets = Object.keys(targetSection);\n targets.forEach((target) => {\n const targetContent = targetSection[target];\n // Dependencies for `${target}`\n const deps = [\n ...extractFromSection(\n targetContent.dependencies,\n cargoRegistries,\n target,\n ),\n ...extractFromSection(\n targetContent['dev-dependencies'],\n cargoRegistries,\n target,\n ),\n ...extractFromSection(\n targetContent['build-dependencies'],\n cargoRegistries,\n target,\n ),\n ];\n targetDeps = targetDeps.concat(deps);\n });\n }\n\n const workspaceSection = cargoManifest.workspace;\n let workspaceDeps: PackageDependency[] = [];\n if (workspaceSection) {\n workspaceDeps = extractFromSection(\n workspaceSection.dependencies,\n cargoRegistries,\n undefined,\n );\n }\n\n const deps = [\n ...extractFromSection(cargoManifest.dependencies, cargoRegistries),\n ...extractFromSection(cargoManifest['dev-dependencies'], cargoRegistries),\n ...extractFromSection(cargoManifest['build-dependencies'], cargoRegistries),\n ...targetDeps,\n ...workspaceDeps,\n ];\n if (!deps.length) {\n return null;\n }\n\n const packageSection = cargoManifest.package;\n let version: string | undefined = undefined;\n if (packageSection) {\n if (is.string(packageSection.version)) {\n version = packageSection.version;\n } else if (\n is.object(packageSection.version) &&\n cargoManifest.workspace?.package?.version\n ) {\n // TODO: Support reading from parent workspace manifest?\n version = cargoManifest.workspace.package.version;\n }\n }\n\n const lockFileName = await findLocalSiblingOrParent(\n packageFile,\n 'Cargo.lock',\n );\n const res: PackageFileContent = { deps, packageFileVersion: version };\n if (lockFileName) {\n logger.debug(\n `Found lock file ${lockFileName} for packageFile: ${packageFile}`,\n );\n\n const versionsByPackage = await extractLockFileVersions(lockFileName);\n if (!versionsByPackage) {\n logger.debug(\n `Could not extract lock file versions from ${lockFileName}.`,\n );\n return res;\n }\n\n res.lockFiles = [lockFileName];\n\n for (const dep of deps) {\n const packageName = dep.packageName ?? dep.depName!;\n const versions = coerceArray(versionsByPackage.get(packageName));\n const lockedVersion = versioning.getSatisfyingVersion(\n versions,\n dep.currentValue!,\n );\n if (lockedVersion) {\n dep.lockedVersion = lockedVersion;\n } else {\n logger.debug(\n `No locked version found for package ${dep.depName} in the range of ${dep.currentValue}.`,\n );\n }\n }\n }\n\n return res;\n}\n"]}
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/cargo/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { coerceArray } from '../../../util/array';\nimport { findLocalSiblingOrParent, readLocalFile } from '../../../util/fs';\nimport { api as versioning } from '../../versioning/cargo';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types';\nimport { extractLockFileVersions } from './locked-version';\nimport {\n type CargoConfig,\n CargoConfigSchema,\n CargoManifestSchema,\n} from './schema';\nimport type {\n CargoManagerData,\n CargoRegistries,\n CargoRegistryUrl,\n} from './types';\nimport { DEFAULT_REGISTRY_URL } from './utils';\n\nconst DEFAULT_REGISTRY_ID = 'crates-io';\n\nfunction getCargoIndexEnv(registryName: string): string | null {\n const registry = registryName.toUpperCase().replaceAll('-', '_');\n return process.env[`CARGO_REGISTRIES_${registry}_INDEX`] ?? null;\n}\n\nfunction extractFromSection(\n dependencies: PackageDependency<CargoManagerData>[] | undefined,\n cargoRegistries: CargoRegistries,\n target?: string,\n): PackageDependency[] {\n if (!dependencies) {\n return [];\n }\n\n const deps: PackageDependency<CargoManagerData>[] = [];\n\n for (const dep of Object.values(dependencies)) {\n let registryUrls: string[] | undefined;\n\n if (dep.managerData?.registryName) {\n const registryUrl =\n getCargoIndexEnv(dep.managerData.registryName) ??\n cargoRegistries[dep.managerData?.registryName];\n if (registryUrl) {\n if (registryUrl !== DEFAULT_REGISTRY_URL) {\n registryUrls = [registryUrl];\n }\n } else {\n dep.skipReason = 'unknown-registry';\n }\n }\n\n if (registryUrls) {\n dep.registryUrls = registryUrls;\n } else {\n // if we don't have an explicit registry URL check if the default registry has a non-standard url\n if (cargoRegistries[DEFAULT_REGISTRY_ID]) {\n if (cargoRegistries[DEFAULT_REGISTRY_ID] !== DEFAULT_REGISTRY_URL) {\n dep.registryUrls = [cargoRegistries[DEFAULT_REGISTRY_ID]];\n }\n } else {\n // we always expect to have DEFAULT_REGISTRY_ID set, if it's not it means the config defines an alternative\n // registry that we couldn't resolve.\n dep.skipReason = 'unknown-registry';\n }\n }\n\n if (target) {\n dep.target = target;\n }\n deps.push(dep);\n }\n\n return deps;\n}\n\n/** Reads `.cargo/config.toml`, or, if not found, `.cargo/config` */\nasync function readCargoConfig(): Promise<CargoConfig | null> {\n for (const configName of ['config.toml', 'config']) {\n const path = `.cargo/${configName}`;\n const payload = await readLocalFile(path, 'utf8');\n if (payload) {\n const parsedCargoConfig = CargoConfigSchema.safeParse(payload);\n if (parsedCargoConfig.success) {\n return parsedCargoConfig.data;\n } else {\n logger.debug(\n { err: parsedCargoConfig.error, path },\n `Error parsing cargo config`,\n );\n }\n }\n }\n\n logger.debug('Neither .cargo/config nor .cargo/config.toml found');\n return null;\n}\n\n/** Extracts a map of cargo registries from a CargoConfig */\nfunction extractCargoRegistries(config: CargoConfig): CargoRegistries {\n const result: CargoRegistries = {};\n // check if we're overriding our default registry index\n result[DEFAULT_REGISTRY_ID] = resolveRegistryIndex(\n DEFAULT_REGISTRY_ID,\n config,\n );\n\n const registryNames = new Set([\n ...Object.keys(config.registries ?? {}),\n ...Object.keys(config.source ?? {}),\n ]);\n for (const registryName of registryNames) {\n result[registryName] = resolveRegistryIndex(registryName, config);\n }\n\n return result;\n}\n\nfunction resolveRegistryIndex(\n registryName: string,\n config: CargoConfig,\n originalNames = new Set<string>(),\n): CargoRegistryUrl {\n // if we have a source replacement, follow that.\n // https://doc.rust-lang.org/cargo/reference/source-replacement.html\n const replacementName = config.source?.[registryName]?.['replace-with'];\n if (replacementName) {\n logger.debug(\n `Replacing index of cargo registry ${registryName} with ${replacementName}`,\n );\n if (originalNames.has(replacementName)) {\n logger.warn({ registryName }, 'cargo registry resolves to itself');\n return null;\n }\n return resolveRegistryIndex(\n replacementName,\n config,\n originalNames.add(replacementName),\n );\n }\n\n const sourceRegistry = config.source?.[registryName]?.registry;\n if (sourceRegistry) {\n logger.debug(\n `Replacing cargo source registry with ${sourceRegistry} for ${registryName}`,\n );\n return sourceRegistry;\n }\n\n const registryIndex = config.registries?.[registryName]?.index;\n if (registryIndex) {\n return registryIndex;\n } else {\n // we don't need an explicit index if we're using the default registry\n if (registryName === DEFAULT_REGISTRY_ID) {\n return DEFAULT_REGISTRY_URL;\n } else {\n logger.debug(`${registryName} cargo registry is missing index`);\n return null;\n }\n }\n}\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n _config?: ExtractConfig,\n): Promise<PackageFileContent<CargoManagerData> | null> {\n logger.trace(`cargo.extractPackageFile(${packageFile})`);\n\n const cargoConfig = (await readCargoConfig()) ?? {};\n const cargoRegistries = extractCargoRegistries(cargoConfig);\n\n const parsedCargoManifest = CargoManifestSchema.safeParse(content);\n if (!parsedCargoManifest.success) {\n logger.debug(\n { err: parsedCargoManifest.error, packageFile },\n 'Error parsing Cargo.toml file',\n );\n return null;\n }\n\n const cargoManifest = parsedCargoManifest.data;\n\n /*\n There are the following sections in Cargo.toml:\n [package]\n [dependencies]\n [dev-dependencies]\n [build-dependencies]\n [target.*.dependencies]\n [workspace.dependencies]\n */\n const targetSection = cargoManifest.target;\n // An array of all dependencies in the target section\n let targetDeps: PackageDependency[] = [];\n if (targetSection) {\n const targets = Object.keys(targetSection);\n targets.forEach((target) => {\n const targetContent = targetSection[target];\n // Dependencies for `${target}`\n const deps = [\n ...extractFromSection(\n targetContent.dependencies,\n cargoRegistries,\n target,\n ),\n ...extractFromSection(\n targetContent['dev-dependencies'],\n cargoRegistries,\n target,\n ),\n ...extractFromSection(\n targetContent['build-dependencies'],\n cargoRegistries,\n target,\n ),\n ];\n targetDeps = targetDeps.concat(deps);\n });\n }\n\n const workspaceSection = cargoManifest.workspace;\n let workspaceDeps: PackageDependency[] = [];\n if (workspaceSection) {\n workspaceDeps = extractFromSection(\n workspaceSection.dependencies,\n cargoRegistries,\n undefined,\n );\n }\n\n const deps = [\n ...extractFromSection(cargoManifest.dependencies, cargoRegistries),\n ...extractFromSection(cargoManifest['dev-dependencies'], cargoRegistries),\n ...extractFromSection(cargoManifest['build-dependencies'], cargoRegistries),\n ...targetDeps,\n ...workspaceDeps,\n ];\n if (!deps.length) {\n return null;\n }\n\n const packageSection = cargoManifest.package;\n let version: string | undefined = undefined;\n if (packageSection) {\n if (is.string(packageSection.version)) {\n version = packageSection.version;\n } else if (\n is.object(packageSection.version) &&\n cargoManifest.workspace?.package?.version\n ) {\n // TODO: Support reading from parent workspace manifest?\n version = cargoManifest.workspace.package.version;\n }\n }\n\n const lockFileName = await findLocalSiblingOrParent(\n packageFile,\n 'Cargo.lock',\n );\n const res: PackageFileContent = { deps, packageFileVersion: version };\n if (lockFileName) {\n logger.debug(\n `Found lock file ${lockFileName} for packageFile: ${packageFile}`,\n );\n\n const versionsByPackage = await extractLockFileVersions(lockFileName);\n if (!versionsByPackage) {\n logger.debug(\n `Could not extract lock file versions from ${lockFileName}.`,\n );\n return res;\n }\n\n res.lockFiles = [lockFileName];\n\n for (const dep of deps) {\n const packageName = dep.packageName ?? dep.depName!;\n const versions = coerceArray(versionsByPackage.get(packageName));\n const lockedVersion = versioning.getSatisfyingVersion(\n versions,\n dep.currentValue!,\n );\n if (lockedVersion) {\n dep.lockedVersion = lockedVersion;\n } else {\n logger.debug(\n `No locked version found for package ${dep.depName} in the range of ${dep.currentValue}.`,\n );\n }\n }\n }\n\n return res;\n}\n"]}
|
@@ -3,9 +3,7 @@ import type { DEFAULT_REGISTRY_URL } from './utils';
|
|
3
3
|
* null means a registry was defined, but we couldn't find a valid URL
|
4
4
|
*/
|
5
5
|
export type CargoRegistryUrl = string | typeof DEFAULT_REGISTRY_URL | null;
|
6
|
-
export
|
7
|
-
[key: string]: CargoRegistryUrl;
|
8
|
-
}
|
6
|
+
export type CargoRegistries = Record<string, CargoRegistryUrl>;
|
9
7
|
export interface CargoManagerData {
|
10
8
|
nestedVersion?: boolean;
|
11
9
|
registryName?: string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../lib/modules/manager/cargo/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { DEFAULT_REGISTRY_URL } from './utils';\n\n/**\n * null means a registry was defined, but we couldn't find a valid URL\n */\nexport type CargoRegistryUrl = string | typeof DEFAULT_REGISTRY_URL | null;\nexport
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../lib/modules/manager/cargo/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { DEFAULT_REGISTRY_URL } from './utils';\n\n/**\n * null means a registry was defined, but we couldn't find a valid URL\n */\nexport type CargoRegistryUrl = string | typeof DEFAULT_REGISTRY_URL | null;\nexport type CargoRegistries = Record<string, CargoRegistryUrl>;\n\nexport interface CargoManagerData {\n nestedVersion?: boolean;\n registryName?: string;\n}\n"]}
|
@@ -73,11 +73,11 @@ function extractConstraints({ config, require, requireDev }, { pluginApiVersion
|
|
73
73
|
res.composer = requireDev['composer/composer'];
|
74
74
|
}
|
75
75
|
// composer platform package
|
76
|
-
else if (require
|
77
|
-
res.composer = require
|
76
|
+
else if (require.composer) {
|
77
|
+
res.composer = require.composer;
|
78
78
|
}
|
79
|
-
else if (requireDev
|
80
|
-
res.composer = requireDev
|
79
|
+
else if (requireDev.composer) {
|
80
|
+
res.composer = requireDev.composer;
|
81
81
|
}
|
82
82
|
// check last used composer version
|
83
83
|
else if (pluginApiVersion) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../lib/modules/manager/composer/utils.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../lib/modules/manager/composer/utils.ts"],"names":[],"mappings":";;;AAeA,oDA+BC;AAED,4CAWC;AAED,sFAQC;AAED,gDA0CC;AAED,sDAEC;AArHD,uBAAuB;AACvB,iCAA8B;AAC9B,mDAAsD;AACtD,4CAAyC;AAGzC,iDAAoD;AACpD,wDAA4E;AAInE,qGAJW,aAAoB,OAIX;AAE7B,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AAEpD,SAAgB,oBAAoB,CAClC,MAA6B,EAC7B,cAA8B;IAE9B,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,IAAI,MAAM,CAAC,0BAA0B,EAAE,CAAC;QACtC,IAAI,MAAM,CAAC,0BAA0B,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,qEAAqE;YACrE,MAAM,KAAK,GAAG,cAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAW,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,cAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAW,CAAC,CAAC;YACvD,IAAI,IAAI,cAAG,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,EAAE,MAAM,CAAC;gBAC9C,CAAC,CAAC,8DAA8D;gBAChE,CAAC,CAAC,yBAAyB,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChD,IAAI,IAAI,yBAAyB,GAAG,IAAA,aAAK,EAAC,GAAG,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,IAAI,6BAA6B,CAAC;IACtC,IAAI,CAAC,qBAAY,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QAC9D,IAAI,IAAI,+BAA+B,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,qBAAY,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QAC9D,IAAI,IAAI,eAAe,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,gBAAgB,CAC9B,WAAmC;IAEnC,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC;IAE5B,IAAI,GAAG,EAAE,CAAC;QACR,eAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,qCAAqC,CAAC,EACpD,QAAQ,EACR,WAAW,GACF;IACT,OAAO,CACL,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI;QAC5D,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAChE,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAChC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAe,EAC5C,EAAE,gBAAgB,EAAY;IAE9B,MAAM,GAAG,GAA2B,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAExD,cAAc;IACd,MAAM,UAAU,GAAG,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC;IACxC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,cAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAA,qBAAY,EAAC,cAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,IAAA,qBAAY,EAAC,cAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,GAAG,CAAC,GAAG,GAAG,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;IAC3C,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACvB,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,CAAC;IAED,qCAAqC;IACrC,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IACjD,CAAC;IACD,4BAA4B;SACvB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC1B,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,CAAC;SAAM,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC/B,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IACrC,CAAC;IACD,mCAAmC;SAC9B,IAAI,gBAAgB,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,cAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,cAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC7C,GAAG,CAAC,QAAQ,GAAG,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;IACtC,CAAC;IACD,gCAAgC;SAC3B,IAAI,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,cAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,cAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC5D,GAAG,CAAC,QAAQ,GAAG,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,qBAAqB,CAAC,IAAsB;IAC1D,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACtE,CAAC","sourcesContent":["// TODO: types (#22198)\nimport { quote } from 'shlex';\nimport { GlobalConfig } from '../../../config/global';\nimport { logger } from '../../../logger';\nimport type { CombinedHostRule } from '../../../types';\nimport type { ToolConstraint } from '../../../util/exec/types';\nimport { coerceNumber } from '../../../util/number';\nimport { api, id as composerVersioningId } from '../../versioning/composer';\nimport type { UpdateArtifactsConfig } from '../types';\nimport type { Lockfile, PackageFile } from './schema';\n\nexport { composerVersioningId };\n\nconst depRequireInstall = new Set(['symfony/flex']);\n\nexport function getComposerArguments(\n config: UpdateArtifactsConfig,\n toolConstraint: ToolConstraint,\n): string {\n let args = '';\n\n if (config.composerIgnorePlatformReqs) {\n if (config.composerIgnorePlatformReqs.length === 0) {\n // TODO: toolConstraint.constraint can be null or undefined? (#22198)\n const major = api.getMajor(toolConstraint.constraint!);\n const minor = api.getMinor(toolConstraint.constraint!);\n args += api.matches(`${major}.${minor}`, '^2.2')\n ? \" --ignore-platform-req='ext-*' --ignore-platform-req='lib-*'\"\n : ' --ignore-platform-reqs';\n } else {\n config.composerIgnorePlatformReqs.forEach((req) => {\n args += ' --ignore-platform-req ' + quote(req);\n });\n }\n }\n\n args += ' --no-ansi --no-interaction';\n if (!GlobalConfig.get('allowScripts') || config.ignoreScripts) {\n args += ' --no-scripts --no-autoloader';\n }\n\n if (!GlobalConfig.get('allowPlugins') || config.ignorePlugins) {\n args += ' --no-plugins';\n }\n\n return args;\n}\n\nexport function getPhpConstraint(\n constraints: Record<string, string>,\n): string | null {\n const { php } = constraints;\n\n if (php) {\n logger.debug('Using php constraint from config');\n return php;\n }\n\n return null;\n}\n\nexport function requireComposerDependencyInstallation({\n packages,\n packagesDev,\n}: Lockfile): boolean {\n return (\n packages.some((p) => depRequireInstall.has(p.name)) === true ||\n packagesDev.some((p) => depRequireInstall.has(p.name)) === true\n );\n}\n\nexport function extractConstraints(\n { config, require, requireDev }: PackageFile,\n { pluginApiVersion }: Lockfile,\n): Record<string, string> {\n const res: Record<string, string> = { composer: '1.*' };\n\n // extract php\n const phpVersion = config?.platform.php;\n if (phpVersion) {\n const major = api.getMajor(phpVersion);\n const minor = coerceNumber(api.getMinor(phpVersion));\n const patch = coerceNumber(api.getPatch(phpVersion));\n res.php = `<=${major}.${minor}.${patch}`;\n } else if (require.php) {\n res.php = require.php;\n }\n\n // extract direct composer dependency\n if (require['composer/composer']) {\n res.composer = require['composer/composer'];\n } else if (requireDev['composer/composer']) {\n res.composer = requireDev['composer/composer'];\n }\n // composer platform package\n else if (require.composer) {\n res.composer = require.composer;\n } else if (requireDev.composer) {\n res.composer = requireDev.composer;\n }\n // check last used composer version\n else if (pluginApiVersion) {\n const major = api.getMajor(pluginApiVersion);\n const minor = api.getMinor(pluginApiVersion);\n res.composer = `^${major}.${minor}`;\n }\n // check composer api dependency\n else if (require['composer-runtime-api']) {\n const major = api.getMajor(require['composer-runtime-api']);\n const minor = api.getMinor(require['composer-runtime-api']);\n res.composer = `^${major}.${minor}`;\n }\n return res;\n}\n\nexport function isArtifactAuthEnabled(rule: CombinedHostRule): boolean {\n return !rule.artifactAuth || rule.artifactAuth.includes('composer');\n}\n"]}
|
@@ -118,7 +118,7 @@ function extractDependency(key, val, metadata, mavenRegistries, depType) {
|
|
118
118
|
if (is_1.default.string(gitTag)) {
|
119
119
|
dep.currentValue = gitTag;
|
120
120
|
}
|
121
|
-
const gitSha = val['git/sha'] ?? val
|
121
|
+
const gitSha = val['git/sha'] ?? val.sha;
|
122
122
|
if (is_1.default.string(gitSha)) {
|
123
123
|
dep.currentDigest = gitSha;
|
124
124
|
dep.currentDigestShort = gitSha.slice(0, 7);
|
@@ -165,8 +165,8 @@ function extractPackageFile(content) {
|
|
165
165
|
}
|
166
166
|
}
|
167
167
|
const mavenRegistries = [...Object.values(registryMap)];
|
168
|
-
deps.push(...extractSection(data
|
169
|
-
const aliases = data
|
168
|
+
deps.push(...extractSection(data.deps, metadata, mavenRegistries));
|
169
|
+
const aliases = data.aliases;
|
170
170
|
if (is_1.default.plainObject(aliases)) {
|
171
171
|
for (const [depType, aliasSection] of Object.entries(aliases)) {
|
172
172
|
if (is_1.default.plainObject(aliasSection)) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/deps-edn/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex';\nimport { BitbucketTagsDatasource } from '../../datasource/bitbucket-tags';\nimport { ClojureDatasource } from '../../datasource/clojure';\nimport { CLOJARS_REPO } from '../../datasource/clojure/common';\nimport { GitRefsDatasource } from '../../datasource/git-refs';\nimport { GithubTagsDatasource } from '../../datasource/github-tags';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags';\nimport { MAVEN_REPO } from '../../datasource/maven/common';\nimport type { PackageDependency, PackageFileContent } from '../types';\nimport { parseDepsEdnFile } from './parser';\nimport type {\n ParsedEdnData,\n ParsedEdnMetadata,\n ParsedEdnRecord,\n} from './types';\n\nconst dependencyRegex = regEx(\n /^(?<groupId>[a-zA-Z][-_a-zA-Z0-9]*(?:\\.[a-zA-Z0-9][-_a-zA-Z0-9]*)*)(?:\\/(?<artifactId>[a-zA-Z][-_a-zA-Z0-9]*(?:\\.[a-zA-Z0-9][-_a-zA-Z0-9]*)*))?$/,\n);\n\nfunction getPackageName(depName: string): string | null {\n const matchGroups = dependencyRegex.exec(depName)?.groups;\n if (matchGroups) {\n const groupId = matchGroups.groupId;\n const artifactId = matchGroups.artifactId\n ? matchGroups.artifactId\n : groupId;\n return `${groupId}:${artifactId}`;\n }\n\n return null;\n}\n\nconst githubDependencyRegex = regEx(\n /^(?:com|io)\\.github\\.(?<packageName>[^/]+\\/[^/]+)$/,\n);\nconst gitlabDependencyRegex = regEx(\n /^(?:com|io)\\.gitlab\\.(?<packageName>[^/]+\\/[^/]+)$/,\n);\nconst bitbucketDependencyRegex = regEx(\n /^(?:org|io)\\.bitbucket\\.(?<packageName>[^/]+\\/[^/]+)$/,\n);\n\nfunction resolveGitPackageFromEdnKey(\n dep: PackageDependency,\n key: string,\n): void {\n if (dep.datasource) {\n return;\n }\n\n const githubDependencyGroups = githubDependencyRegex.exec(key)?.groups;\n if (githubDependencyGroups?.packageName) {\n dep.datasource = GithubTagsDatasource.id;\n dep.packageName = githubDependencyGroups.packageName;\n return;\n }\n\n const gitlabDependencyGroups = gitlabDependencyRegex.exec(key)?.groups;\n if (gitlabDependencyGroups?.packageName) {\n dep.datasource = GitlabTagsDatasource.id;\n dep.packageName = gitlabDependencyGroups.packageName;\n return;\n }\n\n const bitbucketDependencyGroups = bitbucketDependencyRegex.exec(key)?.groups;\n if (bitbucketDependencyGroups?.packageName) {\n dep.datasource = BitbucketTagsDatasource.id;\n dep.packageName = bitbucketDependencyGroups.packageName;\n return;\n }\n}\n\nconst githubUrlRegex = regEx(\n /^(?:https:\\/\\/|git@)github\\.com[/:](?<packageName>[^/]+\\/[^/]+?)(?:\\.git)?$/,\n);\nconst gitlabUrlRegex = regEx(\n /^(?:https:\\/\\/|git@)gitlab\\.com[/:](?<packageName>[^/]+\\/[^/]+?)(?:\\.git)?$/,\n);\nconst bitbucketUrlRegex = regEx(\n /^(?:https:\\/\\/|git@)bitbucket\\.org[/:](?<packageName>[^/]+\\/[^/]+?)(?:\\.git)?$/,\n);\n\nfunction resolveGitPackageFromEdnVal(\n dep: PackageDependency,\n val: ParsedEdnRecord,\n): void {\n const gitUrl = val['git/url'];\n if (!is.string(gitUrl)) {\n return;\n }\n\n const githubMatchGroups = githubUrlRegex.exec(gitUrl)?.groups;\n if (githubMatchGroups) {\n dep.datasource = GithubTagsDatasource.id;\n dep.packageName = githubMatchGroups.packageName;\n dep.sourceUrl = `https://github.com/${dep.packageName}`;\n return;\n }\n\n const gitlabMatchGroups = gitlabUrlRegex.exec(gitUrl)?.groups;\n const bitbucketMatchGroups = bitbucketUrlRegex.exec(gitUrl)?.groups;\n\n if (gitlabMatchGroups) {\n dep.datasource = GitlabTagsDatasource.id;\n dep.packageName = gitlabMatchGroups.packageName;\n dep.sourceUrl = `https://gitlab.com/${dep.packageName}`;\n return;\n }\n\n if (bitbucketMatchGroups) {\n dep.datasource = GitlabTagsDatasource.id;\n dep.packageName = bitbucketMatchGroups.packageName;\n dep.sourceUrl = `https://bitbucket.org/${dep.packageName}`;\n return;\n }\n\n dep.datasource = GitRefsDatasource.id;\n dep.packageName = gitUrl;\n if (gitUrl.startsWith('https://')) {\n dep.sourceUrl = gitUrl.replace(/\\.git$/, '');\n }\n}\n\nfunction extractDependency(\n key: string,\n val: ParsedEdnData,\n metadata: ParsedEdnMetadata,\n mavenRegistries: string[],\n depType?: string,\n): PackageDependency | null {\n if (!is.plainObject(val)) {\n return null;\n }\n\n const packageName = getPackageName(key);\n if (!packageName) {\n return null;\n }\n const depName = key;\n\n const dep: PackageDependency = {\n depName,\n packageName,\n currentValue: null,\n ...metadata.get(val),\n };\n\n if (depType) {\n dep.depType = depType;\n }\n\n const mvnVersion = val['mvn/version'];\n if (is.string(mvnVersion)) {\n dep.datasource = ClojureDatasource.id;\n dep.currentValue = mvnVersion;\n dep.packageName = packageName.replace('/', ':');\n dep.registryUrls = [...mavenRegistries];\n return dep;\n }\n\n resolveGitPackageFromEdnVal(dep, val);\n resolveGitPackageFromEdnKey(dep, key);\n\n if (dep.datasource) {\n const gitTag = val['git/tag'];\n if (is.string(gitTag)) {\n dep.currentValue = gitTag;\n }\n\n const gitSha = val['git/sha'] ?? val['sha'];\n if (is.string(gitSha)) {\n dep.currentDigest = gitSha;\n dep.currentDigestShort = gitSha.slice(0, 7);\n }\n\n return dep;\n }\n\n return null;\n}\n\nfunction extractSection(\n section: ParsedEdnData,\n metadata: ParsedEdnMetadata,\n mavenRegistries: string[],\n depType?: string,\n): PackageDependency[] {\n const deps: PackageDependency[] = [];\n if (is.plainObject(section)) {\n for (const [key, val] of Object.entries(section)) {\n const dep = extractDependency(\n key,\n val,\n metadata,\n mavenRegistries,\n depType,\n );\n if (dep) {\n deps.push(dep);\n }\n }\n }\n return deps;\n}\n\nexport function extractPackageFile(content: string): PackageFileContent | null {\n const parsed = parseDepsEdnFile(content);\n if (!parsed) {\n return null;\n }\n const { data, metadata } = parsed;\n\n const deps: PackageDependency[] = [];\n\n // See: https://clojure.org/reference/deps_and_cli#_modifying_the_default_repositories\n const registryMap: Record<string, string> = {\n clojars: CLOJARS_REPO,\n central: MAVEN_REPO,\n };\n const mavenRepos = data['mvn/repos'];\n if (is.plainObject(mavenRepos)) {\n for (const [repoName, repoSpec] of Object.entries(mavenRepos)) {\n if (is.string(repoName)) {\n if (is.plainObject(repoSpec) && is.string(repoSpec.url)) {\n registryMap[repoName] = repoSpec.url;\n } else if (is.string(repoSpec) && repoSpec === 'nil') {\n delete registryMap[repoName];\n }\n }\n }\n }\n const mavenRegistries: string[] = [...Object.values(registryMap)];\n\n deps.push(...extractSection(data['deps'], metadata, mavenRegistries));\n\n const aliases = data['aliases'];\n if (is.plainObject(aliases)) {\n for (const [depType, aliasSection] of Object.entries(aliases)) {\n if (is.plainObject(aliasSection)) {\n deps.push(\n ...extractSection(\n aliasSection['extra-deps'],\n metadata,\n mavenRegistries,\n depType,\n ),\n );\n deps.push(\n ...extractSection(\n aliasSection['override-deps'],\n metadata,\n mavenRegistries,\n depType,\n ),\n );\n }\n }\n }\n\n return { deps };\n}\n"]}
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/deps-edn/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex';\nimport { BitbucketTagsDatasource } from '../../datasource/bitbucket-tags';\nimport { ClojureDatasource } from '../../datasource/clojure';\nimport { CLOJARS_REPO } from '../../datasource/clojure/common';\nimport { GitRefsDatasource } from '../../datasource/git-refs';\nimport { GithubTagsDatasource } from '../../datasource/github-tags';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags';\nimport { MAVEN_REPO } from '../../datasource/maven/common';\nimport type { PackageDependency, PackageFileContent } from '../types';\nimport { parseDepsEdnFile } from './parser';\nimport type {\n ParsedEdnData,\n ParsedEdnMetadata,\n ParsedEdnRecord,\n} from './types';\n\nconst dependencyRegex = regEx(\n /^(?<groupId>[a-zA-Z][-_a-zA-Z0-9]*(?:\\.[a-zA-Z0-9][-_a-zA-Z0-9]*)*)(?:\\/(?<artifactId>[a-zA-Z][-_a-zA-Z0-9]*(?:\\.[a-zA-Z0-9][-_a-zA-Z0-9]*)*))?$/,\n);\n\nfunction getPackageName(depName: string): string | null {\n const matchGroups = dependencyRegex.exec(depName)?.groups;\n if (matchGroups) {\n const groupId = matchGroups.groupId;\n const artifactId = matchGroups.artifactId\n ? matchGroups.artifactId\n : groupId;\n return `${groupId}:${artifactId}`;\n }\n\n return null;\n}\n\nconst githubDependencyRegex = regEx(\n /^(?:com|io)\\.github\\.(?<packageName>[^/]+\\/[^/]+)$/,\n);\nconst gitlabDependencyRegex = regEx(\n /^(?:com|io)\\.gitlab\\.(?<packageName>[^/]+\\/[^/]+)$/,\n);\nconst bitbucketDependencyRegex = regEx(\n /^(?:org|io)\\.bitbucket\\.(?<packageName>[^/]+\\/[^/]+)$/,\n);\n\nfunction resolveGitPackageFromEdnKey(\n dep: PackageDependency,\n key: string,\n): void {\n if (dep.datasource) {\n return;\n }\n\n const githubDependencyGroups = githubDependencyRegex.exec(key)?.groups;\n if (githubDependencyGroups?.packageName) {\n dep.datasource = GithubTagsDatasource.id;\n dep.packageName = githubDependencyGroups.packageName;\n return;\n }\n\n const gitlabDependencyGroups = gitlabDependencyRegex.exec(key)?.groups;\n if (gitlabDependencyGroups?.packageName) {\n dep.datasource = GitlabTagsDatasource.id;\n dep.packageName = gitlabDependencyGroups.packageName;\n return;\n }\n\n const bitbucketDependencyGroups = bitbucketDependencyRegex.exec(key)?.groups;\n if (bitbucketDependencyGroups?.packageName) {\n dep.datasource = BitbucketTagsDatasource.id;\n dep.packageName = bitbucketDependencyGroups.packageName;\n return;\n }\n}\n\nconst githubUrlRegex = regEx(\n /^(?:https:\\/\\/|git@)github\\.com[/:](?<packageName>[^/]+\\/[^/]+?)(?:\\.git)?$/,\n);\nconst gitlabUrlRegex = regEx(\n /^(?:https:\\/\\/|git@)gitlab\\.com[/:](?<packageName>[^/]+\\/[^/]+?)(?:\\.git)?$/,\n);\nconst bitbucketUrlRegex = regEx(\n /^(?:https:\\/\\/|git@)bitbucket\\.org[/:](?<packageName>[^/]+\\/[^/]+?)(?:\\.git)?$/,\n);\n\nfunction resolveGitPackageFromEdnVal(\n dep: PackageDependency,\n val: ParsedEdnRecord,\n): void {\n const gitUrl = val['git/url'];\n if (!is.string(gitUrl)) {\n return;\n }\n\n const githubMatchGroups = githubUrlRegex.exec(gitUrl)?.groups;\n if (githubMatchGroups) {\n dep.datasource = GithubTagsDatasource.id;\n dep.packageName = githubMatchGroups.packageName;\n dep.sourceUrl = `https://github.com/${dep.packageName}`;\n return;\n }\n\n const gitlabMatchGroups = gitlabUrlRegex.exec(gitUrl)?.groups;\n const bitbucketMatchGroups = bitbucketUrlRegex.exec(gitUrl)?.groups;\n\n if (gitlabMatchGroups) {\n dep.datasource = GitlabTagsDatasource.id;\n dep.packageName = gitlabMatchGroups.packageName;\n dep.sourceUrl = `https://gitlab.com/${dep.packageName}`;\n return;\n }\n\n if (bitbucketMatchGroups) {\n dep.datasource = GitlabTagsDatasource.id;\n dep.packageName = bitbucketMatchGroups.packageName;\n dep.sourceUrl = `https://bitbucket.org/${dep.packageName}`;\n return;\n }\n\n dep.datasource = GitRefsDatasource.id;\n dep.packageName = gitUrl;\n if (gitUrl.startsWith('https://')) {\n dep.sourceUrl = gitUrl.replace(/\\.git$/, '');\n }\n}\n\nfunction extractDependency(\n key: string,\n val: ParsedEdnData,\n metadata: ParsedEdnMetadata,\n mavenRegistries: string[],\n depType?: string,\n): PackageDependency | null {\n if (!is.plainObject(val)) {\n return null;\n }\n\n const packageName = getPackageName(key);\n if (!packageName) {\n return null;\n }\n const depName = key;\n\n const dep: PackageDependency = {\n depName,\n packageName,\n currentValue: null,\n ...metadata.get(val),\n };\n\n if (depType) {\n dep.depType = depType;\n }\n\n const mvnVersion = val['mvn/version'];\n if (is.string(mvnVersion)) {\n dep.datasource = ClojureDatasource.id;\n dep.currentValue = mvnVersion;\n dep.packageName = packageName.replace('/', ':');\n dep.registryUrls = [...mavenRegistries];\n return dep;\n }\n\n resolveGitPackageFromEdnVal(dep, val);\n resolveGitPackageFromEdnKey(dep, key);\n\n if (dep.datasource) {\n const gitTag = val['git/tag'];\n if (is.string(gitTag)) {\n dep.currentValue = gitTag;\n }\n\n const gitSha = val['git/sha'] ?? val.sha;\n if (is.string(gitSha)) {\n dep.currentDigest = gitSha;\n dep.currentDigestShort = gitSha.slice(0, 7);\n }\n\n return dep;\n }\n\n return null;\n}\n\nfunction extractSection(\n section: ParsedEdnData,\n metadata: ParsedEdnMetadata,\n mavenRegistries: string[],\n depType?: string,\n): PackageDependency[] {\n const deps: PackageDependency[] = [];\n if (is.plainObject(section)) {\n for (const [key, val] of Object.entries(section)) {\n const dep = extractDependency(\n key,\n val,\n metadata,\n mavenRegistries,\n depType,\n );\n if (dep) {\n deps.push(dep);\n }\n }\n }\n return deps;\n}\n\nexport function extractPackageFile(content: string): PackageFileContent | null {\n const parsed = parseDepsEdnFile(content);\n if (!parsed) {\n return null;\n }\n const { data, metadata } = parsed;\n\n const deps: PackageDependency[] = [];\n\n // See: https://clojure.org/reference/deps_and_cli#_modifying_the_default_repositories\n const registryMap: Record<string, string> = {\n clojars: CLOJARS_REPO,\n central: MAVEN_REPO,\n };\n const mavenRepos = data['mvn/repos'];\n if (is.plainObject(mavenRepos)) {\n for (const [repoName, repoSpec] of Object.entries(mavenRepos)) {\n if (is.string(repoName)) {\n if (is.plainObject(repoSpec) && is.string(repoSpec.url)) {\n registryMap[repoName] = repoSpec.url;\n } else if (is.string(repoSpec) && repoSpec === 'nil') {\n delete registryMap[repoName];\n }\n }\n }\n }\n const mavenRegistries: string[] = [...Object.values(registryMap)];\n\n deps.push(...extractSection(data.deps, metadata, mavenRegistries));\n\n const aliases = data.aliases;\n if (is.plainObject(aliases)) {\n for (const [depType, aliasSection] of Object.entries(aliases)) {\n if (is.plainObject(aliasSection)) {\n deps.push(\n ...extractSection(\n aliasSection['extra-deps'],\n metadata,\n mavenRegistries,\n depType,\n ),\n );\n deps.push(\n ...extractSection(\n aliasSection['override-deps'],\n metadata,\n mavenRegistries,\n depType,\n ),\n );\n }\n }\n }\n\n return { deps };\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../lib/modules/manager/deps-edn/types.ts"],"names":[],"mappings":"","sourcesContent":["export type UnionToIntersection<T> = (\n T extends any ? (x: T) => any : never\n) extends (x: infer R) => any\n ? R\n : never;\nexport type TokenTypes<T> = keyof UnionToIntersection<T[keyof T]>;\n\nexport type ParsedEdnPrimitive = string | null;\nexport type ParsedEdnArray = ParsedEdnData[];\nexport type ParsedEdnRecord = { [k: string]: ParsedEdnData };\nexport type ParsedEdnData =\n | ParsedEdnPrimitive\n | ParsedEdnRecord\n | ParsedEdnArray;\n\nexport type ParserState =\n | {\n type: 'root';\n data: ParsedEdnData;\n }\n | {\n type: 'array';\n startIndex: number;\n data: ParsedEdnArray;\n }\n | {\n type: 'record';\n skipKey: boolean;\n currentKey: string | null;\n startIndex: number;\n data: ParsedEdnRecord;\n };\n\nexport interface EdnMetadata {\n replaceString: string;\n}\n\nexport type ParsedEdnMetadata = WeakMap<\n ParsedEdnRecord | ParsedEdnArray,\n EdnMetadata\n>;\n\nexport interface ParsedEdnResult {\n data: ParsedEdnRecord;\n metadata: ParsedEdnMetadata;\n}\n"]}
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../lib/modules/manager/deps-edn/types.ts"],"names":[],"mappings":"","sourcesContent":["export type UnionToIntersection<T> = (\n T extends any ? (x: T) => any : never\n) extends (x: infer R) => any\n ? R\n : never;\nexport type TokenTypes<T> = keyof UnionToIntersection<T[keyof T]>;\n\nexport type ParsedEdnPrimitive = string | null;\nexport type ParsedEdnArray = ParsedEdnData[];\n// Interface not possible due to circular reference\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport type ParsedEdnRecord = { [k: string]: ParsedEdnData };\nexport type ParsedEdnData =\n | ParsedEdnPrimitive\n | ParsedEdnRecord\n | ParsedEdnArray;\n\nexport type ParserState =\n | {\n type: 'root';\n data: ParsedEdnData;\n }\n | {\n type: 'array';\n startIndex: number;\n data: ParsedEdnArray;\n }\n | {\n type: 'record';\n skipKey: boolean;\n currentKey: string | null;\n startIndex: number;\n data: ParsedEdnRecord;\n };\n\nexport interface EdnMetadata {\n replaceString: string;\n}\n\nexport type ParsedEdnMetadata = WeakMap<\n ParsedEdnRecord | ParsedEdnArray,\n EdnMetadata\n>;\n\nexport interface ParsedEdnResult {\n data: ParsedEdnRecord;\n metadata: ParsedEdnMetadata;\n}\n"]}
|
@@ -194,7 +194,7 @@ function extractPackageFile(content, _packageFile, config) {
|
|
194
194
|
let escapeChar = '\\\\';
|
195
195
|
let lookForEscapeChar = true;
|
196
196
|
let lookForSyntaxDirective = true;
|
197
|
-
const lineFeed = sanitizedContent.
|
197
|
+
const lineFeed = sanitizedContent.includes('\r\n') ? '\r\n' : '\n';
|
198
198
|
const lines = sanitizedContent.split(regex_1.newlineRegex);
|
199
199
|
for (let lineNumber = 0; lineNumber < lines.length;) {
|
200
200
|
const lineNumberInstrStart = lineNumber;
|
@@ -246,8 +246,7 @@ function extractPackageFile(content, _packageFile, config) {
|
|
246
246
|
if (argMatch?.groups?.name) {
|
247
247
|
argsLines[argMatch.groups.name] = [lineNumberInstrStart, lineNumber];
|
248
248
|
let argMatchValue = argMatch.groups?.value;
|
249
|
-
if (argMatchValue.
|
250
|
-
argMatchValue.charAt(argMatchValue.length - 1) === '"') {
|
249
|
+
if (argMatchValue.startsWith('"') && argMatchValue.endsWith('"')) {
|
251
250
|
argMatchValue = argMatchValue.slice(1, -1);
|
252
251
|
}
|
253
252
|
args[argMatch.groups.name] = argMatchValue || '';
|