renovate 44.90.3 → 44.92.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/config/options/index.js +1 -1
  2. package/dist/config/options/index.js.map +1 -1
  3. package/dist/global-config-option-defaults.generated.js +1 -1
  4. package/dist/global-config-option-defaults.generated.js.map +1 -1
  5. package/dist/modules/datasource/cdnjs/index.js +2 -0
  6. package/dist/modules/datasource/cdnjs/index.js.map +1 -1
  7. package/dist/modules/manager/ansible-galaxy/collections.js +4 -6
  8. package/dist/modules/manager/ansible-galaxy/collections.js.map +1 -1
  9. package/dist/modules/manager/azure-pipelines/extract.js +1 -0
  10. package/dist/modules/manager/azure-pipelines/extract.js.map +1 -1
  11. package/dist/modules/manager/bazel/artifacts.js +5 -1
  12. package/dist/modules/manager/bazel/artifacts.js.map +1 -1
  13. package/dist/modules/manager/bazel/parser.js +15 -0
  14. package/dist/modules/manager/bazel/parser.js.map +1 -1
  15. package/dist/modules/manager/bazel/rules/http.js.map +1 -1
  16. package/dist/modules/manager/bundler/common.js +1 -0
  17. package/dist/modules/manager/bundler/common.js.map +1 -1
  18. package/dist/modules/manager/cargo/artifacts.js +2 -0
  19. package/dist/modules/manager/cargo/artifacts.js.map +1 -1
  20. package/dist/modules/manager/cargo/extract.js.map +1 -1
  21. package/dist/modules/manager/cocoapods/extract.js +3 -0
  22. package/dist/modules/manager/cocoapods/extract.js.map +1 -1
  23. package/dist/modules/manager/composer/artifacts.js +1 -0
  24. package/dist/modules/manager/composer/artifacts.js.map +1 -1
  25. package/dist/modules/manager/composer/schema.js.map +1 -1
  26. package/dist/modules/manager/cpanfile/parser.js +2 -0
  27. package/dist/modules/manager/cpanfile/parser.js.map +1 -1
  28. package/dist/modules/manager/deps-edn/extract.js +3 -1
  29. package/dist/modules/manager/deps-edn/extract.js.map +1 -1
  30. package/dist/modules/manager/droneci/extract.js +4 -6
  31. package/dist/modules/manager/droneci/extract.js.map +1 -1
  32. package/dist/modules/manager/fingerprint.generated.js +11 -11
  33. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  34. package/dist/modules/manager/flux/extract.js +1 -0
  35. package/dist/modules/manager/flux/extract.js.map +1 -1
  36. package/dist/modules/manager/github-actions/extract.js +3 -0
  37. package/dist/modules/manager/github-actions/extract.js.map +1 -1
  38. package/dist/modules/manager/github-actions/known-actions.js +268 -2
  39. package/dist/modules/manager/github-actions/known-actions.js.map +1 -1
  40. package/dist/modules/manager/gitlabci/extract.js +1 -0
  41. package/dist/modules/manager/gitlabci/extract.js.map +1 -1
  42. package/dist/modules/manager/glasskube/extract.js +2 -0
  43. package/dist/modules/manager/glasskube/extract.js.map +1 -1
  44. package/dist/modules/manager/gomod/artifacts-extra.js +1 -0
  45. package/dist/modules/manager/gomod/artifacts-extra.js.map +1 -1
  46. package/dist/modules/manager/gomod/artifacts.js +1 -0
  47. package/dist/modules/manager/gomod/artifacts.js.map +1 -1
  48. package/dist/modules/manager/gomod/extract.js +1 -0
  49. package/dist/modules/manager/gomod/extract.js.map +1 -1
  50. package/dist/modules/manager/gradle/artifacts.js +1 -1
  51. package/dist/modules/manager/gradle/artifacts.js.map +1 -1
  52. package/dist/modules/manager/gradle-wrapper/utils.js +1 -0
  53. package/dist/modules/manager/gradle-wrapper/utils.js.map +1 -1
  54. package/dist/modules/manager/npm/extract/common/dependency.js +2 -1
  55. package/dist/modules/manager/npm/extract/common/dependency.js.map +1 -1
  56. package/dist/modules/manager/pep621/extract.js +1 -2
  57. package/dist/modules/manager/pep621/extract.js.map +1 -1
  58. package/dist/modules/manager/quadlet/extract.js +2 -4
  59. package/dist/modules/manager/quadlet/extract.js.map +1 -1
  60. package/dist/modules/manager/swift/artifacts.js +3 -1
  61. package/dist/modules/manager/swift/artifacts.js.map +1 -1
  62. package/dist/modules/manager/swift/extract.js +1 -0
  63. package/dist/modules/manager/swift/extract.js.map +1 -1
  64. package/dist/modules/manager/terraform/extractors/others/modules.js.map +1 -1
  65. package/dist/modules/manager/terraform/lockfile/index.js +1 -0
  66. package/dist/modules/manager/terraform/lockfile/index.js.map +1 -1
  67. package/dist/modules/manager/terragrunt/extract.js +1 -0
  68. package/dist/modules/manager/terragrunt/extract.js.map +1 -1
  69. package/dist/modules/manager/tflint-plugin/extract.js +1 -0
  70. package/dist/modules/manager/tflint-plugin/extract.js.map +1 -1
  71. package/dist/modules/manager/tflint-plugin/plugins.js.map +1 -1
  72. package/package.json +3 -3
  73. package/renovate-schema.json +2 -2
@@ -1,11 +1,14 @@
1
1
  import { regEx } from "../../../util/regex.js";
2
2
  import "../../versioning/npm/index.js";
3
3
  import { id } from "../../versioning/conda/index.js";
4
- import { id as id$1 } from "../../versioning/node/index.js";
4
+ import { id as id$1 } from "../../versioning/gradle/index.js";
5
+ import { id as id$2 } from "../../versioning/node/index.js";
6
+ import { DartVersionDatasource } from "../../datasource/dart-version/index.js";
5
7
  import { DockerDatasource } from "../../datasource/docker/index.js";
6
8
  import { DotnetVersionDatasource } from "../../datasource/dotnet-version/index.js";
7
9
  import { GithubReleaseAttachmentsDatasource } from "../../datasource/github-release-attachments/index.js";
8
10
  import { GithubReleasesDatasource } from "../../datasource/github-releases/index.js";
11
+ import { GradleVersionDatasource } from "../../datasource/gradle-version/index.js";
9
12
  import { JavaVersionDatasource } from "../../datasource/java-version/index.js";
10
13
  import { NodeVersionDatasource } from "../../datasource/node-version/index.js";
11
14
  import { NpmDatasource } from "../../datasource/npm/index.js";
@@ -58,6 +61,7 @@ function valSchema(key, isInvalid) {
58
61
  }
59
62
  const VersionVal = valSchema("version");
60
63
  const actionsVersionsExtractVersion = "^(?<version>\\d+\\.\\d+\\.\\d+)(-\\d+)?$";
64
+ const SetupRustToolchainWith = z.object({ toolchain: z.string().optional() }).transform(({ toolchain }) => [parseValue(toolchain?.split(",").pop()?.trim())]);
61
65
  const InstallBinaryWith = z.object({
62
66
  repo: z.string(),
63
67
  tag: z.string()
@@ -138,6 +142,61 @@ const SetupJavaWith = z.object({
138
142
  ...parseValue(version)
139
143
  }];
140
144
  });
145
+ const TflintWith = z.object({ tflint_version: z.string().optional() }).transform(({ tflint_version: version }) => {
146
+ if (version === "latest") return [{
147
+ currentValue: version,
148
+ depType: "uses-with",
149
+ skipStage: "extract",
150
+ skipReason: "unsupported-version"
151
+ }];
152
+ return [parseValue(version)];
153
+ });
154
+ const KindActionWith = z.object({
155
+ version: z.string().optional(),
156
+ node_image: z.string().optional(),
157
+ kubectl_version: z.string().optional()
158
+ }).transform(({ version, node_image, kubectl_version }) => {
159
+ const deps = [];
160
+ if (version) deps.push({
161
+ packageName: "kubernetes-sigs/kind",
162
+ ...parseValue(version)
163
+ });
164
+ if (node_image) deps.push({
165
+ datasource: DockerDatasource.id,
166
+ ...parseImageValue(node_image)
167
+ });
168
+ if (kubectl_version) deps.push({
169
+ packageName: "kubernetes/kubernetes",
170
+ ...parseValue(kubectl_version)
171
+ });
172
+ return deps;
173
+ });
174
+ const ErlefSetupBeamWith = z.object({
175
+ "otp-version": z.string().optional(),
176
+ "elixir-version": z.string().optional(),
177
+ "gleam-version": z.string().optional(),
178
+ "rebar3-version": z.string().optional()
179
+ }).transform(({ "otp-version": otpVersion, "elixir-version": elixirVersion, "gleam-version": gleamVersion, "rebar3-version": rebar3Version }) => {
180
+ const deps = [];
181
+ if (otpVersion) deps.push({
182
+ packageName: "erlang/otp",
183
+ extractVersion: "^OTP-(?<version>.+)$",
184
+ ...parseValue(otpVersion)
185
+ });
186
+ if (elixirVersion) deps.push({
187
+ packageName: "elixir-lang/elixir",
188
+ ...parseValue(elixirVersion)
189
+ });
190
+ if (gleamVersion) deps.push({
191
+ packageName: "gleam-lang/gleam",
192
+ ...parseValue(gleamVersion)
193
+ });
194
+ if (rebar3Version) deps.push({
195
+ packageName: "erlang/rebar3",
196
+ ...parseValue(rebar3Version)
197
+ });
198
+ return deps;
199
+ });
141
200
  const renovateGithubActionDefaultImage = "ghcr.io/renovatebot/renovate";
142
201
  const RenovateGithubActionWith = z.object({
143
202
  "renovate-version": z.string().optional(),
@@ -155,6 +214,16 @@ const RenovateGithubActionWith = z.object({
155
214
  * with known version input schemas.
156
215
  */
157
216
  const knownActions = {
217
+ "abatilo/actions-poetry": {
218
+ datasource: PypiDatasource.id,
219
+ packageName: "poetry",
220
+ withSchema: valSchema("poetry-version")
221
+ },
222
+ "actions-rust-lang/setup-rust-toolchain": {
223
+ datasource: RustVersionDatasource.id,
224
+ packageName: "rust",
225
+ withSchema: SetupRustToolchainWith
226
+ },
158
227
  "actions/setup-dotnet": {
159
228
  datasource: DotnetVersionDatasource.id,
160
229
  packageName: "dotnet-sdk",
@@ -177,7 +246,7 @@ const knownActions = {
177
246
  datasource: GithubReleasesDatasource.id,
178
247
  depName: "node",
179
248
  packageName: "actions/node-versions",
180
- versioning: id$1,
249
+ versioning: id$2,
181
250
  extractVersion: actionsVersionsExtractVersion,
182
251
  withSchema: valSchema("node-version")
183
252
  },
@@ -189,6 +258,12 @@ const knownActions = {
189
258
  extractVersion: actionsVersionsExtractVersion,
190
259
  withSchema: valSchema("python-version")
191
260
  },
261
+ "aquaproj/aqua-installer": {
262
+ datasource: GithubReleasesDatasource.id,
263
+ depName: "aqua",
264
+ packageName: "aquaproj/aqua",
265
+ withSchema: valSchema("aqua_version")
266
+ },
192
267
  "aquasecurity/setup-trivy": {
193
268
  datasource: GithubReleasesDatasource.id,
194
269
  packageName: "aquasecurity/trivy"
@@ -197,6 +272,11 @@ const knownActions = {
197
272
  datasource: GithubReleasesDatasource.id,
198
273
  packageName: "aquasecurity/trivy"
199
274
  },
275
+ "astral-sh/ruff-action": {
276
+ datasource: GithubReleasesDatasource.id,
277
+ depName: "ruff",
278
+ packageName: "astral-sh/ruff"
279
+ },
200
280
  "astral-sh/setup-uv": {
201
281
  datasource: GithubReleasesDatasource.id,
202
282
  versioning: "npm",
@@ -212,6 +292,53 @@ const knownActions = {
212
292
  depName: "helm",
213
293
  packageName: "helm/helm"
214
294
  },
295
+ "azure/setup-kubectl": {
296
+ datasource: GithubReleasesDatasource.id,
297
+ depName: "kubectl",
298
+ packageName: "kubernetes/kubernetes"
299
+ },
300
+ "biomejs/setup-biome": {
301
+ datasource: NpmDatasource.id,
302
+ packageName: "@biomejs/biome"
303
+ },
304
+ "bufbuild/buf-setup-action": {
305
+ datasource: GithubReleasesDatasource.id,
306
+ depName: "buf",
307
+ packageName: "bufbuild/buf"
308
+ },
309
+ "cargo-bins/cargo-binstall": {
310
+ datasource: GithubReleasesDatasource.id,
311
+ packageName: "cargo-bins/cargo-binstall",
312
+ extractVersion: "^v(?<version>\\d+\\.\\d+\\.\\d+)$"
313
+ },
314
+ "cloudflare/wrangler-action": {
315
+ datasource: NpmDatasource.id,
316
+ packageName: "wrangler",
317
+ withSchema: valSchema("wranglerVersion")
318
+ },
319
+ "cue-lang/setup-cue": {
320
+ datasource: GithubReleasesDatasource.id,
321
+ depName: "cue",
322
+ packageName: "cue-lang/cue"
323
+ },
324
+ "cycjimmy/semantic-release-action": {
325
+ datasource: NpmDatasource.id,
326
+ packageName: "semantic-release",
327
+ versioning: "npm",
328
+ withSchema: valSchema("semantic_version")
329
+ },
330
+ "dagger/dagger-for-github": {
331
+ datasource: GithubReleasesDatasource.id,
332
+ depName: "dagger",
333
+ packageName: "dagger/dagger",
334
+ extractVersion: "^v(?<version>\\d+\\..*)$"
335
+ },
336
+ "dart-lang/setup-dart": {
337
+ datasource: DartVersionDatasource.id,
338
+ depName: "dart",
339
+ packageName: "dart-lang/sdk",
340
+ withSchema: valSchema("sdk")
341
+ },
215
342
  "denoland/setup-deno": {
216
343
  datasource: NpmDatasource.id,
217
344
  packageName: "deno",
@@ -237,20 +364,82 @@ const knownActions = {
237
364
  packageName: "rust",
238
365
  withSchema: valSchema("toolchain")
239
366
  },
367
+ "erlef/setup-beam": {
368
+ datasource: GithubReleasesDatasource.id,
369
+ packageName: "",
370
+ withSchema: ErlefSetupBeamWith
371
+ },
240
372
  "expo/expo-github-action": {
241
373
  datasource: NpmDatasource.id,
242
374
  packageName: "eas-cli",
243
375
  withSchema: valSchema("eas-version")
244
376
  },
377
+ "extractions/setup-just": {
378
+ datasource: GithubReleasesDatasource.id,
379
+ depName: "just",
380
+ packageName: "casey/just",
381
+ withSchema: valSchema("just-version")
382
+ },
383
+ "foundry-rs/foundry-toolchain": {
384
+ datasource: GithubReleasesDatasource.id,
385
+ depName: "foundry",
386
+ packageName: "foundry-rs/foundry"
387
+ },
388
+ "GitTools/actions/gitversion/setup": {
389
+ datasource: GithubReleasesDatasource.id,
390
+ depName: "gitversion",
391
+ packageName: "GitTools/GitVersion",
392
+ withSchema: valSchema("versionSpec")
393
+ },
245
394
  "golangci/golangci-lint-action": {
246
395
  datasource: GithubReleasesDatasource.id,
247
396
  packageName: "golangci/golangci-lint"
248
397
  },
398
+ "goreleaser/goreleaser-action": {
399
+ datasource: GithubReleasesDatasource.id,
400
+ packageName: "goreleaser/goreleaser",
401
+ versioning: "npm"
402
+ },
403
+ "gradle/actions/setup-gradle": {
404
+ datasource: GradleVersionDatasource.id,
405
+ depName: "gradle",
406
+ packageName: "gradle/gradle",
407
+ versioning: id$1,
408
+ withSchema: valSchema("gradle-version")
409
+ },
410
+ "hashicorp/setup-packer": {
411
+ datasource: GithubReleasesDatasource.id,
412
+ depName: "packer",
413
+ packageName: "hashicorp/packer"
414
+ },
415
+ "hashicorp/setup-terraform": {
416
+ datasource: GithubReleasesDatasource.id,
417
+ depName: "terraform",
418
+ packageName: "hashicorp/terraform",
419
+ withSchema: valSchema("terraform_version")
420
+ },
421
+ "helm/chart-releaser-action": {
422
+ datasource: GithubReleasesDatasource.id,
423
+ depName: "chart-releaser",
424
+ packageName: "helm/chart-releaser"
425
+ },
249
426
  "helm/chart-testing-action": {
250
427
  datasource: GithubReleasesDatasource.id,
251
428
  depName: "chart-testing",
252
429
  packageName: "helm/chart-testing"
253
430
  },
431
+ "helm/kind-action": {
432
+ datasource: GithubReleasesDatasource.id,
433
+ packageName: "",
434
+ withSchema: KindActionWith
435
+ },
436
+ "j178/prek-action": {
437
+ datasource: GithubReleasesDatasource.id,
438
+ depName: "prek",
439
+ packageName: "j178/prek",
440
+ versioning: "npm",
441
+ withSchema: valSchema("prek-version")
442
+ },
254
443
  "jakebailey/pyright-action": {
255
444
  datasource: NpmDatasource.id,
256
445
  packageName: "pyright",
@@ -266,6 +455,27 @@ const knownActions = {
266
455
  packageName: "jdx/mise",
267
456
  withSchema: MiseWith
268
457
  },
458
+ "jfrog/setup-jfrog-cli": {
459
+ datasource: GithubReleasesDatasource.id,
460
+ depName: "jfrog-cli",
461
+ packageName: "jfrog/jfrog-cli"
462
+ },
463
+ "julia-actions/setup-julia": {
464
+ datasource: GithubReleasesDatasource.id,
465
+ depName: "julia",
466
+ packageName: "JuliaLang/julia"
467
+ },
468
+ "mozilla-actions/sccache-action": {
469
+ datasource: GithubReleasesDatasource.id,
470
+ depName: "sccache",
471
+ packageName: "mozilla/sccache"
472
+ },
473
+ "opentofu/setup-opentofu": {
474
+ datasource: GithubReleasesDatasource.id,
475
+ depName: "opentofu",
476
+ packageName: "opentofu/opentofu",
477
+ withSchema: valSchema("tofu_version")
478
+ },
269
479
  "oven-sh/setup-bun": {
270
480
  datasource: NpmDatasource.id,
271
481
  packageName: "bun",
@@ -275,6 +485,12 @@ const knownActions = {
275
485
  datasource: PypiDatasource.id,
276
486
  packageName: "pdm"
277
487
  },
488
+ "peaceiris/actions-hugo": {
489
+ datasource: GithubReleasesDatasource.id,
490
+ depName: "hugo",
491
+ packageName: "gohugoio/hugo",
492
+ withSchema: valSchema("hugo-version")
493
+ },
278
494
  "pnpm/action-setup": {
279
495
  datasource: NpmDatasource.id,
280
496
  packageName: "pnpm"
@@ -290,16 +506,38 @@ const knownActions = {
290
506
  packageName: "prefix-dev/pixi",
291
507
  withSchema: valSchema("pixi-version")
292
508
  },
509
+ "pulumi/actions": {
510
+ datasource: GithubReleasesDatasource.id,
511
+ depName: "pulumi",
512
+ packageName: "pulumi/pulumi",
513
+ withSchema: valSchema("pulumi-version")
514
+ },
515
+ "PyO3/maturin-action": {
516
+ datasource: PypiDatasource.id,
517
+ packageName: "maturin",
518
+ withSchema: valSchema("maturin-version")
519
+ },
293
520
  "pypa/hatch": {
294
521
  datasource: GithubReleasesDatasource.id,
295
522
  packageName: "pypa/hatch",
296
523
  extractVersion: "^hatch-(?<version>.+)$"
297
524
  },
525
+ "raven-actions/actionlint": {
526
+ datasource: GithubReleasesDatasource.id,
527
+ depName: "actionlint",
528
+ packageName: "rhysd/actionlint"
529
+ },
298
530
  "renovatebot/github-action": {
299
531
  datasource: DockerDatasource.id,
300
532
  packageName: "",
301
533
  withSchema: RenovateGithubActionWith
302
534
  },
535
+ "reviewdog/action-setup": {
536
+ datasource: GithubReleasesDatasource.id,
537
+ depName: "reviewdog",
538
+ packageName: "reviewdog/reviewdog",
539
+ withSchema: valSchema("reviewdog_version")
540
+ },
303
541
  "ruby/setup-ruby": {
304
542
  datasource: RubyVersionDatasource.id,
305
543
  packageName: "ruby",
@@ -315,6 +553,34 @@ const knownActions = {
315
553
  packageName: "sigstore/cosign",
316
554
  withSchema: valSchema("cosign-release")
317
555
  },
556
+ "snok/install-poetry": {
557
+ datasource: PypiDatasource.id,
558
+ packageName: "poetry"
559
+ },
560
+ "stCarolas/setup-maven": {
561
+ datasource: GithubReleasesDatasource.id,
562
+ depName: "maven",
563
+ packageName: "apache/maven",
564
+ extractVersion: "^maven-(?<version>.+)$",
565
+ versioning: "npm",
566
+ withSchema: valSchema("maven-version")
567
+ },
568
+ "subosito/flutter-action": {
569
+ datasource: GithubReleasesDatasource.id,
570
+ depName: "flutter",
571
+ packageName: "flutter/flutter",
572
+ withSchema: valSchema("flutter-version")
573
+ },
574
+ "supabase/setup-cli": {
575
+ datasource: NpmDatasource.id,
576
+ packageName: "supabase"
577
+ },
578
+ "terraform-linters/setup-tflint": {
579
+ datasource: GithubReleasesDatasource.id,
580
+ depName: "tflint",
581
+ packageName: "terraform-linters/tflint",
582
+ withSchema: TflintWith
583
+ },
318
584
  "UpCloudLtd/upcloud-cli-action": {
319
585
  datasource: GithubReleasesDatasource.id,
320
586
  packageName: "UpCloudLtd/upcloud-cli"
@@ -1 +1 @@
1
- {"version":3,"file":"known-actions.js","names":["nodeVersioning.id","condaVersioning.id"],"sources":["../../../../lib/modules/manager/github-actions/known-actions.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nimport { regEx } from '../../../util/regex.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { DotnetVersionDatasource } from '../../datasource/dotnet-version/index.ts';\nimport { GithubReleaseAttachmentsDatasource } from '../../datasource/github-release-attachments/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { JavaVersionDatasource } from '../../datasource/java-version/index.ts';\nimport { NodeVersionDatasource } from '../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport { RustVersionDatasource } from '../../datasource/rust-version/index.ts';\nimport * as condaVersioning from '../../versioning/conda/index.ts';\nimport * as nodeVersioning from '../../versioning/node/index.ts';\nimport * as npmVersioning from '../../versioning/npm/index.ts';\nimport { splitImageParts } from '../dockerfile/extract.ts';\nimport type { PackageDependency } from '../types.ts';\nimport type { ActionSchema, KnownActionConfig } from './types.ts';\n\nexport function actionSchema(\n name: string,\n { withSchema, ...cfg }: KnownActionConfig,\n): ActionSchema {\n return z\n .object({\n uses: matchAction(name),\n with: withSchema ?? VersionVal,\n })\n .transform(({ with: deps }) =>\n deps.map((dep) => {\n const merged = { ...cfg, ...dep };\n merged.depName ??= merged.packageName;\n return merged;\n }),\n );\n}\n\nfunction matchAction(action: string): z.ZodString {\n return z\n .string()\n .regex(regEx(`(?:https?://[^/]+/)?${RegExp.escape(action)}(?:@.+)?$`));\n}\n\nfunction parseValue(\n currentValue: string | undefined,\n isInvalid?: (val: string) => boolean,\n): PackageDependency {\n if (!currentValue) {\n return {\n skipStage: 'extract',\n skipReason: 'unspecified-version',\n depType: 'uses-with',\n };\n }\n if (isInvalid?.(currentValue) === true) {\n return {\n skipStage: 'extract',\n skipReason: 'invalid-version',\n depType: 'uses-with',\n currentValue,\n };\n }\n return { currentValue, depType: 'uses-with' };\n}\n\n/**\n * A single dependency, versioned by the given `with:` input.\n *\n * @param isInvalid should return `true` if the version is invalid and should be skipped\n */\nfunction valSchema(\n key: string,\n isInvalid?: (val: string) => boolean,\n): ActionSchema {\n return z\n .object({ [key]: z.string().optional() })\n .transform((val) => [parseValue(val[key], isInvalid)]);\n}\n\nconst VersionVal = valSchema('version');\n\n// Shared by the `actions/setup-{go,node,python}` entries below, whose\n// releases are published as `actions/{go,node,python}-versions` GitHub\n// releases, tagged like `20.11.0` or `20.11.0-1` (a build number suffix).\nconst actionsVersionsExtractVersion =\n '^(?<version>\\\\d+\\\\.\\\\d+\\\\.\\\\d+)(-\\\\d+)?$';\n\nconst InstallBinaryWith: ActionSchema = z\n .object({ repo: z.string(), tag: z.string() })\n .transform(({ repo, tag }) => [{ packageName: repo, ...parseValue(tag) }]);\n\nfunction parseImageValue(image: string | undefined): PackageDependency {\n if (!image) {\n return {\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'unspecified-version',\n };\n }\n\n const dep = splitImageParts(image);\n return {\n depType: 'uses-with',\n ...dep,\n ...(dep.skipReason ? { skipStage: 'extract' } : {}),\n };\n}\n\nconst EcsRenderTaskDefinitionWith: ActionSchema = z\n .object({ image: z.string().optional() })\n .transform(({ image }) => [parseImageValue(image)]);\n\nconst sha256Regex = regEx(/^[a-f0-9]{64}$/);\nconst MiseWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n sha256: z.string().optional(),\n })\n .transform(({ version, sha256 }) => [\n {\n ...parseValue(version),\n ...(sha256 && sha256Regex.test(sha256) ? { currentDigest: sha256 } : {}),\n },\n ]);\n\n// Runtimes installable by `pnpm/setup`, keyed by the name used in its\n// `runtime:` input. `bun` and `deno` reuse the datasources of their respective\n// `setup-*` actions below.\nconst pnpmRuntimes: Record<string, PackageDependency | undefined> = {\n node: { datasource: NodeVersionDatasource.id, packageName: 'node' },\n bun: { datasource: NpmDatasource.id, packageName: 'bun' },\n deno: { datasource: NpmDatasource.id, packageName: 'deno' },\n};\n\nfunction parsePnpmRuntime(runtime: string | undefined): PackageDependency[] {\n if (!runtime) {\n return [];\n }\n\n // `<name>` or `<name>@<version>`, matching pnpm's `packageManager` field syntax\n const [name, version] = runtime.split('@');\n const cfg = pnpmRuntimes[name];\n if (!cfg) {\n return [\n {\n packageName: name || runtime,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'invalid-name',\n },\n ];\n }\n\n return [{ ...cfg, ...parseValue(version) }];\n}\n\nconst PnpmSetupWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n runtime: z.string().optional(),\n })\n .transform(({ version, runtime }) => [\n parseValue(version),\n ...parsePnpmRuntime(runtime),\n ]);\n\n// Distributions whose version numbering we can reliably track via the\n// java-version datasource (which sources releases from Adoptium/Eclipse\n// Temurin). Other distributions may not follow the same release cadence\n// or versioning, so we don't attempt to track them.\nconst supportedJavaDistributions = new Set(['temurin', 'adopt']);\n\nconst SetupJavaWith: ActionSchema = z\n .object({\n distribution: z.string().optional(),\n 'java-version': z.string().optional(),\n 'java-package': z.string().optional(),\n })\n .transform(\n ({\n distribution,\n 'java-version': version,\n 'java-package': javaPackage,\n }) => {\n const packageName = javaPackage?.startsWith('jre')\n ? 'java-jre'\n : 'java-jdk';\n\n if (\n !distribution ||\n !supportedJavaDistributions.has(distribution.toLowerCase())\n ) {\n return [\n {\n packageName,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'unsupported',\n },\n ];\n }\n\n return [{ packageName, ...parseValue(version) }];\n },\n );\n\nconst renovateGithubActionDefaultImage = 'ghcr.io/renovatebot/renovate';\nconst RenovateGithubActionWith: ActionSchema = z\n .object({\n 'renovate-version': z.string().optional(),\n 'renovate-image': z.string().optional(),\n })\n .transform(({ 'renovate-version': version, 'renovate-image': image }) => {\n const [packageName, currentDigest] = (\n image ?? renovateGithubActionDefaultImage\n ).split('@');\n return [\n {\n packageName,\n ...(currentDigest ? { currentDigest } : {}),\n ...parseValue(version),\n },\n ];\n });\n\n/**\n * Community-maintained and first-party (GitHub's own `actions/*`) Actions\n * with known version input schemas.\n */\nexport const knownActions: Record<string, KnownActionConfig> = {\n // https://github.com/actions/setup-dotnet\n 'actions/setup-dotnet': {\n datasource: DotnetVersionDatasource.id,\n packageName: 'dotnet-sdk',\n withSchema: valSchema('dotnet-version', (val) => val.includes('\\n')),\n },\n // https://github.com/actions/setup-go\n 'actions/setup-go': {\n datasource: GithubReleasesDatasource.id,\n depName: 'go',\n packageName: 'actions/go-versions',\n versioning: npmVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('go-version'),\n },\n // https://github.com/actions/setup-java\n 'actions/setup-java': {\n datasource: JavaVersionDatasource.id,\n packageName: '', // determined from `distribution`/`java-package` inputs\n withSchema: SetupJavaWith,\n },\n // https://github.com/actions/setup-node\n 'actions/setup-node': {\n datasource: GithubReleasesDatasource.id,\n depName: 'node',\n packageName: 'actions/node-versions',\n versioning: nodeVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('node-version'),\n },\n // https://github.com/actions/setup-python\n 'actions/setup-python': {\n datasource: GithubReleasesDatasource.id,\n depName: 'python',\n packageName: 'actions/python-versions',\n versioning: npmVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('python-version'),\n },\n // https://github.com/aquasecurity/setup-trivy\n 'aquasecurity/setup-trivy': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/aquasecurity/trivy-action\n 'aquasecurity/trivy-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/astral-sh/setup-uv\n 'astral-sh/setup-uv': {\n datasource: GithubReleasesDatasource.id,\n versioning: npmVersioning.id,\n packageName: 'astral-sh/uv',\n },\n // https://github.com/aws-actions/amazon-ecs-render-task-definition\n 'aws-actions/amazon-ecs-render-task-definition': {\n datasource: DockerDatasource.id,\n packageName: '', // determined from `image` input\n withSchema: EcsRenderTaskDefinitionWith,\n },\n 'azure/setup-helm': {\n datasource: GithubReleasesDatasource.id,\n depName: 'helm',\n packageName: 'helm/helm',\n },\n // https://github.com/azure/setup-helm\n 'denoland/setup-deno': {\n datasource: NpmDatasource.id,\n packageName: 'deno',\n withSchema: valSchema('deno-version'),\n },\n // https://github.com/docker/setup-buildx-action\n 'docker/setup-buildx-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'buildx',\n packageName: 'docker/buildx',\n },\n // https://github.com/docker/setup-compose-action\n 'docker/setup-compose-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'docker/compose',\n },\n // https://github.com/docker/setup-docker-action\n 'docker/setup-docker-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'docker',\n packageName: 'moby/moby',\n extractVersion: '^docker-(?<version>.+)$',\n },\n // https://github.com/dtolnay/rust-toolchain\n 'dtolnay/rust-toolchain': {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n withSchema: valSchema('toolchain'),\n },\n // https://github.com/expo/expo-github-action\n 'expo/expo-github-action': {\n datasource: NpmDatasource.id,\n packageName: 'eas-cli',\n withSchema: valSchema('eas-version'),\n },\n 'golangci/golangci-lint-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'golangci/golangci-lint',\n },\n // https://github.com/helm/chart-testing-action\n 'helm/chart-testing-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'chart-testing',\n packageName: 'helm/chart-testing',\n },\n 'jakebailey/pyright-action': {\n datasource: NpmDatasource.id,\n packageName: 'pyright',\n withSchema: valSchema('version', (val) => val === 'PATH'),\n },\n 'jaxxstorm/action-install-gh-release': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'jdx/mise-action': {\n datasource: GithubReleaseAttachmentsDatasource.id,\n packageName: 'jdx/mise',\n withSchema: MiseWith,\n },\n 'oven-sh/setup-bun': {\n datasource: NpmDatasource.id,\n packageName: 'bun',\n withSchema: valSchema('bun-version'),\n },\n 'pdm-project/setup-pdm': {\n datasource: PypiDatasource.id,\n packageName: 'pdm',\n },\n 'pnpm/action-setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n },\n 'pnpm/setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n withSchema: PnpmSetupWith,\n },\n 'prefix-dev/setup-pixi': {\n datasource: GithubReleasesDatasource.id,\n versioning: condaVersioning.id,\n packageName: 'prefix-dev/pixi',\n withSchema: valSchema('pixi-version'),\n },\n // https://github.com/pypa/hatch/tree/install\n 'pypa/hatch': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pypa/hatch',\n // Strip hatch- prefix from release tags\n extractVersion: '^hatch-(?<version>.+)$',\n },\n // https://github.com/renovatebot/github-action\n 'renovatebot/github-action': {\n datasource: DockerDatasource.id,\n packageName: '', // determined from `renovate-image` input, if set\n withSchema: RenovateGithubActionWith,\n },\n 'ruby/setup-ruby': {\n datasource: RubyVersionDatasource.id,\n packageName: 'ruby',\n withSchema: valSchema('ruby-version'),\n },\n 'sigoden/install-binary': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'sigstore/cosign-installer': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sigstore/cosign',\n withSchema: valSchema('cosign-release'),\n },\n 'UpCloudLtd/upcloud-cli-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'UpCloudLtd/upcloud-cli',\n },\n 'zizmorcore/zizmor-action': {\n datasource: DockerDatasource.id,\n packageName: 'ghcr.io/zizmorcore/zizmor',\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"known-actions.js","names":["nodeVersioning.id","gradleVersioning.id","condaVersioning.id"],"sources":["../../../../lib/modules/manager/github-actions/known-actions.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nimport { regEx } from '../../../util/regex.ts';\nimport { DartVersionDatasource } from '../../datasource/dart-version/index.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { DotnetVersionDatasource } from '../../datasource/dotnet-version/index.ts';\nimport { GithubReleaseAttachmentsDatasource } from '../../datasource/github-release-attachments/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { GradleVersionDatasource } from '../../datasource/gradle-version/index.ts';\nimport { JavaVersionDatasource } from '../../datasource/java-version/index.ts';\nimport { NodeVersionDatasource } from '../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport { RustVersionDatasource } from '../../datasource/rust-version/index.ts';\nimport * as condaVersioning from '../../versioning/conda/index.ts';\nimport * as gradleVersioning from '../../versioning/gradle/index.ts';\nimport * as nodeVersioning from '../../versioning/node/index.ts';\nimport * as npmVersioning from '../../versioning/npm/index.ts';\nimport { splitImageParts } from '../dockerfile/extract.ts';\nimport type { PackageDependency } from '../types.ts';\nimport type { ActionSchema, KnownActionConfig } from './types.ts';\n\nexport function actionSchema(\n name: string,\n { withSchema, ...cfg }: KnownActionConfig,\n): ActionSchema {\n return z\n .object({\n uses: matchAction(name),\n with: withSchema ?? VersionVal,\n })\n .transform(({ with: deps }) =>\n deps.map((dep) => {\n const merged = { ...cfg, ...dep };\n merged.depName ??= merged.packageName;\n return merged;\n }),\n );\n}\n\nfunction matchAction(action: string): z.ZodString {\n return z\n .string()\n .regex(regEx(`(?:https?://[^/]+/)?${RegExp.escape(action)}(?:@.+)?$`));\n}\n\nfunction parseValue(\n currentValue: string | undefined,\n isInvalid?: (val: string) => boolean,\n): PackageDependency {\n if (!currentValue) {\n return {\n skipStage: 'extract',\n skipReason: 'unspecified-version',\n depType: 'uses-with',\n };\n }\n if (isInvalid?.(currentValue) === true) {\n return {\n skipStage: 'extract',\n skipReason: 'invalid-version',\n depType: 'uses-with',\n currentValue,\n };\n }\n return { currentValue, depType: 'uses-with' };\n}\n\n/**\n * A single dependency, versioned by the given `with:` input.\n *\n * @param isInvalid should return `true` if the version is invalid and should be skipped\n */\nfunction valSchema(\n key: string,\n isInvalid?: (val: string) => boolean,\n): ActionSchema {\n return z\n .object({ [key]: z.string().optional() })\n .transform((val) => [parseValue(val[key], isInvalid)]);\n}\n\nconst VersionVal = valSchema('version');\n\n// Shared by the `actions/setup-{go,node,python}` entries below, whose\n// releases are published as `actions/{go,node,python}-versions` GitHub\n// releases, tagged like `20.11.0` or `20.11.0-1` (a build number suffix).\nconst actionsVersionsExtractVersion =\n '^(?<version>\\\\d+\\\\.\\\\d+\\\\.\\\\d+)(-\\\\d+)?$';\n\n// `actions-rust-lang/setup-rust-toolchain`'s `toolchain` input is a\n// comma-separated list of toolchains; only the LAST one becomes the active\n// default toolchain, so that's the only one worth tracking.\nconst SetupRustToolchainWith: ActionSchema = z\n .object({ toolchain: z.string().optional() })\n .transform(({ toolchain }) => [\n parseValue(toolchain?.split(',').pop()?.trim()),\n ]);\n\nconst InstallBinaryWith: ActionSchema = z\n .object({ repo: z.string(), tag: z.string() })\n .transform(({ repo, tag }) => [{ packageName: repo, ...parseValue(tag) }]);\n\nfunction parseImageValue(image: string | undefined): PackageDependency {\n if (!image) {\n return {\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'unspecified-version',\n };\n }\n\n const dep = splitImageParts(image);\n return {\n depType: 'uses-with',\n ...dep,\n ...(dep.skipReason ? { skipStage: 'extract' } : {}),\n };\n}\n\nconst EcsRenderTaskDefinitionWith: ActionSchema = z\n .object({ image: z.string().optional() })\n .transform(({ image }) => [parseImageValue(image)]);\n\nconst sha256Regex = regEx(/^[a-f0-9]{64}$/);\nconst MiseWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n sha256: z.string().optional(),\n })\n .transform(({ version, sha256 }) => [\n {\n ...parseValue(version),\n ...(sha256 && sha256Regex.test(sha256) ? { currentDigest: sha256 } : {}),\n },\n ]);\n\n// Runtimes installable by `pnpm/setup`, keyed by the name used in its\n// `runtime:` input. `bun` and `deno` reuse the datasources of their respective\n// `setup-*` actions below.\nconst pnpmRuntimes: Record<string, PackageDependency | undefined> = {\n node: { datasource: NodeVersionDatasource.id, packageName: 'node' },\n bun: { datasource: NpmDatasource.id, packageName: 'bun' },\n deno: { datasource: NpmDatasource.id, packageName: 'deno' },\n};\n\nfunction parsePnpmRuntime(runtime: string | undefined): PackageDependency[] {\n if (!runtime) {\n return [];\n }\n\n // `<name>` or `<name>@<version>`, matching pnpm's `packageManager` field syntax\n const [name, version] = runtime.split('@');\n const cfg = pnpmRuntimes[name];\n if (!cfg) {\n return [\n {\n packageName: name || runtime,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'invalid-name',\n },\n ];\n }\n\n return [{ ...cfg, ...parseValue(version) }];\n}\n\nconst PnpmSetupWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n runtime: z.string().optional(),\n })\n .transform(({ version, runtime }) => [\n parseValue(version),\n ...parsePnpmRuntime(runtime),\n ]);\n\n// Distributions whose version numbering we can reliably track via the\n// java-version datasource (which sources releases from Adoptium/Eclipse\n// Temurin). Other distributions may not follow the same release cadence\n// or versioning, so we don't attempt to track them.\nconst supportedJavaDistributions = new Set(['temurin', 'adopt']);\n\nconst SetupJavaWith: ActionSchema = z\n .object({\n distribution: z.string().optional(),\n 'java-version': z.string().optional(),\n 'java-package': z.string().optional(),\n })\n .transform(\n ({\n distribution,\n 'java-version': version,\n 'java-package': javaPackage,\n }) => {\n const packageName = javaPackage?.startsWith('jre')\n ? 'java-jre'\n : 'java-jdk';\n\n if (\n !distribution ||\n !supportedJavaDistributions.has(distribution.toLowerCase())\n ) {\n return [\n {\n packageName,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'unsupported',\n },\n ];\n }\n\n return [{ packageName, ...parseValue(version) }];\n },\n );\n\n// `'latest'` is a valid, documented value for `tflint_version` (it's also the\n// action's own default), but it isn't a version we can pin/bump, so treat it\n// as present-but-unsupported rather than as an invalid value.\nconst TflintWith: ActionSchema = z\n .object({ tflint_version: z.string().optional() })\n .transform(({ tflint_version: version }) => {\n if (version === 'latest') {\n return [\n {\n currentValue: version,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'unsupported-version',\n },\n ];\n }\n return [parseValue(version)];\n });\n\n// `helm/kind-action` can yield up to 3 dependencies from a single step: the\n// `kind` binary itself, the `kindest/node` image it boots, and (optionally) a\n// pinned `kubectl` binary. All 3 inputs are optional, so only emit a\n// dependency for the ones a workflow actually sets.\nconst KindActionWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n node_image: z.string().optional(),\n kubectl_version: z.string().optional(),\n })\n .transform(({ version, node_image, kubectl_version }) => {\n const deps: PackageDependency[] = [];\n\n if (version) {\n deps.push({\n packageName: 'kubernetes-sigs/kind',\n ...parseValue(version),\n });\n }\n\n if (node_image) {\n // `node_image` may be pinned by digest (e.g.\n // `kindest/node:v1.31.0@sha256:...`), so reuse the same Docker\n // image-reference parsing as `aws-actions/amazon-ecs-render-task-definition`\n // rather than naively splitting on `:`.\n deps.push({\n datasource: DockerDatasource.id,\n ...parseImageValue(node_image),\n });\n }\n\n if (kubectl_version) {\n deps.push({\n packageName: 'kubernetes/kubernetes',\n ...parseValue(kubectl_version),\n });\n }\n\n return deps;\n });\n\n// `erlef/setup-beam` can yield up to 4 dependencies from a single step: OTP,\n// Elixir, Gleam, and rebar3. All inputs are optional, so only emit a\n// dependency for the ones a workflow actually sets.\nconst ErlefSetupBeamWith: ActionSchema = z\n .object({\n 'otp-version': z.string().optional(),\n 'elixir-version': z.string().optional(),\n 'gleam-version': z.string().optional(),\n 'rebar3-version': z.string().optional(),\n })\n .transform(\n ({\n 'otp-version': otpVersion,\n 'elixir-version': elixirVersion,\n 'gleam-version': gleamVersion,\n 'rebar3-version': rebar3Version,\n }) => {\n const deps: PackageDependency[] = [];\n\n if (otpVersion) {\n deps.push({\n packageName: 'erlang/otp',\n // erlang/otp tags releases like `OTP-27.1.2`\n extractVersion: '^OTP-(?<version>.+)$',\n ...parseValue(otpVersion),\n });\n }\n\n if (elixirVersion) {\n deps.push({\n packageName: 'elixir-lang/elixir',\n ...parseValue(elixirVersion),\n });\n }\n\n if (gleamVersion) {\n deps.push({\n packageName: 'gleam-lang/gleam',\n ...parseValue(gleamVersion),\n });\n }\n\n if (rebar3Version) {\n deps.push({\n packageName: 'erlang/rebar3',\n ...parseValue(rebar3Version),\n });\n }\n\n return deps;\n },\n );\n\nconst renovateGithubActionDefaultImage = 'ghcr.io/renovatebot/renovate';\nconst RenovateGithubActionWith: ActionSchema = z\n .object({\n 'renovate-version': z.string().optional(),\n 'renovate-image': z.string().optional(),\n })\n .transform(({ 'renovate-version': version, 'renovate-image': image }) => {\n const [packageName, currentDigest] = (\n image ?? renovateGithubActionDefaultImage\n ).split('@');\n return [\n {\n packageName,\n ...(currentDigest ? { currentDigest } : {}),\n ...parseValue(version),\n },\n ];\n });\n\n/**\n * Community-maintained and first-party (GitHub's own `actions/*`) Actions\n * with known version input schemas.\n */\nexport const knownActions: Record<string, KnownActionConfig> = {\n // https://github.com/abatilo/actions-poetry\n 'abatilo/actions-poetry': {\n datasource: PypiDatasource.id,\n packageName: 'poetry',\n withSchema: valSchema('poetry-version'),\n },\n // https://github.com/actions-rust-lang/setup-rust-toolchain\n 'actions-rust-lang/setup-rust-toolchain': {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n withSchema: SetupRustToolchainWith,\n },\n // https://github.com/actions/setup-dotnet\n 'actions/setup-dotnet': {\n datasource: DotnetVersionDatasource.id,\n packageName: 'dotnet-sdk',\n withSchema: valSchema('dotnet-version', (val) => val.includes('\\n')),\n },\n // https://github.com/actions/setup-go\n 'actions/setup-go': {\n datasource: GithubReleasesDatasource.id,\n depName: 'go',\n packageName: 'actions/go-versions',\n versioning: npmVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('go-version'),\n },\n // https://github.com/actions/setup-java\n 'actions/setup-java': {\n datasource: JavaVersionDatasource.id,\n packageName: '', // determined from `distribution`/`java-package` inputs\n withSchema: SetupJavaWith,\n },\n // https://github.com/actions/setup-node\n 'actions/setup-node': {\n datasource: GithubReleasesDatasource.id,\n depName: 'node',\n packageName: 'actions/node-versions',\n versioning: nodeVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('node-version'),\n },\n // https://github.com/actions/setup-python\n 'actions/setup-python': {\n datasource: GithubReleasesDatasource.id,\n depName: 'python',\n packageName: 'actions/python-versions',\n versioning: npmVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('python-version'),\n },\n // https://github.com/aquaproj/aqua-installer\n 'aquaproj/aqua-installer': {\n datasource: GithubReleasesDatasource.id,\n depName: 'aqua',\n packageName: 'aquaproj/aqua',\n withSchema: valSchema('aqua_version'),\n },\n // https://github.com/aquasecurity/setup-trivy\n 'aquasecurity/setup-trivy': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/aquasecurity/trivy-action\n 'aquasecurity/trivy-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/astral-sh/ruff-action\n 'astral-sh/ruff-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'ruff',\n packageName: 'astral-sh/ruff',\n },\n // https://github.com/astral-sh/setup-uv\n 'astral-sh/setup-uv': {\n datasource: GithubReleasesDatasource.id,\n versioning: npmVersioning.id,\n packageName: 'astral-sh/uv',\n },\n // https://github.com/aws-actions/amazon-ecs-render-task-definition\n 'aws-actions/amazon-ecs-render-task-definition': {\n datasource: DockerDatasource.id,\n packageName: '', // determined from `image` input\n withSchema: EcsRenderTaskDefinitionWith,\n },\n 'azure/setup-helm': {\n datasource: GithubReleasesDatasource.id,\n depName: 'helm',\n packageName: 'helm/helm',\n },\n // https://github.com/azure/setup-kubectl\n 'azure/setup-kubectl': {\n datasource: GithubReleasesDatasource.id,\n depName: 'kubectl',\n packageName: 'kubernetes/kubernetes',\n },\n // https://github.com/biomejs/setup-biome\n 'biomejs/setup-biome': {\n datasource: NpmDatasource.id,\n packageName: '@biomejs/biome',\n },\n // https://github.com/bufbuild/buf-setup-action\n 'bufbuild/buf-setup-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'buf',\n packageName: 'bufbuild/buf',\n },\n // https://github.com/cargo-bins/cargo-binstall\n 'cargo-bins/cargo-binstall': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cargo-bins/cargo-binstall',\n // the repo also publishes releases for its internal sub-crates (e.g.\n // `detect-targets-v0.1.91`, `binstalk-v0.28.81`) — only match the bare\n // main-tool release tag\n extractVersion: '^v(?<version>\\\\d+\\\\.\\\\d+\\\\.\\\\d+)$',\n },\n // https://github.com/cloudflare/wrangler-action\n 'cloudflare/wrangler-action': {\n datasource: NpmDatasource.id,\n packageName: 'wrangler',\n withSchema: valSchema('wranglerVersion'),\n },\n // https://github.com/cue-lang/setup-cue\n 'cue-lang/setup-cue': {\n datasource: GithubReleasesDatasource.id,\n depName: 'cue',\n packageName: 'cue-lang/cue',\n },\n // https://github.com/cycjimmy/semantic-release-action\n 'cycjimmy/semantic-release-action': {\n datasource: NpmDatasource.id,\n packageName: 'semantic-release',\n // the action's docs describe `semantic_version` as a version range, not\n // a pinned exact version\n versioning: npmVersioning.id,\n withSchema: valSchema('semantic_version'),\n },\n // https://github.com/dagger/dagger-for-github\n 'dagger/dagger-for-github': {\n datasource: GithubReleasesDatasource.id,\n depName: 'dagger',\n packageName: 'dagger/dagger',\n // the repo also publishes per-SDK/component tags sharing the same\n // version (e.g. `sdk/typescript/v0.21.9`, `helm/chart/v0.21.9`) — only\n // match the bare release tag\n extractVersion: '^v(?<version>\\\\d+\\\\..*)$',\n },\n // https://github.com/dart-lang/setup-dart\n 'dart-lang/setup-dart': {\n datasource: DartVersionDatasource.id,\n depName: 'dart',\n packageName: 'dart-lang/sdk',\n withSchema: valSchema('sdk'),\n },\n // https://github.com/azure/setup-helm\n 'denoland/setup-deno': {\n datasource: NpmDatasource.id,\n packageName: 'deno',\n withSchema: valSchema('deno-version'),\n },\n // https://github.com/docker/setup-buildx-action\n 'docker/setup-buildx-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'buildx',\n packageName: 'docker/buildx',\n },\n // https://github.com/docker/setup-compose-action\n 'docker/setup-compose-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'docker/compose',\n },\n // https://github.com/docker/setup-docker-action\n 'docker/setup-docker-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'docker',\n packageName: 'moby/moby',\n extractVersion: '^docker-(?<version>.+)$',\n },\n // https://github.com/dtolnay/rust-toolchain\n 'dtolnay/rust-toolchain': {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n withSchema: valSchema('toolchain'),\n },\n // https://github.com/erlef/setup-beam\n 'erlef/setup-beam': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: OTP, Elixir, Gleam, rebar3\n withSchema: ErlefSetupBeamWith,\n },\n // https://github.com/expo/expo-github-action\n 'expo/expo-github-action': {\n datasource: NpmDatasource.id,\n packageName: 'eas-cli',\n withSchema: valSchema('eas-version'),\n },\n // https://github.com/extractions/setup-just\n 'extractions/setup-just': {\n datasource: GithubReleasesDatasource.id,\n depName: 'just',\n packageName: 'casey/just',\n withSchema: valSchema('just-version'),\n },\n // https://github.com/foundry-rs/foundry-toolchain\n 'foundry-rs/foundry-toolchain': {\n datasource: GithubReleasesDatasource.id,\n depName: 'foundry',\n packageName: 'foundry-rs/foundry',\n },\n // https://github.com/GitTools/actions (there is no root-level Action, only\n // subpaths are usable; the sibling `GitTools/actions/gitreleasemanager/setup`\n // is a separate, unrelated Action)\n 'GitTools/actions/gitversion/setup': {\n datasource: GithubReleasesDatasource.id,\n depName: 'gitversion',\n packageName: 'GitTools/GitVersion',\n withSchema: valSchema('versionSpec'),\n },\n 'golangci/golangci-lint-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'golangci/golangci-lint',\n },\n // https://github.com/goreleaser/goreleaser-action\n 'goreleaser/goreleaser-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'goreleaser/goreleaser',\n // the default value (`~> v2`) is itself a range, not a pinned version\n versioning: npmVersioning.id,\n },\n // https://github.com/gradle/actions (there is no root-level Action, only\n // subpaths such as `setup-gradle` are usable)\n 'gradle/actions/setup-gradle': {\n datasource: GradleVersionDatasource.id,\n depName: 'gradle',\n packageName: 'gradle/gradle',\n versioning: gradleVersioning.id,\n withSchema: valSchema('gradle-version'),\n },\n // https://github.com/hashicorp/setup-packer\n 'hashicorp/setup-packer': {\n datasource: GithubReleasesDatasource.id,\n depName: 'packer',\n packageName: 'hashicorp/packer',\n },\n // https://github.com/hashicorp/setup-terraform\n 'hashicorp/setup-terraform': {\n datasource: GithubReleasesDatasource.id,\n depName: 'terraform',\n packageName: 'hashicorp/terraform',\n withSchema: valSchema('terraform_version'),\n },\n // https://github.com/helm/chart-releaser-action\n 'helm/chart-releaser-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'chart-releaser',\n packageName: 'helm/chart-releaser',\n },\n // https://github.com/helm/chart-testing-action\n 'helm/chart-testing-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'chart-testing',\n packageName: 'helm/chart-testing',\n },\n // https://github.com/helm/kind-action\n 'helm/kind-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: `version`, `node_image`, `kubectl_version`\n withSchema: KindActionWith,\n },\n // https://github.com/j178/prek-action\n 'j178/prek-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'prek',\n packageName: 'j178/prek',\n // the value may be a semver range (e.g. `0.3.x`, `<=1.0.0`), not just a\n // pinned version\n versioning: npmVersioning.id,\n withSchema: valSchema('prek-version'),\n },\n 'jakebailey/pyright-action': {\n datasource: NpmDatasource.id,\n packageName: 'pyright',\n withSchema: valSchema('version', (val) => val === 'PATH'),\n },\n 'jaxxstorm/action-install-gh-release': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'jdx/mise-action': {\n datasource: GithubReleaseAttachmentsDatasource.id,\n packageName: 'jdx/mise',\n withSchema: MiseWith,\n },\n // https://github.com/jfrog/setup-jfrog-cli\n 'jfrog/setup-jfrog-cli': {\n datasource: GithubReleasesDatasource.id,\n depName: 'jfrog-cli',\n packageName: 'jfrog/jfrog-cli',\n },\n // https://github.com/julia-actions/setup-julia\n 'julia-actions/setup-julia': {\n datasource: GithubReleasesDatasource.id,\n depName: 'julia',\n packageName: 'JuliaLang/julia',\n },\n // https://github.com/mozilla-actions/sccache-action\n 'mozilla-actions/sccache-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'sccache',\n packageName: 'mozilla/sccache',\n },\n // https://github.com/opentofu/setup-opentofu\n 'opentofu/setup-opentofu': {\n datasource: GithubReleasesDatasource.id,\n depName: 'opentofu',\n packageName: 'opentofu/opentofu',\n withSchema: valSchema('tofu_version'),\n },\n 'oven-sh/setup-bun': {\n datasource: NpmDatasource.id,\n packageName: 'bun',\n withSchema: valSchema('bun-version'),\n },\n 'pdm-project/setup-pdm': {\n datasource: PypiDatasource.id,\n packageName: 'pdm',\n },\n // https://github.com/peaceiris/actions-hugo\n 'peaceiris/actions-hugo': {\n datasource: GithubReleasesDatasource.id,\n depName: 'hugo',\n packageName: 'gohugoio/hugo',\n withSchema: valSchema('hugo-version'),\n },\n 'pnpm/action-setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n },\n 'pnpm/setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n withSchema: PnpmSetupWith,\n },\n 'prefix-dev/setup-pixi': {\n datasource: GithubReleasesDatasource.id,\n versioning: condaVersioning.id,\n packageName: 'prefix-dev/pixi',\n withSchema: valSchema('pixi-version'),\n },\n // https://github.com/pulumi/actions\n 'pulumi/actions': {\n datasource: GithubReleasesDatasource.id,\n depName: 'pulumi',\n packageName: 'pulumi/pulumi',\n withSchema: valSchema('pulumi-version'),\n },\n // https://github.com/PyO3/maturin-action\n 'PyO3/maturin-action': {\n datasource: PypiDatasource.id,\n packageName: 'maturin',\n withSchema: valSchema('maturin-version'),\n },\n // https://github.com/pypa/hatch/tree/install\n 'pypa/hatch': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pypa/hatch',\n // Strip hatch- prefix from release tags\n extractVersion: '^hatch-(?<version>.+)$',\n },\n // https://github.com/raven-actions/actionlint\n 'raven-actions/actionlint': {\n datasource: GithubReleasesDatasource.id,\n depName: 'actionlint',\n packageName: 'rhysd/actionlint',\n },\n // https://github.com/renovatebot/github-action\n 'renovatebot/github-action': {\n datasource: DockerDatasource.id,\n packageName: '', // determined from `renovate-image` input, if set\n withSchema: RenovateGithubActionWith,\n },\n // https://github.com/reviewdog/action-setup\n 'reviewdog/action-setup': {\n datasource: GithubReleasesDatasource.id,\n depName: 'reviewdog',\n packageName: 'reviewdog/reviewdog',\n withSchema: valSchema('reviewdog_version'),\n },\n 'ruby/setup-ruby': {\n datasource: RubyVersionDatasource.id,\n packageName: 'ruby',\n withSchema: valSchema('ruby-version'),\n },\n 'sigoden/install-binary': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'sigstore/cosign-installer': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sigstore/cosign',\n withSchema: valSchema('cosign-release'),\n },\n // https://github.com/snok/install-poetry\n 'snok/install-poetry': {\n datasource: PypiDatasource.id,\n packageName: 'poetry',\n },\n // https://github.com/stCarolas/setup-maven\n 'stCarolas/setup-maven': {\n datasource: GithubReleasesDatasource.id,\n depName: 'maven',\n packageName: 'apache/maven',\n // apache/maven tags its releases as `maven-X.Y.Z`\n extractVersion: '^maven-(?<version>.+)$',\n // the input also documents range/glob specs (e.g. `10.x`, `>=10.15.0`),\n // not just pinned versions\n versioning: npmVersioning.id,\n withSchema: valSchema('maven-version'),\n },\n // https://github.com/subosito/flutter-action\n 'subosito/flutter-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'flutter',\n packageName: 'flutter/flutter',\n withSchema: valSchema('flutter-version'),\n },\n // https://github.com/supabase/setup-cli\n 'supabase/setup-cli': {\n datasource: NpmDatasource.id,\n packageName: 'supabase',\n },\n // https://github.com/terraform-linters/setup-tflint\n 'terraform-linters/setup-tflint': {\n datasource: GithubReleasesDatasource.id,\n depName: 'tflint',\n packageName: 'terraform-linters/tflint',\n withSchema: TflintWith,\n },\n 'UpCloudLtd/upcloud-cli-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'UpCloudLtd/upcloud-cli',\n },\n 'zizmorcore/zizmor-action': {\n datasource: DockerDatasource.id,\n packageName: 'ghcr.io/zizmorcore/zizmor',\n },\n};\n"],"mappings":"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"}
@@ -93,6 +93,7 @@ async function extractAllPackageFiles(config, packageFiles) {
93
93
  filesToExamine.push(file);
94
94
  }
95
95
  const result = extractPackageFile(content, file, config);
96
+ // v8 ignore else -- needs a listed file that yields no deps
96
97
  if (result !== null) results.push({
97
98
  packageFile: file,
98
99
  deps: result.deps
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","names":["semverPartialId"],"sources":["../../../../lib/modules/manager/gitlabci/extract.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { Result } from '../../../util/result.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport { id as semverPartialId } from '../../versioning/semver-partial/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../types.ts';\nimport {\n GitlabDocument,\n Job,\n Jobs,\n MultiDocumentLocalIncludes,\n} from './schema.ts';\nimport { getGitlabDep } from './utils.ts';\n\n// See https://docs.gitlab.com/ee/ci/components/index.html#use-a-component\nconst componentReferenceRegex = regEx(\n /(?<fqdn>[^/]+)\\/(?<projectPath>.+)\\/(?:.+)@(?<specificVersion>.+)/,\n);\n\nfunction extractDepFromIncludeComponent(\n component: string,\n registryAliases?: Record<string, string>,\n): PackageDependency | null {\n let componentUrl = component;\n if (registryAliases) {\n for (const key in registryAliases) {\n componentUrl = componentUrl.replace(key, registryAliases[key]);\n }\n }\n const componentReference = componentReferenceRegex.exec(componentUrl)?.groups;\n if (!componentReference) {\n logger.debug(\n { componentReference: componentUrl },\n 'Ignoring malformed component reference',\n );\n return null;\n }\n const projectPathParts = componentReference.projectPath.split('/');\n if (projectPathParts.length < 2) {\n logger.debug(\n { componentReference: componentUrl },\n 'Ignoring component reference with incomplete project path',\n );\n return null;\n }\n\n const dep: PackageDependency = {\n datasource: GitlabTagsDatasource.id,\n depName: componentReference.projectPath,\n depType: 'repository',\n currentValue: componentReference.specificVersion,\n registryUrls: [`https://${componentReference.fqdn}`],\n versioning: semverPartialId,\n };\n return dep;\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n config: ExtractConfig,\n): PackageFileContent | null {\n const deps: PackageDependency[] = [];\n try {\n const docs = parseYaml(content, { uniqueKeys: false });\n\n for (const doc of docs) {\n const topLevel = Job.parse(doc);\n const jobs = Jobs.parse(doc);\n\n for (const job of [topLevel, ...jobs]) {\n const { image, services } = job;\n\n if (image) {\n const dep = getGitlabDep(image.value, config.registryAliases);\n dep.depType = image.type;\n deps.push(dep);\n }\n\n for (const service of services) {\n const dep = getGitlabDep(service, config.registryAliases);\n dep.depType = 'service-image';\n deps.push(dep);\n }\n }\n\n const includedComponents = GitlabDocument.parse(doc);\n for (const includedComponent of includedComponents) {\n const dep = extractDepFromIncludeComponent(\n includedComponent,\n config.registryAliases,\n );\n if (dep) {\n deps.push(dep);\n }\n }\n }\n } catch (err) /* istanbul ignore next */ {\n if (err.stack?.startsWith('YAMLException:')) {\n logger.debug(\n { err, packageFile },\n 'YAML exception extracting GitLab CI includes',\n );\n } else {\n logger.debug(\n { err, packageFile },\n 'Error extracting GitLab CI dependencies',\n );\n }\n }\n\n return deps.length ? { deps } : null;\n}\n\nexport async function extractAllPackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[] | null> {\n const filesToExamine = [...packageFiles];\n const seen = new Set<string>(packageFiles);\n const results: PackageFile[] = [];\n\n // extract all includes from the files\n while (filesToExamine.length > 0) {\n const file = filesToExamine.pop()!;\n\n const content = await readLocalFile(file, 'utf8');\n if (!content) {\n logger.debug(\n { packageFile: file },\n `Empty or non existent gitlabci file`,\n );\n continue;\n }\n\n const { val: docs, err } = Result.wrap(() =>\n parseYaml(content, { uniqueKeys: false }),\n ).unwrap();\n\n if (err) {\n logger.debug(\n { err, packageFile: file },\n 'Error extracting GitLab CI dependencies',\n );\n continue;\n }\n\n const localIncludes = MultiDocumentLocalIncludes.parse(docs);\n for (const file of localIncludes) {\n if (!seen.has(file)) {\n seen.add(file);\n filesToExamine.push(file);\n }\n }\n\n const result = extractPackageFile(content, file, config);\n if (result !== null) {\n results.push({\n packageFile: file,\n deps: result.deps,\n });\n }\n }\n\n logger.trace(\n { packageFiles, files: filesToExamine.entries() },\n 'extracted all GitLab CI files',\n );\n\n if (!results.length) {\n return null;\n }\n\n return results;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","names":["semverPartialId"],"sources":["../../../../lib/modules/manager/gitlabci/extract.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { Result } from '../../../util/result.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport { id as semverPartialId } from '../../versioning/semver-partial/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../types.ts';\nimport {\n GitlabDocument,\n Job,\n Jobs,\n MultiDocumentLocalIncludes,\n} from './schema.ts';\nimport { getGitlabDep } from './utils.ts';\n\n// See https://docs.gitlab.com/ee/ci/components/index.html#use-a-component\nconst componentReferenceRegex = regEx(\n /(?<fqdn>[^/]+)\\/(?<projectPath>.+)\\/(?:.+)@(?<specificVersion>.+)/,\n);\n\nfunction extractDepFromIncludeComponent(\n component: string,\n registryAliases?: Record<string, string>,\n): PackageDependency | null {\n let componentUrl = component;\n if (registryAliases) {\n for (const key in registryAliases) {\n componentUrl = componentUrl.replace(key, registryAliases[key]);\n }\n }\n const componentReference = componentReferenceRegex.exec(componentUrl)?.groups;\n if (!componentReference) {\n logger.debug(\n { componentReference: componentUrl },\n 'Ignoring malformed component reference',\n );\n return null;\n }\n const projectPathParts = componentReference.projectPath.split('/');\n if (projectPathParts.length < 2) {\n logger.debug(\n { componentReference: componentUrl },\n 'Ignoring component reference with incomplete project path',\n );\n return null;\n }\n\n const dep: PackageDependency = {\n datasource: GitlabTagsDatasource.id,\n depName: componentReference.projectPath,\n depType: 'repository',\n currentValue: componentReference.specificVersion,\n registryUrls: [`https://${componentReference.fqdn}`],\n versioning: semverPartialId,\n };\n return dep;\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n config: ExtractConfig,\n): PackageFileContent | null {\n const deps: PackageDependency[] = [];\n try {\n const docs = parseYaml(content, { uniqueKeys: false });\n\n for (const doc of docs) {\n const topLevel = Job.parse(doc);\n const jobs = Jobs.parse(doc);\n\n for (const job of [topLevel, ...jobs]) {\n const { image, services } = job;\n\n if (image) {\n const dep = getGitlabDep(image.value, config.registryAliases);\n dep.depType = image.type;\n deps.push(dep);\n }\n\n for (const service of services) {\n const dep = getGitlabDep(service, config.registryAliases);\n dep.depType = 'service-image';\n deps.push(dep);\n }\n }\n\n const includedComponents = GitlabDocument.parse(doc);\n for (const includedComponent of includedComponents) {\n const dep = extractDepFromIncludeComponent(\n includedComponent,\n config.registryAliases,\n );\n if (dep) {\n deps.push(dep);\n }\n }\n }\n } catch (err) /* istanbul ignore next */ {\n if (err.stack?.startsWith('YAMLException:')) {\n logger.debug(\n { err, packageFile },\n 'YAML exception extracting GitLab CI includes',\n );\n } else {\n logger.debug(\n { err, packageFile },\n 'Error extracting GitLab CI dependencies',\n );\n }\n }\n\n return deps.length ? { deps } : null;\n}\n\nexport async function extractAllPackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[] | null> {\n const filesToExamine = [...packageFiles];\n const seen = new Set<string>(packageFiles);\n const results: PackageFile[] = [];\n\n // extract all includes from the files\n while (filesToExamine.length > 0) {\n const file = filesToExamine.pop()!;\n\n const content = await readLocalFile(file, 'utf8');\n if (!content) {\n logger.debug(\n { packageFile: file },\n `Empty or non existent gitlabci file`,\n );\n continue;\n }\n\n const { val: docs, err } = Result.wrap(() =>\n parseYaml(content, { uniqueKeys: false }),\n ).unwrap();\n\n if (err) {\n logger.debug(\n { err, packageFile: file },\n 'Error extracting GitLab CI dependencies',\n );\n continue;\n }\n\n const localIncludes = MultiDocumentLocalIncludes.parse(docs);\n for (const file of localIncludes) {\n if (!seen.has(file)) {\n seen.add(file);\n filesToExamine.push(file);\n }\n }\n\n const result = extractPackageFile(content, file, config);\n // v8 ignore else -- needs a listed file that yields no deps\n if (result !== null) {\n results.push({\n packageFile: file,\n deps: result.deps,\n });\n }\n }\n\n logger.trace(\n { packageFiles, files: filesToExamine.entries() },\n 'extracted all GitLab CI files',\n );\n\n if (!results.length) {\n return null;\n }\n\n return results;\n}\n"],"mappings":"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"}
@@ -37,6 +37,7 @@ function resolvePackageDependencies(packages, repositories) {
37
37
  function findRepository(name, repositories) {
38
38
  for (const repository of repositories) {
39
39
  if (name === repository.metadata.name) return repository;
40
+ // v8 ignore else -- needs a manifest whose repositories match no name
40
41
  if (isFalsy(name) && isDefaultRepository(repository)) return repository;
41
42
  }
42
43
  return null;
@@ -53,6 +54,7 @@ async function extractAllPackageFiles(_config, packageFiles) {
53
54
  const glasskubeResourceFiles = [];
54
55
  for (const packageFile of packageFiles) {
55
56
  const content = await readLocalFile(packageFile, "utf8");
57
+ // v8 ignore else -- needs a listed package file that cannot be read
56
58
  if (content !== null) {
57
59
  const resources = parseResources(content, packageFile);
58
60
  allRepositories.push(...resources.repositories);
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/glasskube/extract.ts"],"sourcesContent":["import { isFalsy } from '@sindresorhus/is';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { GlasskubePackagesDatasource } from '../../datasource/glasskube-packages/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../types.ts';\nimport {\n GlasskubeResource,\n type Package,\n type PackageRepository,\n} from './schema.ts';\nimport type { GlasskubeResources } from './types.ts';\n\nfunction parseResources(\n content: string,\n packageFile: string,\n): GlasskubeResources {\n const resources: GlasskubeResource[] = parseYaml(content, {\n customSchema: GlasskubeResource,\n failureBehaviour: 'filter',\n });\n\n const packages: Package[] = [];\n const repositories: PackageRepository[] = [];\n\n for (const resource of resources) {\n if (resource.kind === 'ClusterPackage' || resource.kind === 'Package') {\n packages.push(resource);\n } else if (resource.kind === 'PackageRepository') {\n repositories.push(resource);\n }\n }\n\n return { packageFile, repositories, packages };\n}\n\nfunction resolvePackageDependencies(\n packages: Package[],\n repositories: PackageRepository[],\n): PackageDependency[] {\n const deps: PackageDependency[] = [];\n for (const pkg of packages) {\n const dep: PackageDependency = {\n depName: pkg.spec.packageInfo.name,\n currentValue: pkg.spec.packageInfo.version,\n datasource: GlasskubePackagesDatasource.id,\n };\n\n const repository = findRepository(\n pkg.spec.packageInfo.repositoryName ?? null,\n repositories,\n );\n\n if (repository === null) {\n dep.skipReason = 'unknown-registry';\n } else {\n dep.registryUrls = [repository.spec.url];\n }\n\n deps.push(dep);\n }\n return deps;\n}\n\nfunction findRepository(\n name: string | null,\n repositories: PackageRepository[],\n): PackageRepository | null {\n for (const repository of repositories) {\n if (name === repository.metadata.name) {\n return repository;\n }\n if (isFalsy(name) && isDefaultRepository(repository)) {\n return repository;\n }\n }\n return null;\n}\n\nfunction isDefaultRepository(repository: PackageRepository): boolean {\n return (\n repository.metadata.annotations?.[\n 'packages.glasskube.dev/default-repository'\n ] === 'true'\n );\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n _config?: ExtractConfig,\n): PackageFileContent | null {\n const { packages, repositories } = parseResources(content, packageFile);\n const deps = resolvePackageDependencies(packages, repositories);\n return { deps };\n}\n\nexport async function extractAllPackageFiles(\n _config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[] | null> {\n const allRepositories: PackageRepository[] = [];\n const glasskubeResourceFiles: GlasskubeResources[] = [];\n for (const packageFile of packageFiles) {\n const content = await readLocalFile(packageFile, 'utf8');\n if (content !== null) {\n const resources = parseResources(content, packageFile);\n allRepositories.push(...resources.repositories);\n glasskubeResourceFiles.push(resources);\n }\n }\n\n const result: PackageFile[] = [];\n for (const file of glasskubeResourceFiles) {\n const deps = resolvePackageDependencies(file.packages, allRepositories);\n if (deps.length > 0) {\n result.push({ packageFile: file.packageFile, deps });\n }\n }\n return result.length ? result : null;\n}\n"],"mappings":";;;;;;AAiBA,SAAS,eACP,SACA,aACoB;CACpB,MAAM,YAAiC,UAAU,SAAS;EACxD,cAAc;EACd,kBAAkB;CACpB,CAAC;CAED,MAAM,WAAsB,CAAC;CAC7B,MAAM,eAAoC,CAAC;CAE3C,KAAK,MAAM,YAAY,WACrB,IAAI,SAAS,SAAS,oBAAoB,SAAS,SAAS,WAC1D,SAAS,KAAK,QAAQ;MACjB,IAAI,SAAS,SAAS,qBAC3B,aAAa,KAAK,QAAQ;CAI9B,OAAO;EAAE;EAAa;EAAc;CAAS;AAC/C;AAEA,SAAS,2BACP,UACA,cACqB;CACrB,MAAM,OAA4B,CAAC;CACnC,KAAK,MAAM,OAAO,UAAU;EAC1B,MAAM,MAAyB;GAC7B,SAAS,IAAI,KAAK,YAAY;GAC9B,cAAc,IAAI,KAAK,YAAY;GACnC,YAAY,4BAA4B;EAC1C;EAEA,MAAM,aAAa,eACjB,IAAI,KAAK,YAAY,kBAAkB,MACvC,YACF;EAEA,IAAI,eAAe,MACjB,IAAI,aAAa;OAEjB,IAAI,eAAe,CAAC,WAAW,KAAK,GAAG;EAGzC,KAAK,KAAK,GAAG;CACf;CACA,OAAO;AACT;AAEA,SAAS,eACP,MACA,cAC0B;CAC1B,KAAK,MAAM,cAAc,cAAc;EACrC,IAAI,SAAS,WAAW,SAAS,MAC/B,OAAO;EAET,IAAI,QAAQ,IAAI,KAAK,oBAAoB,UAAU,GACjD,OAAO;CAEX;CACA,OAAO;AACT;AAEA,SAAS,oBAAoB,YAAwC;CACnE,OACE,WAAW,SAAS,cAClB,iDACI;AAEV;AAEA,SAAgB,mBACd,SACA,aACA,SAC2B;CAC3B,MAAM,EAAE,UAAU,iBAAiB,eAAe,SAAS,WAAW;CAEtE,OAAO,EAAE,MADI,2BAA2B,UAAU,YACtC,EAAE;AAChB;AAEA,eAAsB,uBACpB,SACA,cAC+B;CAC/B,MAAM,kBAAuC,CAAC;CAC9C,MAAM,yBAA+C,CAAC;CACtD,KAAK,MAAM,eAAe,cAAc;EACtC,MAAM,UAAU,MAAM,cAAc,aAAa,MAAM;EACvD,IAAI,YAAY,MAAM;GACpB,MAAM,YAAY,eAAe,SAAS,WAAW;GACrD,gBAAgB,KAAK,GAAG,UAAU,YAAY;GAC9C,uBAAuB,KAAK,SAAS;EACvC;CACF;CAEA,MAAM,SAAwB,CAAC;CAC/B,KAAK,MAAM,QAAQ,wBAAwB;EACzC,MAAM,OAAO,2BAA2B,KAAK,UAAU,eAAe;EACtE,IAAI,KAAK,SAAS,GAChB,OAAO,KAAK;GAAE,aAAa,KAAK;GAAa;EAAK,CAAC;CAEvD;CACA,OAAO,OAAO,SAAS,SAAS;AAClC"}
1
+ {"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/glasskube/extract.ts"],"sourcesContent":["import { isFalsy } from '@sindresorhus/is';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { GlasskubePackagesDatasource } from '../../datasource/glasskube-packages/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../types.ts';\nimport {\n GlasskubeResource,\n type Package,\n type PackageRepository,\n} from './schema.ts';\nimport type { GlasskubeResources } from './types.ts';\n\nfunction parseResources(\n content: string,\n packageFile: string,\n): GlasskubeResources {\n const resources: GlasskubeResource[] = parseYaml(content, {\n customSchema: GlasskubeResource,\n failureBehaviour: 'filter',\n });\n\n const packages: Package[] = [];\n const repositories: PackageRepository[] = [];\n\n for (const resource of resources) {\n if (resource.kind === 'ClusterPackage' || resource.kind === 'Package') {\n packages.push(resource);\n // NOTE: the schema only parses these two kinds, so the implicit else\n // never runs. A coverage-ignore hint cannot suppress it on an `else if`.\n } else if (resource.kind === 'PackageRepository') {\n repositories.push(resource);\n }\n }\n\n return { packageFile, repositories, packages };\n}\n\nfunction resolvePackageDependencies(\n packages: Package[],\n repositories: PackageRepository[],\n): PackageDependency[] {\n const deps: PackageDependency[] = [];\n for (const pkg of packages) {\n const dep: PackageDependency = {\n depName: pkg.spec.packageInfo.name,\n currentValue: pkg.spec.packageInfo.version,\n datasource: GlasskubePackagesDatasource.id,\n };\n\n const repository = findRepository(\n pkg.spec.packageInfo.repositoryName ?? null,\n repositories,\n );\n\n if (repository === null) {\n dep.skipReason = 'unknown-registry';\n } else {\n dep.registryUrls = [repository.spec.url];\n }\n\n deps.push(dep);\n }\n return deps;\n}\n\nfunction findRepository(\n name: string | null,\n repositories: PackageRepository[],\n): PackageRepository | null {\n for (const repository of repositories) {\n if (name === repository.metadata.name) {\n return repository;\n }\n // v8 ignore else -- needs a manifest whose repositories match no name\n if (isFalsy(name) && isDefaultRepository(repository)) {\n return repository;\n }\n }\n return null;\n}\n\nfunction isDefaultRepository(repository: PackageRepository): boolean {\n return (\n repository.metadata.annotations?.[\n 'packages.glasskube.dev/default-repository'\n ] === 'true'\n );\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n _config?: ExtractConfig,\n): PackageFileContent | null {\n const { packages, repositories } = parseResources(content, packageFile);\n const deps = resolvePackageDependencies(packages, repositories);\n return { deps };\n}\n\nexport async function extractAllPackageFiles(\n _config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[] | null> {\n const allRepositories: PackageRepository[] = [];\n const glasskubeResourceFiles: GlasskubeResources[] = [];\n for (const packageFile of packageFiles) {\n const content = await readLocalFile(packageFile, 'utf8');\n // v8 ignore else -- needs a listed package file that cannot be read\n if (content !== null) {\n const resources = parseResources(content, packageFile);\n allRepositories.push(...resources.repositories);\n glasskubeResourceFiles.push(resources);\n }\n }\n\n const result: PackageFile[] = [];\n for (const file of glasskubeResourceFiles) {\n const deps = resolvePackageDependencies(file.packages, allRepositories);\n if (deps.length > 0) {\n result.push({ packageFile: file.packageFile, deps });\n }\n }\n return result.length ? result : null;\n}\n"],"mappings":";;;;;;AAiBA,SAAS,eACP,SACA,aACoB;CACpB,MAAM,YAAiC,UAAU,SAAS;EACxD,cAAc;EACd,kBAAkB;CACpB,CAAC;CAED,MAAM,WAAsB,CAAC;CAC7B,MAAM,eAAoC,CAAC;CAE3C,KAAK,MAAM,YAAY,WACrB,IAAI,SAAS,SAAS,oBAAoB,SAAS,SAAS,WAC1D,SAAS,KAAK,QAAQ;MAGjB,IAAI,SAAS,SAAS,qBAC3B,aAAa,KAAK,QAAQ;CAI9B,OAAO;EAAE;EAAa;EAAc;CAAS;AAC/C;AAEA,SAAS,2BACP,UACA,cACqB;CACrB,MAAM,OAA4B,CAAC;CACnC,KAAK,MAAM,OAAO,UAAU;EAC1B,MAAM,MAAyB;GAC7B,SAAS,IAAI,KAAK,YAAY;GAC9B,cAAc,IAAI,KAAK,YAAY;GACnC,YAAY,4BAA4B;EAC1C;EAEA,MAAM,aAAa,eACjB,IAAI,KAAK,YAAY,kBAAkB,MACvC,YACF;EAEA,IAAI,eAAe,MACjB,IAAI,aAAa;OAEjB,IAAI,eAAe,CAAC,WAAW,KAAK,GAAG;EAGzC,KAAK,KAAK,GAAG;CACf;CACA,OAAO;AACT;AAEA,SAAS,eACP,MACA,cAC0B;CAC1B,KAAK,MAAM,cAAc,cAAc;EACrC,IAAI,SAAS,WAAW,SAAS,MAC/B,OAAO;;EAGT,IAAI,QAAQ,IAAI,KAAK,oBAAoB,UAAU,GACjD,OAAO;CAEX;CACA,OAAO;AACT;AAEA,SAAS,oBAAoB,YAAwC;CACnE,OACE,WAAW,SAAS,cAClB,iDACI;AAEV;AAEA,SAAgB,mBACd,SACA,aACA,SAC2B;CAC3B,MAAM,EAAE,UAAU,iBAAiB,eAAe,SAAS,WAAW;CAEtE,OAAO,EAAE,MADI,2BAA2B,UAAU,YACtC,EAAE;AAChB;AAEA,eAAsB,uBACpB,SACA,cAC+B;CAC/B,MAAM,kBAAuC,CAAC;CAC9C,MAAM,yBAA+C,CAAC;CACtD,KAAK,MAAM,eAAe,cAAc;EACtC,MAAM,UAAU,MAAM,cAAc,aAAa,MAAM;;EAEvD,IAAI,YAAY,MAAM;GACpB,MAAM,YAAY,eAAe,SAAS,WAAW;GACrD,gBAAgB,KAAK,GAAG,UAAU,YAAY;GAC9C,uBAAuB,KAAK,SAAS;EACvC;CACF;CAEA,MAAM,SAAwB,CAAC;CAC/B,KAAK,MAAM,QAAQ,wBAAwB;EACzC,MAAM,OAAO,2BAA2B,KAAK,UAAU,eAAe;EACtE,IAAI,KAAK,SAAS,GAChB,OAAO,KAAK;GAAE,aAAa,KAAK;GAAa;EAAK,CAAC;CAEvD;CACA,OAAO,OAAO,SAAS,SAAS;AAClC"}
@@ -21,6 +21,7 @@ function getExtraDeps(goModBefore, goModAfter, excludeDeps) {
21
21
  for (const [depName, currentValue] of Object.entries(rmDeps)) {
22
22
  if (excludeDeps.includes(depName)) continue;
23
23
  const newValue = addDeps[depName];
24
+ // v8 ignore else -- needs a removed dep that is not added back
24
25
  if (newValue) result.push({
25
26
  depName,
26
27
  currentValue,