Compare commits

...

403 Commits

Author SHA1 Message Date
releaser 2447df48d6 chore(release): prepare for v0.1.4 (#387)
Release / release (push) Successful in 1m11s
gitlab-cleanup-handler / test (push) Successful in 1m48s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 3m53s
gitlab-cleanup-handler / build (push) Successful in 32m45s
## [0.1.4] - 2026-03-06

### 🐛 Bug Fixes

- *(deps)* Update kubernetes packages to v0.35.2 (#379)

### ⚙️ Miscellaneous Tasks

- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.10.1 (#375)
- *(deps)* Update golang:1.26.0 docker digest to 9835fb4 (#377)
- *(deps)* Update dependency go to v1.26.1 (#381)
- *(deps)* Update golang docker tag to v1.26.1 (#382)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.0 (#384)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.1 (#386)

<!-- generated by git-cliff -->

---

**Note:** Please use **Squash Merge** when merging this PR.

Reviewed-on: #387
Co-authored-by: Unbound Releaser <releaser@unbound.se>
Co-committed-by: Unbound Releaser <releaser@unbound.se>
2026-03-06 20:00:04 +00:00
renovate 422e543187 chore(deps): update pre-commit hook golangci/golangci-lint to v2.11.1 (#386)
Release / release (push) Successful in 1m6s
gitlab-cleanup-handler / test (push) Successful in 2m13s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m14s
gitlab-cleanup-handler / build (push) Successful in 6m15s
2026-03-06 18:39:59 +00:00
renovate 8a02f8a34b chore(deps): update pre-commit hook golangci/golangci-lint to v2.11.0 (#384)
Release / release (push) Successful in 1m14s
gitlab-cleanup-handler / test (push) Successful in 2m8s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m7s
gitlab-cleanup-handler / build (push) Successful in 6m42s
2026-03-06 14:28:38 +00:00
renovate 0e7933be3f chore(deps): update golang docker tag to v1.26.1 (#382)
Release / release (push) Successful in 1m3s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 1m49s
gitlab-cleanup-handler / test (push) Successful in 2m21s
gitlab-cleanup-handler / build (push) Successful in 6m2s
2026-03-06 02:31:54 +00:00
renovate 321ad98fe0 chore(deps): update dependency go to v1.26.1 (#381)
Release / release (push) Failing after 1m22s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m30s
gitlab-cleanup-handler / test (push) Successful in 3m3s
gitlab-cleanup-handler / build (push) Successful in 12m16s
2026-03-06 02:06:16 +00:00
renovate e9b6663a55 fix(deps): update kubernetes packages to v0.35.2 (#379)
Release / release (push) Successful in 1m18s
gitlab-cleanup-handler / test (push) Successful in 2m35s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 3m44s
gitlab-cleanup-handler / build (push) Successful in 10m53s
2026-02-27 09:16:39 +00:00
renovate f03617d3db chore(deps): update golang:1.26.0 docker digest to 9835fb4 (#377)
Release / release (push) Successful in 1m17s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m29s
gitlab-cleanup-handler / test (push) Successful in 3m20s
gitlab-cleanup-handler / build (push) Successful in 5m19s
2026-02-25 00:17:48 +00:00
renovate 73b32e0cb5 chore(deps): update pre-commit hook golangci/golangci-lint to v2.10.1 (#375)
gitlab-cleanup-handler / test (push) Successful in 3m15s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m54s
Release / release (push) Successful in 3m55s
gitlab-cleanup-handler / build (push) Successful in 13m2s
2026-02-17 17:28:25 +00:00
argoyle d1e4df4c25 Merge pull request 'chore(release): prepare for v0.1.3' (#374) from next-release into main
Release / release (push) Successful in 45s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m20s
gitlab-cleanup-handler / test (push) Successful in 3m28s
gitlab-cleanup-handler / build (push) Successful in 38s
Reviewed-on: #374
2026-02-12 11:15:18 +00:00
releaser b9b044b5dc chore(release): prepare for v0.1.3
gitlab-cleanup-handler / vulnerabilities (pull_request) Successful in 2m15s
gitlab-cleanup-handler / test (pull_request) Successful in 2m50s
gitlab-cleanup-handler / build (pull_request) Successful in 36s
2026-02-12 11:06:46 +00:00
releaser 95285154d6 chore(release): prepare for v0.1.3 2026-02-12 11:06:42 +00:00
renovate 7bd29ca6a1 chore(deps): update pre-commit hook golangci/golangci-lint to v2.9.0 (#371)
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m11s
gitlab-cleanup-handler / test (push) Successful in 3m50s
gitlab-cleanup-handler / build (push) Failing after 40m42s
Release / release (push) Successful in 1m47s
2026-02-11 14:59:48 +00:00
renovate 617801b6b9 chore(deps): update dependency go to v1.26.0 (#368)
Release / release (push) Successful in 1m2s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 1m56s
gitlab-cleanup-handler / test (push) Successful in 2m49s
gitlab-cleanup-handler / build (push) Successful in 2h22m10s
2026-02-11 14:34:37 +00:00
renovate af37cf4253 fix(deps): update kubernetes packages to v0.35.1 (#372)
Release / release (push) Successful in 37s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 1m10s
gitlab-cleanup-handler / test (push) Successful in 3m20s
gitlab-cleanup-handler / build (push) Successful in 2h41m5s
2026-02-11 14:17:31 +00:00
renovate 3d6a684e06 chore(deps): update golang docker tag to v1.26.0 (#370)
gitlab-cleanup-handler / test (push) Failing after 2s
gitlab-cleanup-handler / vulnerabilities (push) Failing after 2s
Release / release (push) Failing after 2s
gitlab-cleanup-handler / build (push) Has been skipped
2026-02-11 07:43:31 +00:00
renovate 75890fcb64 chore(deps): update golang:1.25.7 docker digest to d2819ff (#369)
Release / release (push) Failing after 3s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m17s
gitlab-cleanup-handler / test (push) Successful in 5m46s
gitlab-cleanup-handler / build (push) Failing after 3s
2026-02-10 23:57:35 +00:00
argoyle 9f6a3d50e5 Merge pull request 'chore(release): prepare for v0.1.2' (#360) from next-release into main
Release / release (push) Failing after 59s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m22s
gitlab-cleanup-handler / test (push) Successful in 2m29s
gitlab-cleanup-handler / build (push) Successful in 3m37s
Reviewed-on: #360
2026-02-07 10:22:06 +00:00
releaser c9e6c79a76 chore(release): prepare for v0.1.2
gitlab-cleanup-handler / vulnerabilities (pull_request) Successful in 1m47s
gitlab-cleanup-handler / test (pull_request) Successful in 3m54s
gitlab-cleanup-handler / build (pull_request) Successful in 8m8s
2026-02-07 01:26:22 +00:00
releaser 7f013d7280 chore(release): prepare for v0.1.2
gitlab-cleanup-handler / test (pull_request) Successful in 2m19s
gitlab-cleanup-handler / vulnerabilities (pull_request) Successful in 2m21s
gitlab-cleanup-handler / build (pull_request) Successful in 10m4s
2026-02-07 01:26:19 +00:00
releaser 95283d52dc chore(release): prepare for v0.1.2 2026-02-07 01:26:13 +00:00
releaser 9943348a4d chore(release): prepare for v0.1.2 2026-02-07 01:26:13 +00:00
releaser 5cb857a050 chore(release): prepare for v0.1.2 2026-02-07 01:26:13 +00:00
releaser cb85332966 chore(release): prepare for v0.1.2 2026-02-07 01:26:13 +00:00
releaser 58131b2537 chore(release): prepare for v0.1.2 2026-02-07 01:26:13 +00:00
releaser 3456d0f495 chore(release): prepare for v0.1.2 2026-02-07 01:26:13 +00:00
releaser 3e33a70a55 chore(release): prepare for v0.1.2 2026-02-07 01:26:13 +00:00
releaser d4d62468b9 chore(release): prepare for v0.1.2 2026-02-07 01:26:13 +00:00
releaser 1e454d03f0 chore(release): prepare for v0.1.2 2026-02-07 01:26:13 +00:00
releaser 9cd2929e4a chore(release): prepare for v0.1.2 2026-02-07 01:26:13 +00:00
renovate 5b51086c4d fix(deps): update module github.com/alecthomas/kong to v1.14.0 (#367)
gitlab-cleanup-handler / test (push) Successful in 3m39s
Release / release (push) Successful in 1m17s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 7m43s
gitlab-cleanup-handler / build (push) Successful in 1m47s
2026-02-07 01:24:24 +00:00
renovate fe9264ce90 chore(deps): update golang docker tag to v1.25.7 (#366)
Release / release (push) Failing after 1m21s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m39s
gitlab-cleanup-handler / test (push) Successful in 3m21s
gitlab-cleanup-handler / build (push) Successful in 5m2s
2026-02-05 09:54:34 +00:00
renovate b3ef8e36db chore(deps): update dependency go to v1.25.7 (#365)
gitlab-cleanup-handler / vulnerabilities (push) Successful in 3m52s
Release / release (push) Successful in 4m2s
gitlab-cleanup-handler / test (push) Successful in 6m42s
gitlab-cleanup-handler / build (push) Successful in 16m45s
2026-02-04 16:19:07 +00:00
renovate ad8ac6810d chore(deps): update golang:1.25.6 docker digest to ceda080 (#364)
Release / release (push) Failing after 1m3s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 1m7s
gitlab-cleanup-handler / test (push) Successful in 2m34s
gitlab-cleanup-handler / build (push) Successful in 11m7s
2026-02-03 08:56:42 +00:00
argoyle 684846dea8 Merge pull request 'chore: remove unused .gitlab-ci.yml' (#363) from remove-gitlab-ci into main
Release / release (push) Failing after 3m48s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 8m12s
gitlab-cleanup-handler / test (push) Successful in 10m46s
gitlab-cleanup-handler / build (push) Failing after 17m32s
Reviewed-on: #363
2026-01-23 14:56:19 +00:00
argoyle 2b87103e23 chore: remove unused .gitlab-ci.yml
gitlab-cleanup-handler / vulnerabilities (pull_request) Successful in 6m23s
gitlab-cleanup-handler / test (pull_request) Successful in 9m13s
gitlab-cleanup-handler / build (pull_request) Successful in 6m22s
No longer needed after migration to Gitea Actions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 14:34:00 +01:00
renovate 3275e7f642 chore(deps): update golang docker tag to v1.25.6 (#362)
gitlab-cleanup-handler / vulnerabilities (push) Successful in 1m26s
gitlab-cleanup-handler / test (push) Successful in 2m4s
gitlab-cleanup-handler / build (push) Failing after 35s
Release / release (push) Failing after 5m59s
2026-01-15 22:57:59 +00:00
renovate 8e9e1dd049 chore(deps): update dependency go to v1.25.6 (#361)
Release / release (push) Failing after 1m19s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m4s
gitlab-cleanup-handler / test (push) Successful in 4m3s
gitlab-cleanup-handler / build (push) Successful in 13m54s
2026-01-15 20:35:09 +00:00
renovate d02ee4fd72 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.24.0 (#359)
gitlab-cleanup-handler / vulnerabilities (push) Successful in 1m9s
Release / release (push) Successful in 1m26s
gitlab-cleanup-handler / test (push) Successful in 2m6s
gitlab-cleanup-handler / build (push) Successful in 3m58s
2026-01-13 21:48:52 +00:00
renovate 3e3941c476 chore(deps): update golang:1.25.5 docker digest to 3a01526 (#358)
Release / release (push) Failing after 1m11s
gitlab-cleanup-handler / test (push) Successful in 1m45s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m6s
gitlab-cleanup-handler / build (push) Successful in 5m14s
2026-01-13 07:04:25 +00:00
argoyle 3909811827 Merge pull request 'chore(release): prepare for v0.1.1' (#357) from next-release into main
Release / release (push) Successful in 1m8s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m19s
gitlab-cleanup-handler / test (push) Successful in 8m30s
gitlab-cleanup-handler / build (push) Successful in 1m0s
Reviewed-on: #357
2026-01-10 18:52:49 +00:00
releaser f67c45f5ce chore(release): prepare for v0.1.1
gitlab-cleanup-handler / vulnerabilities (pull_request) Successful in 1m9s
gitlab-cleanup-handler / test (pull_request) Successful in 5m14s
gitlab-cleanup-handler / build (pull_request) Successful in 4m9s
2026-01-10 18:40:21 +00:00
releaser 8c9a8c6433 chore(release): prepare for v0.1.1 2026-01-10 18:40:14 +00:00
argoyle 494c451640 Merge pull request 'ci: run workflow on tags' (#356) from ci-run-on-tags into main
Release / release (push) Successful in 4m3s
gitlab-cleanup-handler / test (push) Successful in 5m27s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 6m59s
gitlab-cleanup-handler / build (push) Successful in 1m1s
Reviewed-on: #356
2026-01-10 18:34:32 +00:00
argoyle 70fd5d4c72 ci: run workflow on tags
gitlab-cleanup-handler / vulnerabilities (pull_request) Successful in 1m39s
gitlab-cleanup-handler / test (pull_request) Successful in 2m0s
gitlab-cleanup-handler / build (pull_request) Successful in 3m38s
2026-01-10 19:26:28 +01:00
argoyle 2ccb0b4bf4 Merge pull request 'chore(release): prepare for v0.1.0' (#349) from next-release into main
Release / release (push) Successful in 38s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 1m31s
gitlab-cleanup-handler / test (push) Successful in 2m37s
gitlab-cleanup-handler / build (push) Successful in 10m15s
Reviewed-on: #349
2026-01-09 16:16:03 +00:00
releaser f8ebc95040 chore(release): prepare for v0.1.0 2026-01-09 15:59:25 +00:00
releaser 39f32f9baa chore(release): prepare for v0.1.0 2026-01-09 15:59:06 +00:00
argoyle aaaa3513af Merge pull request 'docs: add CLAUDE.md for Claude Code guidance' (#355) from add-claude-md into main
Release / release (push) Successful in 2m51s
gitlab-cleanup-handler / vulnerabilities (push) Successful in 4m49s
gitlab-cleanup-handler / test (push) Successful in 5m42s
gitlab-cleanup-handler / build (push) Successful in 6m43s
Reviewed-on: #355
2026-01-09 15:55:12 +00:00
releaser 073ad578d4 chore(release): prepare for v0.1.0 2026-01-09 15:54:06 +00:00
releaser 0446db698b chore(release): prepare for v0.1.0 2026-01-09 15:53:51 +00:00
argoyle 6d864edd27 Merge pull request 'ci: add release workflow' (#354) from add-release-workflow into main
Release / release (push) Successful in 2m5s
gitlab-cleanup-handler / build (push) Has been cancelled
gitlab-cleanup-handler / vulnerabilities (push) Has been cancelled
gitlab-cleanup-handler / test (push) Has been cancelled
Reviewed-on: #354
2026-01-09 15:52:32 +00:00
argoyle 4fe8fe95fb ci: add release workflow
gitlab-cleanup-handler / vulnerabilities (pull_request) Successful in 3m37s
gitlab-cleanup-handler / test (pull_request) Successful in 4m31s
gitlab-cleanup-handler / build (pull_request) Successful in 4m5s
2026-01-09 16:40:16 +01:00
argoyle 4cddc3343a docs: add CLAUDE.md for Claude Code guidance
gitlab-cleanup-handler / vulnerabilities (pull_request) Successful in 3m12s
gitlab-cleanup-handler / test (pull_request) Successful in 4m25s
gitlab-cleanup-handler / build (pull_request) Successful in 6m51s
2026-01-09 16:37:56 +01:00
argoyle ca3f1a3312 Merge pull request 'chore(deps): update pre-commit hook golangci/golangci-lint to v2.8.0' (#353) from renovate/golangci-golangci-lint-2.x into main
gitlab-cleanup-handler / vulnerabilities (push) Successful in 6m0s
gitlab-cleanup-handler / test (push) Successful in 7m3s
gitlab-cleanup-handler / build (push) Successful in 1m22s
Reviewed-on: #353
2026-01-09 04:12:49 +00:00
renovate 6a0854c2f9 chore(deps): update pre-commit hook golangci/golangci-lint to v2.8.0
gitlab-cleanup-handler / vulnerabilities (pull_request) Successful in 5m48s
gitlab-cleanup-handler / test (pull_request) Successful in 8m36s
gitlab-cleanup-handler / build (pull_request) Successful in 9m27s
2026-01-08 21:19:57 +00:00
argoyle 9a74ae6c11 Merge pull request 'chore(deps): update actions/checkout action to v6' (#352) from renovate/actions-checkout-6.x into main
gitlab-cleanup-handler / vulnerabilities (push) Successful in 5m8s
gitlab-cleanup-handler / test (push) Successful in 6m12s
gitlab-cleanup-handler / build (push) Successful in 4m6s
Reviewed-on: #352
2026-01-08 17:35:30 +00:00
renovate 390908eafb chore(deps): update actions/checkout action to v6
gitlab-cleanup-handler / vulnerabilities (pull_request) Successful in 9m44s
gitlab-cleanup-handler / test (pull_request) Successful in 15m12s
gitlab-cleanup-handler / build (pull_request) Successful in 5m26s
2026-01-08 16:16:22 +00:00
argoyle 0b96a1bac1 Merge pull request 'chore(deps): update actions/setup-go action to v6' (#351) from renovate/actions-setup-go-6.x into main
gitlab-cleanup-handler / vulnerabilities (push) Successful in 5m23s
gitlab-cleanup-handler / test (push) Successful in 9m33s
gitlab-cleanup-handler / build (push) Successful in 1m48s
Reviewed-on: #351
2026-01-08 15:21:49 +00:00
renovate 8c1ce0b400 chore(deps): update actions/setup-go action to v6
gitlab-cleanup-handler / vulnerabilities (pull_request) Successful in 2m27s
gitlab-cleanup-handler / test (pull_request) Successful in 6m24s
gitlab-cleanup-handler / build (pull_request) Successful in 7m56s
2026-01-08 15:05:12 +00:00
argoyle 4516a13531 Merge pull request 'feat: migrate from GitLab CI to Gitea Actions' (#350) from feat/gitea-actions into main
gitlab-cleanup-handler / vulnerabilities (push) Successful in 2m5s
gitlab-cleanup-handler / test (push) Successful in 2m28s
gitlab-cleanup-handler / build (push) Successful in 1m19s
Reviewed-on: #350
2026-01-08 14:52:59 +00:00
argoyle 70c5035304 feat: migrate from GitLab CI to Gitea Actions
gitlab-cleanup-handler / vulnerabilities (pull_request) Successful in 2m45s
gitlab-cleanup-handler / test (pull_request) Successful in 3m27s
gitlab-cleanup-handler / build (pull_request) Successful in 6m18s
2026-01-08 15:28:16 +01:00
Unbound Release f884415a4a chore(release): prepare for v0.0.23 2025-12-30 17:25:35 +00:00
Unbound Release bb6f79c49c chore(release): prepare for v0.0.23 2025-12-30 17:25:34 +00:00
argoyle 107551cbb6 Merge branch 'renovate/golang-1.25.5' into 'main'
chore(deps): update golang:1.25.5 docker digest to ad03ba9

See merge request unboundsoftware/gitlab-cleanup-handler!344
2025-12-30 16:40:38 +01:00
Renovate 0a4597bb9b chore(deps): update golang:1.25.5 docker digest to ad03ba9 2025-12-30 03:58:58 +00:00
argoyle f4d1a02b1a Merge branch 'next-release' into 'main'
chore(release): prepare for v0.0.22

See merge request unboundsoftware/gitlab-cleanup-handler!343
2025-12-18 07:57:31 +01:00
Unbound Release f8a51919c3 chore(release): prepare for v0.0.22 2025-12-18 07:57:30 +01:00
argoyle 271603b855 Merge branch 'renovate/kubernetes-go' into 'main'
fix(deps): update kubernetes packages to v0.35.0

See merge request unboundsoftware/gitlab-cleanup-handler!342
2025-12-18 07:11:59 +01:00
Renovate 4c96a2cf2d fix(deps): update kubernetes packages to v0.35.0 2025-12-18 00:58:38 +00:00
argoyle 4861d232c6 Merge branch 'next-release' into 'main'
chore(release): prepare for v0.0.21

See merge request unboundsoftware/gitlab-cleanup-handler!331
2025-12-10 08:46:34 +01:00
Unbound Release 79d96f459f chore(release): prepare for v0.0.21 2025-12-10 08:46:34 +01:00
argoyle a92f8139dc Merge branch 'renovate/kubernetes-go' into 'main'
fix(deps): update kubernetes packages to v0.34.3

See merge request unboundsoftware/gitlab-cleanup-handler!341
2025-12-10 06:57:24 +01:00
Renovate 3a95d3c0b7 fix(deps): update kubernetes packages to v0.34.3 2025-12-10 05:10:17 +00:00
argoyle 0ced117bc3 Merge branch 'renovate/golang-1.25.5' into 'main'
chore(deps): update golang:1.25.5 docker digest to 0c27bcf

See merge request unboundsoftware/gitlab-cleanup-handler!340
2025-12-09 09:54:12 +01:00
Renovate 0194b04275 chore(deps): update golang:1.25.5 docker digest to 0c27bcf 2025-12-09 02:12:23 +00:00
argoyle a0eff8bd79 Merge branch 'renovate/golangci-golangci-lint-2.x' into 'main'
chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.2

See merge request unboundsoftware/gitlab-cleanup-handler!339
2025-12-08 09:42:59 +01:00
Renovate 80de42be14 chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.2 2025-12-07 16:59:32 +00:00
argoyle 5ddfdbc6af Merge branch 'renovate/golangci-golangci-lint-2.x' into 'main'
chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.1

See merge request unboundsoftware/gitlab-cleanup-handler!338
2025-12-04 17:16:29 +01:00
Renovate ffa935295f chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.1 2025-12-04 15:00:45 +00:00
argoyle 4f777d5854 Merge branch 'renovate/golangci-golangci-lint-2.x' into 'main'
chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.0

See merge request unboundsoftware/gitlab-cleanup-handler!337
2025-12-04 08:28:52 +01:00
Renovate cda74fb52a chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.0 2025-12-03 19:59:11 +00:00
argoyle 744e8af1b9 Merge branch 'renovate/markdownlint-markdownlint-0.x' into 'main'
chore(deps): update pre-commit hook markdownlint/markdownlint to v0.15.0

See merge request unboundsoftware/gitlab-cleanup-handler!334
2025-12-03 16:20:35 +01:00
Renovate 8e029452a1 chore(deps): update pre-commit hook markdownlint/markdownlint to v0.15.0 2025-12-03 14:59:38 +00:00
argoyle 9683a51ebd Merge branch 'renovate/golang-1.x' into 'main'
chore(deps): update golang docker tag to v1.25.5

See merge request unboundsoftware/gitlab-cleanup-handler!336
2025-12-02 19:53:25 +01:00
argoyle 5896573a01 Merge branch 'renovate/go-1.x' into 'main'
chore(deps): update dependency go to v1.25.5

See merge request unboundsoftware/gitlab-cleanup-handler!335
2025-12-02 19:25:29 +01:00
Renovate 8f4f02e72c chore(deps): update golang docker tag to v1.25.5 2025-12-02 18:12:29 +00:00
Renovate 4a697c4418 chore(deps): update dependency go to v1.25.5 2025-12-02 17:11:30 +00:00
argoyle b64793ea03 Merge branch 'renovate/golang-1.25.4' into 'main'
chore(deps): update golang:1.25.4 docker digest to efe81fa

See merge request unboundsoftware/gitlab-cleanup-handler!333
2025-11-18 13:59:13 +01:00
Renovate d26663c6a6 chore(deps): update golang:1.25.4 docker digest to efe81fa 2025-11-18 11:59:03 +00:00
argoyle 0150f5dc57 Merge branch 'renovate/golangci-golangci-lint-2.x' into 'main'
chore(deps): update pre-commit hook golangci/golangci-lint to v2.6.2

See merge request unboundsoftware/gitlab-cleanup-handler!332
2025-11-14 16:22:21 +01:00
Renovate af2501f32b chore(deps): update pre-commit hook golangci/golangci-lint to v2.6.2 2025-11-14 13:59:03 +00:00
argoyle 22324eb667 Merge branch 'renovate/github.com-alecthomas-kong-1.x' into 'main'
fix(deps): update module github.com/alecthomas/kong to v1.13.0

See merge request unboundsoftware/gitlab-cleanup-handler!330
2025-11-14 12:57:23 +01:00
Renovate ec861321c4 fix(deps): update module github.com/alecthomas/kong to v1.13.0 2025-11-13 22:59:30 +00:00
argoyle 7949bc85c1 Merge branch 'next-release' into 'main'
chore(release): prepare for v0.0.20

See merge request unboundsoftware/gitlab-cleanup-handler!322
2025-11-13 09:22:09 +01:00
Unbound Release df559006b3 chore(release): prepare for v0.0.20 2025-11-13 09:22:09 +01:00
argoyle d81c436961 Merge branch 'renovate/kubernetes-go' into 'main'
fix(deps): update kubernetes packages to v0.34.2

See merge request unboundsoftware/gitlab-cleanup-handler!329
2025-11-13 08:57:35 +01:00
Renovate adafea81ea fix(deps): update kubernetes packages to v0.34.2 2025-11-12 16:58:46 +00:00
argoyle 583b649364 Merge branch 'renovate/golang-1.x' into 'main'
chore(deps): update golang docker tag to v1.25.4

See merge request unboundsoftware/gitlab-cleanup-handler!328
2025-11-06 07:03:12 +01:00
Renovate 1ad5333aec chore(deps): update golang docker tag to v1.25.4 2025-11-05 22:11:37 +00:00
argoyle 7f58a7828a Merge branch 'renovate/go-1.x' into 'main'
chore(deps): update dependency go to v1.25.4

See merge request unboundsoftware/gitlab-cleanup-handler!327
2025-11-05 21:31:42 +01:00
Renovate d302130dfd chore(deps): update dependency go to v1.25.4 2025-11-05 20:10:07 +00:00
argoyle d10bfd7803 Merge branch 'renovate/golangci-golangci-lint-2.x' into 'main'
chore(deps): update pre-commit hook golangci/golangci-lint to v2.6.1

See merge request unboundsoftware/gitlab-cleanup-handler!326
2025-11-04 13:44:21 +01:00
argoyle b29d509862 Merge branch 'renovate/golang-1.25.3' into 'main'
chore(deps): update golang:1.25.3 docker digest to 9ac0edc

See merge request unboundsoftware/gitlab-cleanup-handler!325
2025-11-04 13:44:01 +01:00
Renovate ee3240249b chore(deps): update pre-commit hook golangci/golangci-lint to v2.6.1 2025-11-04 11:59:39 +00:00
Renovate 2d1e84158b chore(deps): update golang:1.25.3 docker digest to 9ac0edc 2025-11-04 11:59:37 +00:00
argoyle c4e71ee20e Merge branch 'renovate/golangci-golangci-lint-2.x' into 'main'
chore(deps): update pre-commit hook golangci/golangci-lint to v2.6.0

See merge request unboundsoftware/gitlab-cleanup-handler!324
2025-10-29 23:16:26 +01:00
Renovate 928f402c91 chore(deps): update pre-commit hook golangci/golangci-lint to v2.6.0 2025-10-29 19:59:11 +00:00
argoyle 1b5d0812e1 Merge branch 'renovate/golang-1.25.3' into 'main'
chore(deps): update golang:1.25.3 docker digest to 69d1009

See merge request unboundsoftware/gitlab-cleanup-handler!323
2025-10-21 14:19:53 +02:00
Renovate b0c4036bb9 chore(deps): update golang:1.25.3 docker digest to 69d1009 2025-10-21 09:58:30 +00:00
argoyle 6a1ad4c397 Merge branch 'ci-add-initial-git-cliff-config' into 'main'
ci: add initial configuration for git-cliff

See merge request unboundsoftware/gitlab-cleanup-handler!321
2025-10-14 10:29:02 +02:00
argoyle cfd345f573 ci: add initial configuration for git-cliff
Add a default configuration file for git-cliff to manage
changelog generation. This includes templates for the header, 
body, and footer of the changelog, as well as settings for 
parsing and filtering commit messages according to the 
conventional commits specification. This change aims to 
streamline documentation of notable project changes.
2025-10-14 09:19:28 +02:00
argoyle 35ee52e376 Merge branch 'renovate/golang-1.x' into 'main'
chore(deps): update golang docker tag to v1.25.3

See merge request unboundsoftware/gitlab-cleanup-handler!320
2025-10-14 08:48:37 +02:00
argoyle e9b1f0009c Merge branch 'renovate/go-1.x' into 'main'
chore(deps): update dependency go to v1.25.3

See merge request unboundsoftware/gitlab-cleanup-handler!319
2025-10-14 08:48:11 +02:00
Renovate fb393d26e1 chore(deps): update golang docker tag to v1.25.3 2025-10-13 23:59:16 +00:00
Renovate 5ec8573556 chore(deps): update dependency go to v1.25.3 2025-10-13 21:57:50 +00:00
argoyle c83ebad0ff Merge branch 'renovate/golang-1.x' into 'main'
chore(deps): update golang docker tag to v1.25.2

See merge request unboundsoftware/gitlab-cleanup-handler!318
2025-10-08 08:59:14 +02:00
Renovate d94cc684a1 chore(deps): update golang docker tag to v1.25.2 2025-10-07 22:09:08 +00:00
Renovate e792f90075 chore(deps): update dependency go to v1.25.2 2025-10-07 19:10:10 +00:00
Renovate a183a53404 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.23.0 2025-10-02 10:00:43 +00:00
Renovate fc50d1df2c chore(deps): update golang:1.25.1 docker digest to 12640a4 2025-10-01 13:59:11 +00:00
Renovate d9bf362394 chore(deps): update pre-commit hook golangci/golangci-lint to v2.5.0 2025-09-21 19:58:03 +00:00
Renovate 181ca1e384 chore(deps): update pre-commit hook lietu/go-pre-commit to v1 2025-09-13 09:12:36 +00:00
Unbound Release 1ce2070503 chore(release): prepare for v0.0.19 2025-09-10 11:02:50 +00:00
Renovate 7b82fe137b fix(deps): update kubernetes packages to v0.34.1 2025-09-10 08:57:30 +00:00
Renovate d89c127b0c chore(deps): update golang:1.25.1 docker digest to 53f7808 2025-09-08 23:23:36 +00:00
Renovate bcdaa7c401 chore(deps): update golang docker tag to v1.25.1 2025-09-04 08:11:46 +02:00
Renovate 8ee6f2189c chore(deps): update dependency go to v1.25.1 2025-09-03 18:57:34 +00:00
Unbound Release 243a794ed2 chore(release): prepare for v0.0.18 2025-08-28 10:43:58 +02:00
Renovate cdc9343639 fix(deps): update kubernetes packages to v0.34.0 2025-08-28 08:58:27 +02:00
Renovate 875717f397 fix(deps): update module github.com/stretchr/testify to v1.11.1 2025-08-27 12:01:07 +00:00
Renovate 215bd26d41 fix(deps): update module github.com/stretchr/testify to v1.11.0 2025-08-24 16:59:22 +00:00
Renovate cf35f56654 chore(deps): update golang:1.25.0 docker digest to f6b9e1a 2025-08-22 18:58:54 +00:00
Unbound Release 481951de0e chore(release): prepare for v0.0.17 2025-08-14 20:45:51 +02:00
Renovate 7ee2317140 chore(deps): update dependency go to v1.25.0 2025-08-14 14:58:37 +00:00
Renovate 94fcb060d3 fix(deps): update kubernetes packages to v0.33.4 2025-08-14 09:54:54 +02:00
Renovate 1161820b94 chore(deps): update golang docker tag to v1.25.0 2025-08-14 09:54:08 +02:00
Renovate e4d3d8841a chore(deps): update pre-commit hook golangci/golangci-lint to v2.4.0 2025-08-13 20:58:57 +00:00
Renovate fb20a6a806 chore(deps): update golang:1.24.6 docker digest to 958bfd1 2025-08-12 22:58:19 +00:00
Renovate 328fabe3b5 chore(deps): update pre-commit hook pre-commit/pre-commit-hooks to v6 2025-08-09 19:58:16 +00:00
Renovate 11d51f6fdf chore(deps): update golang docker tag to v1.24.6 2025-08-07 08:24:21 +02:00
Renovate ec59963e86 chore(deps): update dependency go to v1.24.6 2025-08-06 18:58:16 +00:00
Renovate 6b8a91184d chore(deps): update pre-commit hook golangci/golangci-lint to v2.3.1 2025-08-02 21:58:35 +00:00
Renovate d0e61803c7 chore(deps): update golang:1.24.5 docker digest to 0a156a4 2025-07-22 04:57:41 +00:00
Renovate a9b4316b9e chore(deps): update pre-commit hook golangci/golangci-lint to v2.3.0 2025-07-21 14:57:48 +00:00
Renovate 4a6dfee862 fix(deps): update module github.com/alecthomas/kong to v1.12.1 2025-07-21 03:57:56 +00:00
Unbound Release 878b7183f7 chore(release): prepare for v0.0.16 2025-07-16 15:49:36 +00:00
Renovate 2beecabd67 fix(deps): update kubernetes packages to v0.33.3 2025-07-16 05:02:28 +00:00
Renovate b2e5cb0136 chore(deps): update pre-commit hook golangci/golangci-lint to v2.2.2 2025-07-11 12:54:35 +00:00
Renovate ce6b366df2 chore(deps): update golang docker tag to v1.24.5 2025-07-09 18:55:36 +00:00
Renovate 0305a116a7 chore(deps): update dependency go to v1.24.5 2025-07-08 17:54:40 +00:00
Unbound Release fce6d63e6d chore(release): prepare for v0.0.15 2025-07-01 14:23:43 +02:00
argoyle 44c05fece4 fix(client): handle error responses with detailed messages
Adds error handling for non-OK HTTP status codes in the client.
Implements custom error messages by reading the response body
when the status code indicates an error, ensuring better
debugging and clarity during failures.
Enhances unit tests to cover unauthorized access and incorrect 
body length scenarios, validating the error handling mechanism.
2025-07-01 08:27:58 +02:00
Renovate a6450faf0b chore(deps): update golang:1.24.4 docker digest to 9f820b6 2025-07-01 05:54:43 +00:00
Renovate a8c79c3337 chore(deps): update pre-commit hook golangci/golangci-lint to v2.2.1 2025-06-29 21:54:10 +00:00
Renovate 58c406980b chore(deps): update pre-commit hook golangci/golangci-lint to v2.2.0 2025-06-28 20:54:27 +00:00
Renovate 30ce3662a2 fix(deps): update module github.com/alecthomas/kong to v1.12.0 2025-06-25 00:55:09 +00:00
argoyle c409daacf7 chore(ci): update CI configuration for pipeline templates
Add additional CI templates for more flexible workflows. 
Include the Defaults.gitlab-ci.yml to standardize 
settings and add another project reference for 
enhanced release management. This improves 
project consistency and maintainability across 
different environments.
2025-06-23 13:44:24 +02:00
Unbound Release 441f70247e chore(release): prepare for v0.0.14 2025-06-20 10:32:59 +00:00
Renovate 8572bff4b2 fix(deps): update kubernetes packages to v0.33.2 2025-06-19 17:53:55 +00:00
Renovate 48e47e7348 chore(deps): update golang:1.24.4 docker digest to 3494bbe 2025-06-11 03:02:10 +00:00
Renovate 616ee972d2 chore(deps): update golang docker tag to v1.24.4 2025-06-05 20:55:02 +00:00
Renovate 944ab85df1 chore(deps): update dependency go to v1.24.4 2025-06-05 18:54:09 +00:00
Renovate ea622f2649 chore(deps): update golang:1.24.3 docker digest to f255a7d 2025-05-22 01:55:00 +00:00
Unbound Release 4afe2fcdd6 chore(release): prepare for v0.0.13 2025-05-16 11:17:27 +02:00
Renovate 35521ccc16 fix(deps): update kubernetes packages to v0.33.1 2025-05-15 23:54:04 +00:00
Renovate 6a9b07be80 fix(deps): update module github.com/alecthomas/kong to v1.11.0 2025-05-15 11:05:04 +00:00
Renovate b8ec89b9b8 chore(deps): update golang docker tag to v1.24.3 2025-05-06 20:55:07 +00:00
Renovate b0ee6645ed chore(deps): update dependency go to v1.24.3 2025-05-06 18:54:42 +00:00
Renovate 5fe751ebdd chore(deps): update pre-commit hook golangci/golangci-lint to v2.1.6 2025-05-04 15:54:03 +00:00
Renovate 48d554cc23 chore(deps): update golang:1.24.2 docker digest to bf7899c 2025-04-29 00:56:11 +00:00
Renovate 617eebef2e chore(deps): update pre-commit hook golangci/golangci-lint to v2.1.5 2025-04-24 19:54:25 +00:00
Renovate 883b5e099d chore(deps): update pre-commit hook golangci/golangci-lint to v2.1.4 2025-04-24 17:56:45 +00:00
Unbound Release 30a41ea6ad chore(release): prepare for v0.0.12 2025-04-24 06:32:51 +00:00
Renovate 088891422f fix(deps): update kubernetes packages to v0.33.0 2025-04-23 21:54:06 +00:00
Unbound Release 2d4a3cb251 chore(release): prepare for v0.0.11 2025-04-23 16:00:08 +02:00
Renovate 6863426da6 fix(deps): update kubernetes packages to v0.32.4 2025-04-23 10:54:12 +00:00
Renovate 379e9ab26a chore(deps): update pre-commit hook golangci/golangci-lint to v2.1.2 2025-04-15 13:55:30 +00:00
Renovate 1a91ef7713 chore(deps): update pre-commit hook golangci/golangci-lint to v2.1.1 2025-04-12 18:55:35 +00:00
Renovate 97b11462b1 chore(deps): update golang:1.24.2 docker digest to aebb7df 2025-04-08 05:54:17 +00:00
Renovate b225227ad7 chore(deps): update golang docker tag to v1.24.2 2025-04-01 17:56:29 +00:00
Renovate 4f6e5d3783 fix(deps): update module github.com/alecthomas/kong to v1.10.0 2025-04-01 03:54:52 +00:00
Renovate c59d8cb031 chore(deps): update pre-commit hook golangci/golangci-lint to v2.0.2 2025-03-25 21:54:07 +00:00
Renovate b6b9c7a663 chore(deps): update pre-commit hook golangci/golangci-lint to v2.0.1 2025-03-24 20:54:02 +00:00
Renovate 466ba0f8db chore(deps): update pre-commit hook golangci/golangci-lint to v2 2025-03-24 14:03:28 +01:00
Renovate 9d5370cd7b chore(deps): update golang:1.24.1 docker digest to 5ecf333 2025-03-18 03:53:53 +00:00
Renovate 94a258fc59 chore(deps): update pre-commit hook golangci/golangci-lint to v1.64.8 2025-03-17 20:53:54 +00:00
Unbound Release da657666e5 chore(release): prepare for v0.0.10 2025-03-12 11:03:53 +01:00
Renovate 6e4503a091 fix(deps): update kubernetes packages to v0.32.3 2025-03-12 08:55:08 +00:00
Renovate 9504204883 chore(deps): update pre-commit hook golangci/golangci-lint to v1.64.7 2025-03-11 23:53:31 +00:00
Renovate 2214f446a3 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.22.0 2025-03-11 14:53:51 +00:00
Renovate ac986a7202 fix(deps): update module github.com/alecthomas/kong to v1.9.0 2025-03-11 06:54:01 +00:00
Renovate 46cb781e63 chore(deps): update golang docker tag to v1.24.1 2025-03-04 22:54:09 +00:00
Unbound Release c99ec57656 chore(release): prepare for v0.0.9 2025-03-03 06:49:49 +00:00
Renovate 9fcb42255f chore(deps): update pre-commit hook golangci/golangci-lint to v1.64.6 2025-03-02 23:53:33 +00:00
argoyle 62164f0ec1 fix(docker): use amd64 golang base image for build
Replace the Golang base image with the amd64 variant to ensure
compatibility across different architectures and improve
build consistency.
2025-02-25 21:30:11 +01:00
Renovate a5829024f8 chore(deps): update golang:1.24.0 docker digest to 58cf31c 2025-02-25 18:54:54 +00:00
Renovate 28567b78d0 chore(deps): update golang:1.24.0 docker digest to a14c5a6 2025-02-25 12:53:41 +00:00
Renovate 1daa6f7620 chore(deps): update golang:1.24.0 docker digest to 5255fad 2025-02-25 06:53:43 +00:00
Renovate 970add00ce chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.21.0 2025-02-15 14:54:06 +00:00
Renovate 74d22cb46e chore(deps): update pre-commit hook golangci/golangci-lint to v1.64.5 2025-02-13 21:54:52 +00:00
Renovate 173d6700dd fix(deps): update module github.com/alecthomas/kong to v1.8.1 2025-02-13 19:54:47 +00:00
Renovate c8485c2cfd fix(deps): update kubernetes packages to v0.32.2 2025-02-13 15:54:17 +00:00
Renovate 00993df119 chore(deps): update golang:1.24.0 docker digest to 2b1cbf2 2025-02-13 09:02:03 +00:00
Renovate ab35b88b20 chore(deps): update pre-commit hook golangci/golangci-lint to v1.64.4 2025-02-12 22:54:38 +00:00
Renovate 94d298bbbf chore(deps): update pre-commit hook golangci/golangci-lint to v1.64.3 2025-02-12 20:24:58 +00:00
Renovate 19686fd262 chore(deps): update golang docker tag to v1.24.0 2025-02-12 19:54:43 +00:00
Renovate 93a3d0574c chore(deps): update pre-commit hook golangci/golangci-lint to v1.64.2 2025-02-11 21:54:12 +00:00
Renovate 4d23742f77 fix(deps): update module github.com/alecthomas/kong to v1.8.0 2025-02-09 23:54:51 +00:00
argoyle d752a696fd fix(deps): update Go version to 1.23.6 in go.mod
Updates the Go version in the go.mod file from 1.23.0 to 1.23.6 to 
ensure compatibility with the latest features and optimizations. 
This change also aligns the Go toolchain version accordingly.
2025-02-06 18:04:21 +01:00
Renovate 48d7b3abcf chore(deps): update golang:1.23.6 docker digest to 9271129 2025-02-05 09:55:36 +00:00
Renovate 5063074d72 chore(deps): update golang:1.23.6 docker digest to 958bd2e 2025-02-05 06:53:57 +00:00
Renovate 5f420aad6b chore(deps): update golang docker tag to v1.23.6 2025-02-05 03:54:50 +00:00
Renovate cb834d679c chore(deps): update dependency go to v1.23.6 2025-02-04 16:54:45 +00:00
Renovate da2fcdfee0 chore(deps): update golang:1.23.5 docker digest to e213430 2025-02-04 09:55:32 +00:00
Renovate b91394dc70 fix(deps): update module github.com/alecthomas/kong to v1.7.0 2025-01-30 02:56:42 +00:00
Renovate b9f35928d7 chore(deps): update golang:1.23.5 docker digest to 8c10f21 2025-01-22 03:58:08 +00:00
Unbound Release 336ba7a252 chore(release): prepare for v0.0.8 2025-01-17 12:27:20 +00:00
Renovate 3ea869133f chore(deps): update golang docker tag to v1.23.5 2025-01-17 07:26:25 +00:00
Renovate 66b5c866eb chore(deps): update dependency go to v1.23.5 2025-01-16 20:56:36 +00:00
Renovate d9fd6fcbf2 fix(deps): update kubernetes packages to v0.32.1 2025-01-16 17:09:09 +00:00
Renovate 8b88cd63fa chore(deps): update golang:1.23.4 docker digest to 9820aca 2025-01-15 23:12:20 +00:00
Renovate 99b94c345e chore(deps): update golang:1.23.4 docker digest to 5305905 2025-01-15 18:56:00 +00:00
Renovate d16a733617 chore(deps): update golang:1.23.4 docker digest to 585103a 2025-01-15 00:57:58 +00:00
Renovate c148d7cbea chore(deps): update golang:1.23.4 docker digest to 08e1417 2025-01-14 12:57:11 +00:00
Renovate 6affb3f463 chore(deps): update golang:1.23.4 docker digest to 3b1a7de 2025-01-14 07:14:17 +00:00
Renovate 343c758b4e fix(deps): update module github.com/alecthomas/kong to v1.6.1 2025-01-07 00:58:01 +00:00
Renovate 6b6abec02d chore(deps): update pre-commit hook golangci/golangci-lint to v1.63.4 2025-01-03 19:56:43 +00:00
Renovate 016634843c chore(deps): update pre-commit hook golangci/golangci-lint to v1.63.3 2025-01-02 19:56:30 +00:00
Renovate 4f6195f1dc chore(deps): update pre-commit hook golangci/golangci-lint to v1.63.2 2025-01-02 12:55:51 +00:00
Renovate 1ca41ea6ed chore(deps): update pre-commit hook golangci/golangci-lint to v1.63.1 2025-01-01 21:55:54 +00:00
Renovate 488f1c6def chore(deps): update pre-commit hook golangci/golangci-lint to v1.63.0 2025-01-01 13:56:21 +00:00
Unbound Release 7857892e26 chore(release): prepare for v0.0.7 2024-12-28 17:49:48 +00:00
argoyle 35f0106ca5 chore(golangci): increase timeout to 5 minutes
Set the timeout for golangci-lint to 5 minutes to allow for 
longer linting processes, improving the reliability of the 
linting checks in larger projects.
2024-12-28 17:15:31 +01:00
Renovate 0ce7075a7d chore(deps): update golang:1.23.4 docker digest to 7ea4c9d 2024-12-26 03:57:12 +00:00
Renovate ed8faa425a chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.20.0 2024-12-16 14:57:36 +00:00
Renovate e71460451c chore(deps): update golang:1.23.4 docker digest to 7003184 2024-12-12 08:53:08 +00:00
Renovate a154b99db9 fix(deps): update kubernetes packages to v0.32.0 2024-12-11 23:55:12 +00:00
Renovate 24926b1e6b fix(deps): update kubernetes packages to v0.31.4 2024-12-11 02:57:36 +00:00
Renovate b69b6cd719 fix(deps): update module github.com/alecthomas/kong to v1.6.0 2024-12-07 08:57:06 +00:00
argoyle 2b783d5454 ci: simplify CI configuration by removing unused variables
Removes unnecessary Docker variables and services from the CI 
configuration. This streamlines the build process and reduces 
complexity, improving overall maintenance and clarity.
2024-12-05 10:53:26 +01:00
Renovate ae64454552 chore(deps): update golang:1.23.4 docker digest to 574185e 2024-12-04 11:57:29 +00:00
Renovate e7a9cedba9 chore(deps): update golang docker tag to v1.23.4 2024-12-04 05:55:23 +00:00
Renovate 567685b5a3 chore(deps): update dependency go to v1.23.4 2024-12-03 21:18:30 +00:00
Renovate 898f92d162 chore(deps): update golang:1.23.3 docker digest to 017ec6b 2024-12-03 20:58:10 +00:00
Renovate ab2c161661 chore(deps): update golang:1.23.3 docker digest to 2b01164 2024-12-03 14:56:52 +00:00
Renovate 79cdce78f1 chore(deps): update golang:1.23.3 docker digest to b4aabba 2024-12-03 11:55:13 +00:00
Renovate a023696c72 chore(deps): update golang:1.23.3 docker digest to ee5f0ad 2024-12-03 10:02:07 +00:00
Renovate 744acca75c fix(deps): update module github.com/alecthomas/kong to v1.5.1 2024-12-02 23:55:39 +00:00
Renovate 29795df42b fix(deps): update module github.com/alecthomas/kong to v1.5.0 2024-12-01 14:54:04 +00:00
Renovate 5caa401f97 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.19.0 2024-11-27 17:54:19 +00:00
Renovate 905c7319d8 chore(deps): update pre-commit hook golangci/golangci-lint to v1.62.2 2024-11-25 14:54:33 +00:00
Renovate 01863d8ca9 fix(deps): update module github.com/stretchr/testify to v1.10.0 2024-11-23 11:56:03 +00:00
Unbound Release 6f8de378f4 chore(release): prepare for v0.0.6 2024-11-21 10:09:19 +00:00
Renovate 9b61f39539 fix(deps): update kubernetes packages to v0.31.3 2024-11-21 08:53:17 +00:00
Renovate 34bdeb4970 chore(deps): update golang:1.23.3 docker digest to 73f06be 2024-11-14 23:54:18 +00:00
argoyle 8b0294fd9b ci: remove pre-commit stage and include Go pre-commit template
Removes the pre-commit stage from the CI pipeline to streamline 
the build process. Includes a new template for Go pre-commit 
checks to enforce code quality and maintainability standards.
2024-11-14 09:33:49 +01:00
Renovate 871ad5d3b1 chore(deps): update golang:1.23.3 docker digest to c2d828f 2024-11-13 20:56:00 +00:00
Renovate ce11a81ee6 chore(deps): update golang:1.23.3 docker digest to 2660218 2024-11-13 11:55:08 +00:00
Renovate 58c72fc8c9 chore(deps): update golang:1.23.3 docker digest to b2ca381 2024-11-13 08:54:43 +00:00
Renovate 06e9fdee4d chore(deps): update golang:1.23.3 docker digest to 3694e36 2024-11-13 05:54:26 +00:00
Renovate fd4c9b17f0 chore(deps): update unbound/pre-commit docker digest to e78425c 2024-11-12 11:54:55 +00:00
Renovate 972665a2a5 chore(deps): update golang:1.23.3 docker digest to 8956c08 2024-11-12 08:53:49 +00:00
Renovate 6932a38313 chore(deps): update pre-commit hook golangci/golangci-lint to v1.62.0 2024-11-10 20:55:40 +00:00
Renovate 2c1c9a16c7 chore(deps): update unbound/pre-commit docker digest to 596abf5 2024-11-07 11:54:34 +00:00
Renovate 35cef35196 chore(deps): update golang docker tag to v1.23.3 2024-11-07 08:53:46 +00:00
Renovate da75836def chore(deps): update dependency go to v1.23.3 2024-11-06 23:53:56 +00:00
Renovate bee63c104d fix(deps): update module github.com/alecthomas/kong to v1.4.0 2024-11-05 23:54:10 +00:00
Renovate 81c1093d42 chore(deps): pin unbound/pre-commit docker tag to 92fce44 2024-11-03 17:53:24 +00:00
Renovate 11821176c6 chore(deps): pin golang docker tag to ad5c126 2024-11-03 16:33:44 +00:00
Renovate 36d5aaa874 fix(deps): update module github.com/alecthomas/kong to v1.3.0 2024-11-01 02:55:40 +00:00
Unbound Release 5333a8eb05 chore(release): prepare for v0.0.5 2024-10-24 05:35:59 +00:00
Renovate 331cda981a fix(deps): update kubernetes packages to v0.31.2 2024-10-23 16:53:04 +00:00
Unbound Release 32f98f2ea0 chore(release): prepare for v0.0.4 2024-10-06 10:10:16 +00:00
Renovate 8c7c9d410e chore(deps): update pre-commit hook pre-commit/pre-commit-hooks to v5 2024-10-05 19:55:19 +00:00
argoyle fdcc16ffa2 ci: add release flow 2024-10-05 21:12:01 +02:00
Renovate fd2b5a0b85 chore(deps): update golang docker tag to v1.23.2 2024-10-02 04:33:07 +00:00
Renovate fa20b78248 chore(deps): update dependency go to v1.23.2 2024-10-01 19:55:53 +00:00
Renovate 98c5eae95d fix(deps): update kubernetes packages to v0.31.1 2024-09-12 07:53:58 +00:00
Renovate 647aae1cf7 fix(deps): update module github.com/alecthomas/kong to v1.2.1 2024-09-12 04:56:38 +00:00
Renovate 3a3af1689a chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.18.0 2024-09-11 10:53:26 +00:00
Renovate f375e7e052 fix(deps): update module github.com/alecthomas/kong to v1.2.0 2024-09-11 01:54:54 +00:00
Renovate cc7d33c44e fix(deps): update module github.com/alecthomas/kong to v1 2024-09-10 14:34:24 +00:00
Renovate 9cb5c887b5 chore(deps): update pre-commit hook golangci/golangci-lint to v1.61.0 2024-09-09 19:54:33 +00:00
Renovate 354bd86450 chore(deps): update golang docker tag to v1.23.1 2024-09-06 05:26:02 +00:00
Renovate 46fc4bff8e chore(deps): update dependency go to v1.23.1 2024-09-05 16:53:24 +00:00
Renovate 32660a82e0 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.17.0 2024-08-28 16:54:03 +00:00
Renovate 128debd57f chore(deps): update pre-commit hook golangci/golangci-lint to v1.60.3 2024-08-22 22:54:15 +00:00
Renovate 4668107a56 chore(deps): update pre-commit hook golangci/golangci-lint to v1.60.2 2024-08-20 22:53:41 +00:00
Renovate ff1055a24d chore(deps): update golang docker tag to v1.23.0 2024-08-14 07:18:46 +00:00
Renovate f7f5558d85 chore(deps): update pre-commit hook golangci/golangci-lint to v1.60.1 2024-08-14 01:54:27 +00:00
Renovate 21c4eea59d fix(deps): update kubernetes packages to v0.31.0 2024-08-13 18:25:25 +00:00
Renovate 05c98c9a09 chore(deps): update dependency go to v1.23.0 2024-08-13 16:54:03 +00:00
Renovate 46e2c9a147 chore(deps): update golang docker tag to v1.22.6 2024-08-07 01:54:32 +00:00
Renovate 4c1f31fab0 chore(deps): update dependency go to v1.22.6 2024-08-06 19:55:04 +00:00
Renovate c6282ba233 fix(deps): update kubernetes packages to v0.30.3 2024-07-17 22:52:47 +00:00
Renovate a5aef397a7 chore(deps): update golang docker tag to v1.22.5 2024-07-03 01:53:28 +00:00
Renovate ad629cb9eb chore(deps): update dependency go to v1.22.5 2024-07-02 19:54:36 +00:00
Renovate 64ec04ea57 fix(deps): update kubernetes packages to v0.30.2 2024-06-12 19:54:40 +00:00
Renovate 7752f4a839 chore(deps): update pre-commit hook golangci/golangci-lint to v1.59.1 2024-06-09 19:53:03 +00:00
Renovate cc8715fee2 chore(deps): update golang docker tag to v1.22.4 2024-06-05 07:50:03 +00:00
Renovate 81f99c19c3 chore(deps): update dependency go to v1.22.4 2024-06-04 19:54:05 +00:00
Renovate aa55beb2be chore(deps): update pre-commit hook golangci/golangci-lint to v1.59.0 2024-05-26 19:53:04 +00:00
Renovate 055a9d3a9b chore(deps): update pre-commit hook golangci/golangci-lint to v1.58.2 2024-05-19 19:53:49 +00:00
Renovate d484a609fd fix(deps): update kubernetes packages to v0.30.1 2024-05-15 13:53:42 +00:00
Renovate 942b8de551 chore(deps): update pre-commit hook golangci/golangci-lint to v1.58.1 2024-05-08 19:53:37 +00:00
Renovate eff4dd4d57 chore(deps): update golang docker tag to v1.22.3 2024-05-07 19:53:14 +00:00
Renovate 434f97c634 chore(deps): update dependency go to v1.22.3 2024-05-07 16:53:33 +00:00
Renovate a95d76597d chore(deps): update pre-commit hook golangci/golangci-lint to v1.58.0 2024-05-03 19:53:28 +00:00
Renovate 3c9e89e0e7 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.16.0 2024-04-23 16:52:42 +00:00
Renovate 03c7144435 fix(deps): update kubernetes packages to v0.30.0 2024-04-18 11:26:54 +00:00
Renovate 45c79856fe chore(deps): update dependency go to v1.22.2 2024-04-17 19:53:01 +00:00
Renovate e2db941073 fix(deps): update module k8s.io/client-go to v0.29.4 2024-04-17 17:26:08 +00:00
Renovate d3b1794c35 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.15.0 2024-04-16 22:53:25 +00:00
Renovate 7b52fd0407 chore(deps): update pre-commit hook pre-commit/pre-commit-hooks to v4.6.0 2024-04-06 19:53:31 +00:00
Renovate 7e4cb7de71 chore(deps): update golang docker tag to v1.22.2 2024-04-03 19:52:38 +00:00
Renovate e625ed6480 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.14.0 2024-04-03 13:52:20 +00:00
Renovate c6e82ee7b5 chore(deps): update pre-commit hook golangci/golangci-lint to v1.57.2 2024-03-28 20:52:25 +00:00
Renovate c584c1db1e chore(deps): update pre-commit hook golangci/golangci-lint to v1.57.1 2024-03-20 17:52:28 +00:00
Renovate 6e3785aade chore(deps): update pre-commit hook golangci/golangci-lint to v1.57.0 2024-03-19 23:53:24 +00:00
Renovate 0b43f8ba75 fix(deps): update kubernetes packages to v0.29.3 2024-03-15 23:52:09 +00:00
Renovate 56856b8dac fix(deps): update module github.com/alecthomas/kong to v0.9.0 2024-03-08 06:53:38 +00:00
Renovate dcc0dbc66d chore(deps): update golang docker tag to v1.22.1 2024-03-05 19:53:13 +00:00
Renovate 69bc925279 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.13.0 2024-03-01 17:52:17 +00:00
Renovate 33698925a0 fix(deps): update module github.com/stretchr/testify to v1.9.0 2024-03-01 12:53:53 +00:00
Renovate 5d3e90cb65 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.12.0 2024-02-26 21:53:16 +00:00
Renovate 1f8fdc5f64 chore(deps): update pre-commit hook lietu/go-pre-commit to v0.1.0 2024-02-26 09:20:34 +00:00
Renovate 96d30828ea chore(deps): update pre-commit hook pre-commit/pre-commit-hooks to v4.5.0 2024-02-26 09:09:21 +00:00
Renovate 55ebd29d96 chore(deps): update pre-commit hook markdownlint/markdownlint to v0.13.0 2024-02-26 08:53:29 +00:00
Renovate 1c71e45e4d chore(deps): update pre-commit hook golangci/golangci-lint to v1.56.2 2024-02-26 07:53:24 +00:00
Renovate 689d218194 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.11.0 2024-02-26 07:04:46 +00:00
Renovate a39df3dd78 chore(deps): update pre-commit hook devopshq/gitlab-ci-linter to v1.0.6 2024-02-26 06:52:32 +00:00
argoyle d16c2b4e3a ci: remove Dependabot config 2024-02-23 23:30:21 +01:00
Renovate 57cf534964 Add renovate.json 2024-02-23 16:52:47 +00:00
argoyle 490553a7a4 build(deps): bump k8s.io/client-go from 0.29.1 to 0.29.2
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.29.1 to 0.29.2.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.29.1...v0.29.2)
2024-02-15 13:25:07 +00:00
argoyle 48f98c64a7 build(deps): bump golang from 1.21.6 to 1.22.0
Bumps golang from 1.21.6 to 1.22.0.
2024-02-07 14:31:43 +00:00
argoyle 1768676c92 build(deps): bump k8s.io/client-go from 0.29.0 to 0.29.1
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.29.0 to 0.29.1.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.29.0...v0.29.1)
2024-01-18 13:25:07 +00:00
argoyle 820bd5e462 build(deps): bump golang from 1.21.5 to 1.21.6
Bumps golang from 1.21.5 to 1.21.6.
2024-01-10 14:32:15 +00:00
argoyle 4de710a5d0 build(deps): bump k8s.io/client-go from 0.28.4 to 0.29.0
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.28.4 to 0.29.0.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.28.4...v0.29.0)
2023-12-14 15:10:30 +01:00
argoyle c3ff190d43 build(deps): bump golang from 1.21.4 to 1.21.5
Bumps golang from 1.21.4 to 1.21.5.
2023-12-06 14:31:45 +00:00
argoyle 660d4436b2 build(deps): bump k8s.io/client-go from 0.28.3 to 0.28.4
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.28.3 to 0.28.4.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.28.3...v0.28.4)
2023-11-16 13:24:59 +00:00
argoyle 826009c3b1 build(deps): bump golang from 1.21.3 to 1.21.4
Bumps golang from 1.21.3 to 1.21.4.
2023-11-08 14:31:51 +00:00
argoyle 0500288308 build(deps): bump k8s.io/client-go from 0.28.2 to 0.28.3
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.28.2 to 0.28.3.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.28.2...v0.28.3)
2023-10-19 13:25:33 +00:00
argoyle 9f7c371c37 build(deps): [security] bump golang.org/x/net from 0.13.0 to 0.17.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.13.0 to 0.17.0. **This update includes a security fix.**
- [Commits](https://github.com/golang/net/compare/v0.13.0...v0.17.0)
2023-10-12 13:24:41 +00:00
argoyle 311fcfe221 build(deps): bump golang from 1.21.2 to 1.21.3
Bumps golang from 1.21.2 to 1.21.3.
2023-10-11 14:31:33 +00:00
argoyle 1426a93a3e build(deps): bump github.com/alecthomas/kong from 0.8.0 to 0.8.1
Bumps [github.com/alecthomas/kong](https://github.com/alecthomas/kong) from 0.8.0 to 0.8.1.
- [Commits](https://github.com/alecthomas/kong/compare/v0.8.0...v0.8.1)
2023-10-11 13:24:34 +00:00
argoyle ddc43c870b build(deps): bump golang from 1.21.1 to 1.21.2
Bumps golang from 1.21.1 to 1.21.2.
2023-10-06 14:31:20 +00:00
argoyle 71eede2f71 build(deps): bump k8s.io/client-go from 0.28.1 to 0.28.2
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.28.1 to 0.28.2.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.28.1...v0.28.2)
2023-09-14 13:26:42 +00:00
argoyle ae356ac4ab build(deps): bump golang from 1.21.0 to 1.21.1
Bumps golang from 1.21.0 to 1.21.1.
2023-09-07 14:31:23 +00:00
argoyle 6b1982ae5e build(deps): bump k8s.io/client-go from 0.28.0 to 0.28.1
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.28.0 to 0.28.1.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.28.0...v0.28.1)
2023-08-25 13:25:10 +00:00
argoyle b4c29e3a52 build(deps): bump k8s.io/client-go from 0.27.4 to 0.28.0
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.27.4 to 0.28.0.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.27.4...v0.28.0)
2023-08-16 13:25:19 +00:00
argoyle 3b92203687 build(deps): bump golang from 1.20.7 to 1.21.0
Bumps golang from 1.20.7 to 1.21.0.
2023-08-09 16:47:48 +00:00
argoyle a2da47a614 ci: change repo for markdownlint and update golangci-lint 2023-08-09 18:35:30 +02:00
argoyle 71ba784b62 build(deps): bump golang from 1.20.6 to 1.20.7
Bumps golang from 1.20.6 to 1.20.7.
2023-08-02 14:31:16 +00:00
argoyle 9d4a840972 build(deps): bump k8s.io/client-go from 0.27.3 to 0.27.4
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.27.3 to 0.27.4.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.27.3...v0.27.4)
2023-07-20 13:25:11 +00:00
argoyle 473f57918c build(deps): bump golang from 1.20.5 to 1.20.6
Bumps golang from 1.20.5 to 1.20.6.
2023-07-17 08:56:20 +00:00
argoyle 318e08d4ae ci: use pre-commit image 2023-07-16 10:59:18 +02:00
argoyle 63478a5cb5 build(deps): bump github.com/alecthomas/kong from 0.7.1 to 0.8.0
Bumps [github.com/alecthomas/kong](https://github.com/alecthomas/kong) from 0.7.1 to 0.8.0.
- [Commits](https://github.com/alecthomas/kong/compare/v0.7.1...v0.8.0)
2023-06-22 13:24:49 +00:00
argoyle c44f0bbfe4 build(deps): bump k8s.io/client-go from 0.27.2 to 0.27.3
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.27.2 to 0.27.3.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.27.2...v0.27.3)
2023-06-15 13:25:06 +00:00
argoyle a2df6a1924 build(deps): bump golang from 1.20.4 to 1.20.5
Bumps golang from 1.20.4 to 1.20.5.
2023-06-07 14:31:45 +00:00
argoyle 198ceef571 ci: update golangci-lint 2023-06-04 16:47:54 +02:00
argoyle 47fac51216 build(deps): bump github.com/stretchr/testify from 1.8.3 to 1.8.4
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.3 to 1.8.4.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.8.3...v1.8.4)
2023-05-30 13:24:52 +00:00
argoyle 8e10cae67f build(deps): bump github.com/stretchr/testify from 1.8.2 to 1.8.3
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.2 to 1.8.3.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.8.2...v1.8.3)
2023-05-19 13:24:37 +00:00
argoyle 534b0b9c70 build(deps): bump k8s.io/client-go from 0.27.1 to 0.27.2
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.27.1 to 0.27.2.
- [Release notes](https://github.com/kubernetes/client-go/releases)
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.27.1...v0.27.2)
2023-05-18 19:03:00 +00:00
argoyle cabe6a7003 chore: update pre-commit and fix golangci-lint 2023-05-18 20:36:42 +02:00
argoyle 9f83b042e3 build(deps): bump golang from 1.20.3 to 1.20.4
Bumps golang from 1.20.3 to 1.20.4.
2023-05-04 08:11:31 +02:00
argoyle cfb0db7f4d build(deps): bump k8s.io/client-go from 0.27.0 to 0.27.1
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.27.0 to 0.27.1.
- [Release notes](https://github.com/kubernetes/client-go/releases)
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.27.0...v0.27.1)
2023-04-15 13:25:01 +00:00
argoyle 0c0c50768b build(deps): bump k8s.io/client-go from 0.26.3 to 0.27.0
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.26.3 to 0.27.0.
- [Release notes](https://github.com/kubernetes/client-go/releases)
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.26.3...v0.27.0)
2023-04-12 13:24:46 +00:00
argoyle 61674935be ci: update to Go 1.20.3 and golangci-lint 1.52.2 2023-04-06 10:29:30 +02:00
argoyle 566fd18169 build(deps): bump golang from 1.20.2 to 1.20.3
Bumps golang from 1.20.2 to 1.20.3.
2023-04-05 14:31:21 +00:00
argoyle df4bb1c16d build(deps): bump k8s.io/client-go from 0.26.2 to 0.26.3
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.26.2 to 0.26.3.
- [Release notes](https://github.com/kubernetes/client-go/releases)
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.26.2...v0.26.3)
2023-03-18 13:25:03 +00:00
argoyle 5e60685f42 build(deps): bump golang from 1.20.1 to 1.20.2
Bumps golang from 1.20.1 to 1.20.2.
2023-03-08 14:31:11 +00:00
argoyle 961bc96603 build(deps): bump k8s.io/client-go from 0.26.1 to 0.26.2
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.26.1 to 0.26.2.
- [Release notes](https://github.com/kubernetes/client-go/releases)
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.26.1...v0.26.2)
2023-03-01 13:24:50 +00:00
argoyle 306c559217 build(deps): bump github.com/stretchr/testify from 1.8.1 to 1.8.2
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.1 to 1.8.2.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.8.1...v1.8.2)
2023-02-25 13:24:17 +00:00
argoyle 8d20a37434 build(deps): bump golang from 1.20.0 to 1.20.1
Bumps golang from 1.20.0 to 1.20.1.
2023-02-15 14:31:24 +00:00
argoyle 3451c8b1d8 ci: switch to manual rebases for Dependabot 2023-02-10 11:27:58 +01:00
argoyle 654d805eee ci: use Docker DinD version from variable 2023-02-09 21:55:41 +01:00
argoyle e3cdead2af build(deps): bump golang from 1.19.5 to 1.20.0
Bumps golang from 1.19.5 to 1.20.0.
2023-02-02 14:31:14 +00:00
argoyle 4fb1737dcb build(deps): bump k8s.io/client-go from 0.26.0 to 0.26.1
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.26.0 to 0.26.1.
- [Release notes](https://github.com/kubernetes/client-go/releases)
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.26.0...v0.26.1)
2023-01-19 13:25:09 +00:00
argoyle 69142f4229 build(deps): bump golang from 1.19.4 to 1.19.5
Bumps golang from 1.19.4 to 1.19.5.
2023-01-11 14:31:28 +00:00
argoyle cb6f47c4db build(deps): bump k8s.io/client-go from 0.25.4 to 0.26.0
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.25.4 to 0.26.0.
- [Release notes](https://github.com/kubernetes/client-go/releases)
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.25.4...v0.26.0)
2022-12-09 13:24:43 +00:00
argoyle f9b0feca70 build(deps): bump golang from 1.19.3 to 1.19.4
Bumps golang from 1.19.3 to 1.19.4.
2022-12-07 14:31:14 +00:00
argoyle 6580a7e862 build(deps): bump github.com/alecthomas/kong from 0.7.0 to 0.7.1
Bumps [github.com/alecthomas/kong](https://github.com/alecthomas/kong) from 0.7.0 to 0.7.1.
- [Release notes](https://github.com/alecthomas/kong/releases)
- [Commits](https://github.com/alecthomas/kong/compare/v0.7.0...v0.7.1)
2022-11-13 13:24:23 +00:00
argoyle e6015b2838 build(deps): bump k8s.io/client-go from 0.25.3 to 0.25.4
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.25.3 to 0.25.4.
- [Release notes](https://github.com/kubernetes/client-go/releases)
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.25.3...v0.25.4)
2022-11-11 13:25:31 +00:00
argoyle e558395416 build(deps): bump golang from 1.19.2 to 1.19.3
Bumps golang from 1.19.2 to 1.19.3.
2022-11-04 14:31:20 +00:00
argoyle ad92131a39 build(deps): bump github.com/alecthomas/kong from 0.6.1 to 0.7.0
Bumps [github.com/alecthomas/kong](https://github.com/alecthomas/kong) from 0.6.1 to 0.7.0.
- [Release notes](https://github.com/alecthomas/kong/releases)
- [Commits](https://github.com/alecthomas/kong/compare/v0.6.1...v0.7.0)
2022-10-25 13:25:20 +00:00
argoyle d9ffbf3092 build(deps): bump github.com/stretchr/testify from 1.8.0 to 1.8.1
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.8.0...v1.8.1)
2022-10-24 13:24:27 +00:00
argoyle a4c4a32a9f build(deps): bump k8s.io/client-go from 0.25.2 to 0.25.3
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.25.2 to 0.25.3.
- [Release notes](https://github.com/kubernetes/client-go/releases)
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.25.2...v0.25.3)
2022-10-18 09:11:24 +00:00
argoyle 13d14eb7fa build(deps): bump k8s.io/api from 0.25.2 to 0.25.3
Bumps [k8s.io/api](https://github.com/kubernetes/api) from 0.25.2 to 0.25.3.
- [Release notes](https://github.com/kubernetes/api/releases)
- [Commits](https://github.com/kubernetes/api/compare/v0.25.2...v0.25.3)
2022-10-14 13:25:33 +00:00
argoyle e8361bd43f build(deps): bump golang from 1.19.1 to 1.19.2
Bumps golang from 1.19.1 to 1.19.2.
2022-10-05 14:31:12 +00:00
argoyle 0c5d342b00 chore: add tests for handler 2022-10-02 09:40:33 +02:00
argoyle c587c75c82 build(deps): bump github.com/stretchr/testify from 1.7.2 to 1.8.0
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.7.2 to 1.8.0.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.7.2...v1.8.0)
2022-10-01 13:24:20 +00:00
argoyle 757dbe4349 ci: add checking of pre-commit rules 2022-10-01 00:59:01 +02:00
argoyle cfb7cc4f2f ci: add pre-commit config 2022-09-30 23:37:38 +02:00
argoyle 78867c3632 Merge branch 'fix-flaky-test' into 'main'
fix: flaky test

See merge request unboundsoftware/gitlab-cleanup-handler!7
2022-09-30 20:58:32 +00:00
argoyle 0f58b4c280 fix: flaky test 2022-09-30 22:32:56 +02:00
argoyle 510023284e Merge branch 'tests' into 'main'
chore: remove some duplication and add a first few tests

See merge request unboundsoftware/gitlab-cleanup-handler!6
2022-09-30 20:25:29 +00:00
argoyle 762fa4f747 chore: remove some duplication and add a first few tests 2022-09-30 22:07:56 +02:00
argoyle e124a2ed6b Merge branch 'fetch-tags' into 'main'
feat: add all existing tags to exclusion filter

See merge request unboundsoftware/gitlab-cleanup-handler!5
2022-09-27 08:16:05 +00:00
argoyle 1ab4f8361b feat: add all existing tags to exclusion filter 2022-09-27 10:00:16 +02:00
argoyle 908dd87e2d Merge branch 'dependabot-go_modules-k8s.io-client-go-0.25.2' into 'main'
build(deps): bump k8s.io/client-go from 0.25.1 to 0.25.2

See merge request unboundsoftware/gitlab-cleanup-handler!4
2022-09-22 16:41:23 +00:00
argoyle 39467cd2aa build(deps): bump k8s.io/client-go from 0.25.1 to 0.25.2
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.25.1 to 0.25.2.
- [Release notes](https://github.com/kubernetes/client-go/releases)
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.25.1...v0.25.2)
2022-09-22 13:24:31 +00:00
argoyle e0a6776bf0 Merge branch 'dependabot-go_modules-k8s.io-client-go-0.25.1' into 'main'
build(deps): bump k8s.io/client-go from 0.25.0 to 0.25.1

See merge request unboundsoftware/gitlab-cleanup-handler!2
2022-09-18 17:49:57 +00:00
argoyle 47bb67850c build(deps): bump k8s.io/client-go from 0.25.0 to 0.25.1
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.25.0 to 0.25.1.
- [Release notes](https://github.com/kubernetes/client-go/releases)
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.25.0...v0.25.1)
2022-09-17 13:24:32 +00:00
23 changed files with 1764 additions and 567 deletions
+4
View File
@@ -2,3 +2,7 @@ vendor
.gitignore
.git
Dockerfile
coverage.txt
coverage.html
/exported
/release
+43
View File
@@ -0,0 +1,43 @@
name: gitlab-cleanup-handler
on:
push:
branches: [main]
tags: ['*']
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: 'stable'
- name: Run tests
run: go test -race -coverprofile=coverage.txt ./...
vulnerabilities:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: 'stable'
- name: Check vulnerabilities
run: |
go install golang.org/x/vuln/cmd/govulncheck@latest
govulncheck ./...
build:
needs: [test, vulnerabilities]
runs-on: ubuntu-latest
env:
BUILDTOOLS_CONTENT: ${{ secrets.BUILDTOOLS_CONTENT }}
GITEA_REPOSITORY: ${{ gitea.repository }}
steps:
- uses: actions/checkout@v6
- uses: buildtool/setup-buildtools-action@v1
- name: Build and push
run: unset GITEA_TOKEN && build && push
+9
View File
@@ -0,0 +1,9 @@
name: Release
on:
push:
branches: [main]
jobs:
release:
uses: unboundsoftware/shared-workflows/.gitea/workflows/Release.yml@main
-21
View File
@@ -1,21 +0,0 @@
include:
- template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml'
stages:
- build
variables:
DOCKER_HOST: tcp://docker:2375/
image: buildtool/build-tools:${BUILDTOOLS_VERSION}
build:
stage: build
services:
- docker:dind
script:
- build
- curl -Os https://uploader.codecov.io/latest/linux/codecov
- chmod +x codecov
- ./codecov -t ${CODECOV_TOKEN} -R $CI_PROJECT_DIR -C $CI_COMMIT_SHA -r $CI_PROJECT_PATH
- push
-17
View File
@@ -1,17 +0,0 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "daily"
open-pull-requests-limit: 20
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "daily"
open-pull-requests-limit: 20
+22
View File
@@ -0,0 +1,22 @@
version: "2"
run:
allow-parallel-runners: true
linters:
exclusions:
generated: lax
presets:
- comments
- common-false-positives
- legacy
- std-error-handling
paths:
- third_party$
- builtin$
- examples$
formatters:
exclusions:
generated: lax
paths:
- third_party$
- builtin$
- examples$
+41
View File
@@ -0,0 +1,41 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/markdownlint/markdownlint
rev: v0.15.0
hooks:
- id: markdownlint
args:
- -r ~MD024
- repo: https://gitlab.com/devopshq/gitlab-ci-linter
rev: v1.0.6
hooks:
- id: gitlab-ci-linter
args:
- --project
- unboundsoftware/gitlab-cleanup-handler
- repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook
rev: v9.24.0
hooks:
- id: commitlint
stages: [ commit-msg ]
additional_dependencies: [ '@commitlint/config-conventional' ]
- repo: https://github.com/lietu/go-pre-commit
rev: v1.0.0
hooks:
- id: errcheck
- id: go-fmt-goimports
- id: go-test
- id: go-vet
- id: gofumpt
- repo: https://github.com/golangci/golangci-lint
rev: v2.11.1
hooks:
- id: golangci-lint
+3
View File
@@ -0,0 +1,3 @@
{
"version": "v0.1.4"
}
+527
View File
@@ -0,0 +1,527 @@
# Changelog
All notable changes to this project will be documented in this file.
## [0.1.4] - 2026-03-06
### 🐛 Bug Fixes
- *(deps)* Update kubernetes packages to v0.35.2 (#379)
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.10.1 (#375)
- *(deps)* Update golang:1.26.0 docker digest to 9835fb4 (#377)
- *(deps)* Update dependency go to v1.26.1 (#381)
- *(deps)* Update golang docker tag to v1.26.1 (#382)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.0 (#384)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.1 (#386)
## [0.1.3] - 2026-02-12
### ⚙️ Miscellaneous Tasks
- *(deps)* Update dependency go to v1.26.0 (#368)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.9.0 (#371)
## [0.1.2] - 2026-02-11
### 🐛 Bug Fixes
- *(deps)* Update module github.com/alecthomas/kong to v1.14.0 (#367)
- *(deps)* Update kubernetes packages to v0.35.1 (#372)
### ⚙️ Miscellaneous Tasks
- *(deps)* Update golang:1.25.5 docker digest to 3a01526 (#358)
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.24.0 (#359)
- *(deps)* Update dependency go to v1.25.6 (#361)
- *(deps)* Update golang docker tag to v1.25.6 (#362)
- Remove unused .gitlab-ci.yml
- *(deps)* Update golang:1.25.6 docker digest to ceda080 (#364)
- *(deps)* Update dependency go to v1.25.7 (#365)
- *(deps)* Update golang docker tag to v1.25.7 (#366)
- *(deps)* Update golang:1.25.7 docker digest to d2819ff (#369)
- *(deps)* Update golang docker tag to v1.26.0 (#370)
## [0.1.1] - 2026-01-10
### ⚙️ Miscellaneous Tasks
- Run workflow on tags
## [0.1.0] - 2026-01-09
### 🚀 Features
- Migrate from GitLab CI to Gitea Actions
### 📚 Documentation
- Add CLAUDE.md for Claude Code guidance
### ⚙️ Miscellaneous Tasks
- *(deps)* Update golang:1.25.5 docker digest to ad03ba9
- *(deps)* Update actions/setup-go action to v6
- *(deps)* Update actions/checkout action to v6
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.8.0
- Add release workflow
## [0.0.22] - 2025-12-18
### 🐛 Bug Fixes
- *(deps)* Update kubernetes packages to v0.35.0
## [0.0.21] - 2025-12-10
### 🐛 Bug Fixes
- *(deps)* Update module github.com/alecthomas/kong to v1.13.0
- *(deps)* Update kubernetes packages to v0.34.3
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.6.2
- *(deps)* Update golang:1.25.4 docker digest to efe81fa
- *(deps)* Update dependency go to v1.25.5
- *(deps)* Update golang docker tag to v1.25.5
- *(deps)* Update pre-commit hook markdownlint/markdownlint to v0.15.0
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.7.0
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.7.1
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.7.2
- *(deps)* Update golang:1.25.5 docker digest to 0c27bcf
## [0.0.20] - 2025-11-13
### 🐛 Bug Fixes
- *(deps)* Update kubernetes packages to v0.34.2
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook lietu/go-pre-commit to v1
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.5.0
- *(deps)* Update golang:1.25.1 docker digest to 12640a4
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.23.0
- *(deps)* Update dependency go to v1.25.2
- *(deps)* Update golang docker tag to v1.25.2
- *(deps)* Update dependency go to v1.25.3
- *(deps)* Update golang docker tag to v1.25.3
- Add initial configuration for git-cliff
- *(deps)* Update golang:1.25.3 docker digest to 69d1009
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.6.0
- *(deps)* Update golang:1.25.3 docker digest to 9ac0edc
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.6.1
- *(deps)* Update dependency go to v1.25.4
- *(deps)* Update golang docker tag to v1.25.4
## [0.0.19] - 2025-09-10
### 🐛 Bug Fixes
- *(deps)* Update kubernetes packages to v0.34.1
### ⚙️ Miscellaneous Tasks
- *(deps)* Update dependency go to v1.25.1
- *(deps)* Update golang docker tag to v1.25.1
- *(deps)* Update golang:1.25.1 docker digest to 53f7808
## [0.0.18] - 2025-08-28
### 🐛 Bug Fixes
- *(deps)* Update module github.com/stretchr/testify to v1.11.0
- *(deps)* Update module github.com/stretchr/testify to v1.11.1
- *(deps)* Update kubernetes packages to v0.34.0
### ⚙️ Miscellaneous Tasks
- *(deps)* Update golang:1.25.0 docker digest to f6b9e1a
## [0.0.17] - 2025-08-14
### 🐛 Bug Fixes
- *(deps)* Update module github.com/alecthomas/kong to v1.12.1
- *(deps)* Update kubernetes packages to v0.33.4
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.3.0
- *(deps)* Update golang:1.24.5 docker digest to 0a156a4
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.3.1
- *(deps)* Update dependency go to v1.24.6
- *(deps)* Update golang docker tag to v1.24.6
- *(deps)* Update pre-commit hook pre-commit/pre-commit-hooks to v6
- *(deps)* Update golang:1.24.6 docker digest to 958bfd1
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.4.0
- *(deps)* Update golang docker tag to v1.25.0
- *(deps)* Update dependency go to v1.25.0
## [0.0.16] - 2025-07-16
### 🐛 Bug Fixes
- *(deps)* Update kubernetes packages to v0.33.3
### ⚙️ Miscellaneous Tasks
- *(deps)* Update dependency go to v1.24.5
- *(deps)* Update golang docker tag to v1.24.5
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.2.2
## [0.0.15] - 2025-07-01
### 🐛 Bug Fixes
- *(deps)* Update module github.com/alecthomas/kong to v1.12.0
- *(client)* Handle error responses with detailed messages
### ⚙️ Miscellaneous Tasks
- *(ci)* Update CI configuration for pipeline templates
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.2.0
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.2.1
- *(deps)* Update golang:1.24.4 docker digest to 9f820b6
## [0.0.14] - 2025-06-20
### 🐛 Bug Fixes
- *(deps)* Update kubernetes packages to v0.33.2
### ⚙️ Miscellaneous Tasks
- *(deps)* Update golang:1.24.3 docker digest to f255a7d
- *(deps)* Update dependency go to v1.24.4
- *(deps)* Update golang docker tag to v1.24.4
- *(deps)* Update golang:1.24.4 docker digest to 3494bbe
## [0.0.13] - 2025-05-16
### 🐛 Bug Fixes
- *(deps)* Update module github.com/alecthomas/kong to v1.11.0
- *(deps)* Update kubernetes packages to v0.33.1
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.1.4
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.1.5
- *(deps)* Update golang:1.24.2 docker digest to bf7899c
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.1.6
- *(deps)* Update dependency go to v1.24.3
- *(deps)* Update golang docker tag to v1.24.3
## [0.0.12] - 2025-04-24
### 🐛 Bug Fixes
- *(deps)* Update kubernetes packages to v0.33.0
## [0.0.11] - 2025-04-23
### 🐛 Bug Fixes
- *(deps)* Update module github.com/alecthomas/kong to v1.10.0
- *(deps)* Update kubernetes packages to v0.32.4
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.64.8
- *(deps)* Update golang:1.24.1 docker digest to 5ecf333
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.0.1
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.0.2
- *(deps)* Update golang docker tag to v1.24.2
- *(deps)* Update golang:1.24.2 docker digest to aebb7df
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.1.1
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.1.2
## [0.0.10] - 2025-03-12
### 🐛 Bug Fixes
- *(deps)* Update module github.com/alecthomas/kong to v1.9.0
- *(deps)* Update kubernetes packages to v0.32.3
### ⚙️ Miscellaneous Tasks
- *(deps)* Update golang docker tag to v1.24.1
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.22.0
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.64.7
## [0.0.9] - 2025-03-03
### 🐛 Bug Fixes
- *(deps)* Update module github.com/alecthomas/kong to v1.7.0
- *(deps)* Update Go version to 1.23.6 in go.mod
- *(deps)* Update module github.com/alecthomas/kong to v1.8.0
- *(deps)* Update kubernetes packages to v0.32.2
- *(deps)* Update module github.com/alecthomas/kong to v1.8.1
- *(docker)* Use amd64 golang base image for build
### ⚙️ Miscellaneous Tasks
- *(deps)* Update golang:1.23.5 docker digest to 8c10f21
- *(deps)* Update golang:1.23.5 docker digest to e213430
- *(deps)* Update dependency go to v1.23.6
- *(deps)* Update golang docker tag to v1.23.6
- *(deps)* Update golang:1.23.6 docker digest to 958bd2e
- *(deps)* Update golang:1.23.6 docker digest to 9271129
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.64.2
- *(deps)* Update golang docker tag to v1.24.0
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.64.3
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.64.4
- *(deps)* Update golang:1.24.0 docker digest to 2b1cbf2
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.64.5
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.21.0
- *(deps)* Update golang:1.24.0 docker digest to 5255fad
- *(deps)* Update golang:1.24.0 docker digest to a14c5a6
- *(deps)* Update golang:1.24.0 docker digest to 58cf31c
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.64.6
## [0.0.8] - 2025-01-17
### 🐛 Bug Fixes
- *(deps)* Update module github.com/alecthomas/kong to v1.6.1
- *(deps)* Update kubernetes packages to v0.32.1
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.63.0
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.63.1
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.63.2
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.63.3
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.63.4
- *(deps)* Update golang:1.23.4 docker digest to 3b1a7de
- *(deps)* Update golang:1.23.4 docker digest to 08e1417
- *(deps)* Update golang:1.23.4 docker digest to 585103a
- *(deps)* Update golang:1.23.4 docker digest to 5305905
- *(deps)* Update golang:1.23.4 docker digest to 9820aca
- *(deps)* Update dependency go to v1.23.5
- *(deps)* Update golang docker tag to v1.23.5
## [0.0.7] - 2024-12-28
### 🐛 Bug Fixes
- *(deps)* Update module github.com/stretchr/testify to v1.10.0
- *(deps)* Update module github.com/alecthomas/kong to v1.5.0
- *(deps)* Update module github.com/alecthomas/kong to v1.5.1
- *(deps)* Update module github.com/alecthomas/kong to v1.6.0
- *(deps)* Update kubernetes packages to v0.31.4
- *(deps)* Update kubernetes packages to v0.32.0
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.62.2
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.19.0
- *(deps)* Update golang:1.23.3 docker digest to ee5f0ad
- *(deps)* Update golang:1.23.3 docker digest to b4aabba
- *(deps)* Update golang:1.23.3 docker digest to 2b01164
- *(deps)* Update golang:1.23.3 docker digest to 017ec6b
- *(deps)* Update dependency go to v1.23.4
- *(deps)* Update golang docker tag to v1.23.4
- *(deps)* Update golang:1.23.4 docker digest to 574185e
- Simplify CI configuration by removing unused variables
- *(deps)* Update golang:1.23.4 docker digest to 7003184
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.20.0
- *(deps)* Update golang:1.23.4 docker digest to 7ea4c9d
- *(golangci)* Increase timeout to 5 minutes
## [0.0.6] - 2024-11-21
### 🐛 Bug Fixes
- *(deps)* Update module github.com/alecthomas/kong to v1.3.0
- *(deps)* Update module github.com/alecthomas/kong to v1.4.0
- *(deps)* Update kubernetes packages to v0.31.3
### ⚙️ Miscellaneous Tasks
- *(deps)* Pin golang docker tag to ad5c126
- *(deps)* Pin unbound/pre-commit docker tag to 92fce44
- *(deps)* Update dependency go to v1.23.3
- *(deps)* Update golang docker tag to v1.23.3
- *(deps)* Update unbound/pre-commit docker digest to 596abf5
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.62.0
- *(deps)* Update golang:1.23.3 docker digest to 8956c08
- *(deps)* Update unbound/pre-commit docker digest to e78425c
- *(deps)* Update golang:1.23.3 docker digest to 3694e36
- *(deps)* Update golang:1.23.3 docker digest to b2ca381
- *(deps)* Update golang:1.23.3 docker digest to 2660218
- *(deps)* Update golang:1.23.3 docker digest to c2d828f
- Remove pre-commit stage and include Go pre-commit template
- *(deps)* Update golang:1.23.3 docker digest to 73f06be
## [0.0.5] - 2024-10-24
### 🐛 Bug Fixes
- *(deps)* Update kubernetes packages to v0.31.2
## [0.0.4] - 2024-10-06
### 🐛 Bug Fixes
- Flaky test
- *(deps)* Update module github.com/stretchr/testify to v1.9.0
- *(deps)* Update module github.com/alecthomas/kong to v0.9.0
- *(deps)* Update kubernetes packages to v0.29.3
- *(deps)* Update module k8s.io/client-go to v0.29.4
- *(deps)* Update kubernetes packages to v0.30.0
- *(deps)* Update kubernetes packages to v0.30.1
- *(deps)* Update kubernetes packages to v0.30.2
- *(deps)* Update kubernetes packages to v0.30.3
- *(deps)* Update kubernetes packages to v0.31.0
- *(deps)* Update module github.com/alecthomas/kong to v1
- *(deps)* Update module github.com/alecthomas/kong to v1.2.0
- *(deps)* Update module github.com/alecthomas/kong to v1.2.1
- *(deps)* Update kubernetes packages to v0.31.1
### ⚙️ Miscellaneous Tasks
- Remove some duplication and add a first few tests
- Add pre-commit config
- Add checking of pre-commit rules
- Add tests for handler
- Use Docker DinD version from variable
- Switch to manual rebases for Dependabot
- Update to Go 1.20.3 and golangci-lint 1.52.2
- Update pre-commit and fix golangci-lint
- Update golangci-lint
- Use pre-commit image
- Change repo for markdownlint and update golangci-lint
- Remove Dependabot config
- *(deps)* Update pre-commit hook devopshq/gitlab-ci-linter to v1.0.6
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.11.0
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.56.2
- *(deps)* Update pre-commit hook markdownlint/markdownlint to v0.13.0
- *(deps)* Update pre-commit hook pre-commit/pre-commit-hooks to v4.5.0
- *(deps)* Update pre-commit hook lietu/go-pre-commit to v0.1.0
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.12.0
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.13.0
- *(deps)* Update golang docker tag to v1.22.1
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.57.0
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.57.1
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.57.2
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.14.0
- *(deps)* Update golang docker tag to v1.22.2
- *(deps)* Update pre-commit hook pre-commit/pre-commit-hooks to v4.6.0
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.15.0
- *(deps)* Update dependency go to v1.22.2
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.16.0
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.58.0
- *(deps)* Update dependency go to v1.22.3
- *(deps)* Update golang docker tag to v1.22.3
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.58.1
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.58.2
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.59.0
- *(deps)* Update dependency go to v1.22.4
- *(deps)* Update golang docker tag to v1.22.4
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.59.1
- *(deps)* Update dependency go to v1.22.5
- *(deps)* Update golang docker tag to v1.22.5
- *(deps)* Update dependency go to v1.22.6
- *(deps)* Update golang docker tag to v1.22.6
- *(deps)* Update dependency go to v1.23.0
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.60.1
- *(deps)* Update golang docker tag to v1.23.0
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.60.2
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.60.3
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.17.0
- *(deps)* Update dependency go to v1.23.1
- *(deps)* Update golang docker tag to v1.23.1
- *(deps)* Update pre-commit hook golangci/golangci-lint to v1.61.0
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.18.0
- *(deps)* Update dependency go to v1.23.2
- *(deps)* Update golang docker tag to v1.23.2
- Add release flow
- *(deps)* Update pre-commit hook pre-commit/pre-commit-hooks to v5
### 🛡️ Security
- *(deps)* [security] bump golang.org/x/net from 0.13.0 to 0.17.0
### Build
- *(deps)* Bump github.com/stretchr/testify from 1.7.2 to 1.8.0
- *(deps)* Bump golang from 1.19.1 to 1.19.2
- *(deps)* Bump k8s.io/api from 0.25.2 to 0.25.3
- *(deps)* Bump k8s.io/client-go from 0.25.2 to 0.25.3
- *(deps)* Bump github.com/stretchr/testify from 1.8.0 to 1.8.1
- *(deps)* Bump github.com/alecthomas/kong from 0.6.1 to 0.7.0
- *(deps)* Bump golang from 1.19.2 to 1.19.3
- *(deps)* Bump k8s.io/client-go from 0.25.3 to 0.25.4
- *(deps)* Bump github.com/alecthomas/kong from 0.7.0 to 0.7.1
- *(deps)* Bump golang from 1.19.3 to 1.19.4
- *(deps)* Bump k8s.io/client-go from 0.25.4 to 0.26.0
- *(deps)* Bump golang from 1.19.4 to 1.19.5
- *(deps)* Bump k8s.io/client-go from 0.26.0 to 0.26.1
- *(deps)* Bump golang from 1.19.5 to 1.20.0
- *(deps)* Bump golang from 1.20.0 to 1.20.1
- *(deps)* Bump github.com/stretchr/testify from 1.8.1 to 1.8.2
- *(deps)* Bump k8s.io/client-go from 0.26.1 to 0.26.2
- *(deps)* Bump golang from 1.20.1 to 1.20.2
- *(deps)* Bump k8s.io/client-go from 0.26.2 to 0.26.3
- *(deps)* Bump golang from 1.20.2 to 1.20.3
- *(deps)* Bump k8s.io/client-go from 0.26.3 to 0.27.0
- *(deps)* Bump k8s.io/client-go from 0.27.0 to 0.27.1
- *(deps)* Bump golang from 1.20.3 to 1.20.4
- *(deps)* Bump k8s.io/client-go from 0.27.1 to 0.27.2
- *(deps)* Bump github.com/stretchr/testify from 1.8.2 to 1.8.3
- *(deps)* Bump github.com/stretchr/testify from 1.8.3 to 1.8.4
- *(deps)* Bump golang from 1.20.4 to 1.20.5
- *(deps)* Bump k8s.io/client-go from 0.27.2 to 0.27.3
- *(deps)* Bump github.com/alecthomas/kong from 0.7.1 to 0.8.0
- *(deps)* Bump golang from 1.20.5 to 1.20.6
- *(deps)* Bump k8s.io/client-go from 0.27.3 to 0.27.4
- *(deps)* Bump golang from 1.20.6 to 1.20.7
- *(deps)* Bump golang from 1.20.7 to 1.21.0
- *(deps)* Bump k8s.io/client-go from 0.27.4 to 0.28.0
- *(deps)* Bump k8s.io/client-go from 0.28.0 to 0.28.1
- *(deps)* Bump golang from 1.21.0 to 1.21.1
- *(deps)* Bump k8s.io/client-go from 0.28.1 to 0.28.2
- *(deps)* Bump golang from 1.21.1 to 1.21.2
- *(deps)* Bump github.com/alecthomas/kong from 0.8.0 to 0.8.1
- *(deps)* Bump golang from 1.21.2 to 1.21.3
- *(deps)* Bump k8s.io/client-go from 0.28.2 to 0.28.3
- *(deps)* Bump golang from 1.21.3 to 1.21.4
- *(deps)* Bump k8s.io/client-go from 0.28.3 to 0.28.4
- *(deps)* Bump golang from 1.21.4 to 1.21.5
- *(deps)* Bump k8s.io/client-go from 0.28.4 to 0.29.0
- *(deps)* Bump golang from 1.21.5 to 1.21.6
- *(deps)* Bump k8s.io/client-go from 0.29.0 to 0.29.1
- *(deps)* Bump golang from 1.21.6 to 1.22.0
- *(deps)* Bump k8s.io/client-go from 0.29.1 to 0.29.2
## [0.0.3] - 2022-09-27
### 🚀 Features
- Add all existing tags to exclusion filter
### Build
- *(deps)* Bump k8s.io/client-go from 0.25.0 to 0.25.1
- *(deps)* Bump k8s.io/client-go from 0.25.1 to 0.25.2
## [0.0.2] - 2022-09-09
### 🐛 Bug Fixes
- Add CA certificates
## [0.0.1] - 2022-09-09
### 🚀 Features
- Initial commit
<!-- generated by git-cliff -->
+52
View File
@@ -0,0 +1,52 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
A Go service that scans Kubernetes namespaces for container images from GitLab's container registry and automatically updates GitLab project cleanup policies to preserve those images. This ensures images actively running in Kubernetes are protected from automated cleanup.
## Build & Test Commands
```bash
# Run all tests
go test ./...
# Run a specific test
go test ./kube -run TestFetcher
# Run tests with coverage
go test -cover ./...
# Lint (via pre-commit)
pre-commit run golangci-lint --all-files
# Format code
gofumpt -w .
# Run all pre-commit hooks (always add all files first)
git add -A && pre-commit run --all-files
```
## Architecture
The service has three main components:
1. **cmd/handler** - Entry point using Kong for CLI argument parsing. Accepts `--namespaces` (or NAMESPACES env) and `--gitlab-token` (or GITLAB_TOKEN env).
2. **kube** - Kubernetes client that scans Deployments and CronJobs in specified namespaces for images prefixed with `registry.gitlab.com`. Uses provider pattern for in-cluster vs KUBECONFIG-based authentication.
3. **gitlab** - REST client that fetches repository tags and updates container expiration policies via GitLab API. The cleanup policy keeps images matching `main|master|<active-versions>`.
### Data Flow
```
Kubernetes Cluster → kube.Client.GetImages() → ImageCollector
→ gitlab.RestClient.GetTags() + UpdateCleanupPolicy()
```
## Code Conventions
- Uses `github.com/apex/log` for structured JSON logging
- Tests use `github.com/stretchr/testify` assertions and `gitlab.com/unboundsoftware/apex-mocks` for log mocking
- Interfaces defined locally for testability (KubeClient, GitlabClient, ClientProvider, ConfigProvider)
- Follows conventional commits format (enforced by pre-commit commitlint hook)
+1 -1
View File
@@ -1,4 +1,4 @@
FROM golang:1.19.1 as build
FROM amd64/golang:1.26.1@sha256:27221f0ea9e7089ebfe51de26f6d5389aa8f9514f13dae7e9c91f5aa7865c2b4 as build
WORKDIR /build
ENV CGO_ENABLED=0
ADD . /build
+4 -1
View File
@@ -1,5 +1,8 @@
# gitlab-cleanup-handler
[![Build Status](https://gitlab.com/unboundsoftware/gitlab-cleanup-handler/badges/master/pipeline.svg)](https://gitlab.com/unboundsoftware/gitlab-cleanup-handler/commits/master)
[![codecov](https://codecov.io/gl/unboundsoftware/gitlab-cleanup-handler/branch/master/graph/badge.svg)](https://codecov.io/gl/unboundsoftware/gitlab-cleanup-handler)
A small container which checks which images from Gitlab container registry are used in the provided namespaces and updates the cleanup policies for those projects.
A small container which checks which images from Gitlab container registry
are used in the provided namespaces and updates the cleanup policies for
those projects.
+80
View File
@@ -0,0 +1,80 @@
# git-cliff ~ default configuration file
# https://git-cliff.org/docs/configuration
#
# Lines starting with "#" are comments.
# Configuration options are organized into tables and keys.
# See documentation for more information on available options.
[changelog]
# template for the changelog header
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n
"""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{% if version %}\
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
{% else %}\
## [unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | striptags | trim | upper_first }}
{% for commit in commits %}
- {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
{% if commit.breaking %}[**breaking**] {% endif %}\
{{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}\n
"""
# template for the changelog footer
footer = """
<!-- generated by git-cliff -->
"""
# remove the leading and trailing s
trim = true
# postprocessors
postprocessors = [
# { pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" }, # replace repository URL
]
# render body even when there are no releases to process
# render_always = true
# output file path
# output = "test.md"
[git]
# parse the commits based on https://www.conventionalcommits.org
conventional_commits = true
# filter out the commits that are not conventional
filter_unconventional = true
# process each line of a commit as an individual commit
split_commits = false
# regex for preprocessing the commit messages
commit_preprocessors = [
# Replace issue numbers
#{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"},
# Check spelling of the commit with https://github.com/crate-ci/typos
# If the spelling is incorrect, it will be automatically fixed.
#{ pattern = '.*', replace_command = 'typos --write-changes -' },
]
# regex for parsing and grouping commits
commit_parsers = [
{ message = "^feat", group = "<!-- 0 -->🚀 Features" },
{ message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
{ message = "^doc", group = "<!-- 3 -->📚 Documentation" },
{ message = "^perf", group = "<!-- 4 -->⚡ Performance" },
{ message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
{ message = "^style", group = "<!-- 5 -->🎨 Styling" },
{ message = "^test", group = "<!-- 6 -->🧪 Testing" },
{ message = "^chore\\(release\\): prepare for", skip = true },
{ message = "^chore|^ci", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" },
{ body = ".*security", group = "<!-- 8 -->🛡️ Security" },
{ message = "^revert", group = "<!-- 9 -->◀️ Revert" },
]
# filter out the commits that are not matched by commit parsers
filter_commits = false
# sort the tags topologically
topo_order = false
# sort the commits inside sections by oldest/newest order
sort_commits = "oldest"
+20 -3
View File
@@ -28,7 +28,7 @@ func main() {
if kubecfg, exists := os.LookupEnv("KUBECONFIG"); exists {
kubeClient = kube.New(kube.WithKubeConfigProvider(kubecfg))
} else {
kubeClient = kube.New(kube.WithInClusterProvider())
kubeClient = kube.New()
}
gitlabClient := gitlab.New(cli.GitlabToken)
if err := handle(cli, logger, kubeClient, gitlabClient); err != nil {
@@ -36,13 +36,30 @@ func main() {
}
}
func handle(cli CLI, logger log.Interface, kubeClient *kube.Client, gitlabClient *gitlab.RestClient) error {
type KubeClient interface {
GetImages(ctx context.Context, logger log.Interface, namespaces []string) (map[string][]string, error)
}
type GitlabClient interface {
GetTags(image string) ([]gitlab.Tag, error)
UpdateCleanupPolicy(project string, versions []string) error
}
func handle(cli CLI, logger log.Interface, kubeClient KubeClient, gitlabClient GitlabClient) error {
images, err := kubeClient.GetImages(context.Background(), logger, cli.Namespaces)
if err != nil {
return err
}
for image, versions := range images {
if err := gitlabClient.UpdateCleanupPolicy(image, versions); err != nil {
tags, err := gitlabClient.GetTags(image)
if err != nil {
return err
}
tagVersions := make([]string, len(tags))
for i, tag := range tags {
tagVersions[i] = tag.Name
}
if err := gitlabClient.UpdateCleanupPolicy(image, append(versions, tagVersions...)); err != nil {
return err
}
}
+185
View File
@@ -0,0 +1,185 @@
package main
import (
"context"
"fmt"
"testing"
"github.com/apex/log"
"github.com/stretchr/testify/assert"
"gitlab.com/unboundsoftware/apex-mocks"
"gitlab.com/unboundsoftware/gitlab-cleanup-handler/gitlab"
)
func Test_handle(t *testing.T) {
type args struct {
cli CLI
kubeClient func(t *testing.T) KubeClient
gitlabClient func(t *testing.T) GitlabClient
}
tests := []struct {
name string
args args
wantLogged []string
wantErr assert.ErrorAssertionFunc
}{
{
name: "unable to get images",
args: args{
cli: CLI{
Namespaces: []string{"default"},
},
kubeClient: func(t *testing.T) KubeClient {
return &MockKube{
GetFn: func(ctx context.Context, logger log.Interface, namespaces []string) (map[string][]string, error) {
assert.Equal(t, []string{"default"}, namespaces)
return nil, fmt.Errorf("error")
},
}
},
gitlabClient: func(t *testing.T) GitlabClient {
return nil
},
},
wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
return assert.EqualError(t, err, "error")
},
},
{
name: "unable to fetch tags",
args: args{
cli: CLI{
Namespaces: []string{"default"},
},
kubeClient: func(t *testing.T) KubeClient {
return &MockKube{
GetFn: func(ctx context.Context, logger log.Interface, namespaces []string) (map[string][]string, error) {
return map[string][]string{
"unboundsoftware/dummy": {"abc123"},
}, nil
},
}
},
gitlabClient: func(t *testing.T) GitlabClient {
return &MockGitlab{
TagsFn: func(image string) ([]gitlab.Tag, error) {
assert.Equal(t, "unboundsoftware/dummy", image)
return nil, fmt.Errorf("tags error")
},
}
},
},
wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
return assert.EqualError(t, err, "tags error")
},
},
{
name: "unable to update policy",
args: args{
cli: CLI{
Namespaces: []string{"default"},
},
kubeClient: func(t *testing.T) KubeClient {
return &MockKube{
GetFn: func(ctx context.Context, logger log.Interface, namespaces []string) (map[string][]string, error) {
return map[string][]string{
"unboundsoftware/dummy": {"abc123"},
}, nil
},
}
},
gitlabClient: func(t *testing.T) GitlabClient {
return &MockGitlab{
TagsFn: func(image string) ([]gitlab.Tag, error) {
return []gitlab.Tag{
{Name: "1.0"},
}, nil
},
UpdateFn: func(project string, versions []string) error {
assert.Equal(t, "unboundsoftware/dummy", project)
assert.Equal(t, []string{"abc123", "1.0"}, versions)
return fmt.Errorf("update error")
},
}
},
},
wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
return assert.EqualError(t, err, "update error")
},
},
{
name: "success",
args: args{
cli: CLI{
Namespaces: []string{"default"},
},
kubeClient: func(t *testing.T) KubeClient {
return &MockKube{
GetFn: func(ctx context.Context, logger log.Interface, namespaces []string) (map[string][]string, error) {
return map[string][]string{
"unboundsoftware/dummy": {"abc123"},
}, nil
},
}
},
gitlabClient: func(t *testing.T) GitlabClient {
return &MockGitlab{
TagsFn: func(image string) ([]gitlab.Tag, error) {
return []gitlab.Tag{
{Name: "1.0"},
}, nil
},
UpdateFn: func(project string, versions []string) error {
return nil
},
}
},
},
wantErr: assert.NoError,
},
}
for _, tt := range tests {
logger := apex.New()
t.Run(tt.name, func(t *testing.T) {
kubeClient := tt.args.kubeClient(t)
gitlabClient := tt.args.gitlabClient(t)
tt.wantErr(t, handle(tt.args.cli, logger, kubeClient, gitlabClient), fmt.Sprintf("handle(%v, %v, %v, %v)", tt.args.cli, logger, kubeClient, gitlabClient))
})
logger.Check(t, tt.wantLogged)
}
}
type MockKube struct {
GetFn func(ctx context.Context, logger log.Interface, namespaces []string) (map[string][]string, error)
}
func (m *MockKube) GetImages(ctx context.Context, logger log.Interface, namespaces []string) (map[string][]string, error) {
if m.GetFn == nil {
return nil, nil
}
return m.GetFn(ctx, logger, namespaces)
}
var _ KubeClient = &MockKube{}
type MockGitlab struct {
TagsFn func(image string) ([]gitlab.Tag, error)
UpdateFn func(project string, versions []string) error
}
func (m *MockGitlab) GetTags(image string) ([]gitlab.Tag, error) {
if m.TagsFn == nil {
return nil, nil
}
return m.TagsFn(image)
}
func (m *MockGitlab) UpdateCleanupPolicy(project string, versions []string) error {
if m.UpdateFn == nil {
return nil
}
return m.UpdateFn(project, versions)
}
var _ GitlabClient = &MockGitlab{}
+66 -12
View File
@@ -8,23 +8,20 @@ import (
"net/http"
"net/url"
"strings"
"time"
)
func New(token string) *RestClient {
return &RestClient{token: token, client: http.DefaultClient}
return &RestClient{token: token, client: http.DefaultClient, baseUrl: "https://gitlab.com"}
}
type RestClient struct {
client *http.Client
token string
client *http.Client
token string
baseUrl string
}
func (r *RestClient) UpdateCleanupPolicy(project string, versions []string) error {
encoded := url.QueryEscape(project)
reqUrl, err := url.Parse(fmt.Sprintf("https://gitlab.com/api/v4/projects/%s", encoded))
if err != nil {
return err
}
options := ProjectConfig{
ContainerExpirationPolicyAttributes: ContainerExpirationPolicyAttributes{
Cadence: "1d",
@@ -37,7 +34,22 @@ func (r *RestClient) UpdateCleanupPolicy(project string, versions []string) erro
}
buff := &bytes.Buffer{}
encoder := json.NewEncoder(buff)
err = encoder.Encode(&options)
err := encoder.Encode(&options)
if err != nil {
return err
}
return r.projectApiCall("PUT", project, "", io.NopCloser(buff), nil)
}
func (r *RestClient) GetTags(project string) ([]Tag, error) {
var tags []Tag
err := r.projectApiCall("GET", project, "/repository/tags", nil, &tags)
return tags, err
}
func (r *RestClient) projectApiCall(method, project string, api string, body io.ReadCloser, response interface{}) error {
encoded := url.QueryEscape(project)
reqUrl, err := url.Parse(fmt.Sprintf("%s/api/v4/projects/%s%s", r.baseUrl, encoded, api))
if err != nil {
return err
}
@@ -45,12 +57,25 @@ func (r *RestClient) UpdateCleanupPolicy(project string, versions []string) erro
header.Add("Content-Type", "application/json;charset=UTF-8")
header.Add("PRIVATE-TOKEN", r.token)
req := &http.Request{
Method: "PUT",
Method: method,
URL: reqUrl,
Header: header,
Body: io.NopCloser(buff),
Body: body,
}
resp, err := r.client.Do(req)
if err != nil {
return err
}
if resp.StatusCode == http.StatusOK && response != nil {
decoder := json.NewDecoder(resp.Body)
err = decoder.Decode(response)
} else if resp.StatusCode != http.StatusOK {
buff, err2 := io.ReadAll(resp.Body)
if err2 != nil {
return fmt.Errorf("error reading body: %w", err2)
}
return fmt.Errorf("status %d: %s", resp.StatusCode, string(buff))
}
_, err = r.client.Do(req)
return err
}
@@ -66,3 +91,32 @@ type ContainerExpirationPolicyAttributes struct {
NameRegex string `json:"name_regex"`
NameRegexKeep string `json:"name_regex_keep"`
}
type Tag struct {
Commit Commit `json:"commit"`
Release Release `json:"release"`
Name string `json:"name"`
Target string `json:"target"`
Message interface{} `json:"message"`
Protected bool `json:"protected"`
}
type Commit struct {
ID string `json:"id"`
ShortID string `json:"short_id"`
Title string `json:"title"`
CreatedAt time.Time `json:"created_at"`
ParentIds []string `json:"parent_ids"`
Message string `json:"message"`
AuthorName string `json:"author_name"`
AuthorEmail string `json:"author_email"`
AuthoredDate string `json:"authored_date"`
CommitterName string `json:"committer_name"`
CommitterEmail string `json:"committer_email"`
CommittedDate string `json:"committed_date"`
}
type Release struct {
TagName string `json:"tag_name"`
Description string `json:"description"`
}
+150
View File
@@ -0,0 +1,150 @@
package gitlab
import (
"fmt"
"io"
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/assert"
)
func TestRestClient_UpdateCleanupPolicy(t *testing.T) {
type args struct {
project string
versions []string
}
tests := []struct {
name string
args args
handler func(t *testing.T) http.HandlerFunc
wantErr assert.ErrorAssertionFunc
}{
{
name: "success",
args: args{
project: "unboundsoftware/dummy",
versions: []string{"1.0", "1.1"},
},
handler: func(t *testing.T) http.HandlerFunc {
return func(writer http.ResponseWriter, request *http.Request) {
buff, err := io.ReadAll(request.Body)
assert.NoError(t, err)
assert.Equal(t, "{\"container_expiration_policy_attributes\":{\"cadence\":\"1d\",\"enabled\":true,\"keep_n\":10,\"older_than\":\"14d\",\"name_regex\":\".*\",\"name_regex_keep\":\"(main|master|1.0|1.1)\"}}\n", string(buff))
writer.WriteHeader(http.StatusOK)
}
},
wantErr: assert.NoError,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
server := httptest.NewServer(tt.handler(t))
defer server.Close()
r := &RestClient{
client: http.DefaultClient,
token: "some-gitlab-token",
baseUrl: server.URL,
}
tt.wantErr(t, r.UpdateCleanupPolicy(tt.args.project, tt.args.versions), fmt.Sprintf("UpdateCleanupPolicy(%v, %v)", tt.args.project, tt.args.versions))
})
}
}
func TestRestClient_GetTags(t *testing.T) {
type args struct {
project string
}
tests := []struct {
name string
args args
handler func(t *testing.T) http.HandlerFunc
want []Tag
wantErr assert.ErrorAssertionFunc
}{
{
name: "error",
args: args{
project: "unboundsoftware/dummy",
},
handler: func(t *testing.T) http.HandlerFunc {
return func(writer http.ResponseWriter, request *http.Request) {
writer.Header().Set("Content-Length", "23")
writer.WriteHeader(http.StatusOK)
_, _ = writer.Write([]byte("abc"))
}
},
want: nil,
wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
return assert.EqualError(t, err, "invalid character 'a' looking for beginning of value")
},
},
{
name: "unauthorized",
args: args{
project: "unboundsoftware/dummy",
},
handler: func(t *testing.T) http.HandlerFunc {
return func(writer http.ResponseWriter, request *http.Request) {
writer.WriteHeader(http.StatusUnauthorized)
_, _ = writer.Write([]byte("token expired"))
}
},
want: nil,
wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
return assert.EqualError(t, err, "status 401: token expired")
},
},
{
name: "error body length incorrect",
args: args{
project: "unboundsoftware/dummy",
},
handler: func(t *testing.T) http.HandlerFunc {
return func(writer http.ResponseWriter, request *http.Request) {
writer.Header().Set("Content-Length", "230")
writer.WriteHeader(http.StatusUnauthorized)
_, _ = writer.Write([]byte("token expired"))
}
},
want: nil,
wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
return assert.EqualError(t, err, "error reading body: unexpected EOF")
},
},
{
name: "success",
args: args{
project: "unboundsoftware/dummy",
},
handler: func(t *testing.T) http.HandlerFunc {
return func(writer http.ResponseWriter, request *http.Request) {
writer.WriteHeader(http.StatusOK)
_, _ = writer.Write([]byte(`[{"name":"1.0"},{"name": "1.1"}]`))
}
},
want: []Tag{
{Name: "1.0"},
{Name: "1.1"},
},
wantErr: assert.NoError,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
server := httptest.NewServer(tt.handler(t))
defer server.Close()
r := &RestClient{
client: http.DefaultClient,
token: "some-gitlab-token",
baseUrl: server.URL,
}
got, err := r.GetTags(tt.args.project)
if !tt.wantErr(t, err, fmt.Sprintf("GetTags(%v)", tt.args.project)) {
return
}
assert.Equalf(t, tt.want, got, "GetTags(%v)", tt.args.project)
})
}
}
+40 -36
View File
@@ -1,52 +1,56 @@
module gitlab.com/unboundsoftware/gitlab-cleanup-handler
go 1.19
go 1.25.0
toolchain go1.26.1
require (
github.com/alecthomas/kong v0.6.1
github.com/alecthomas/kong v1.14.0
github.com/apex/log v1.9.0
k8s.io/apimachinery v0.25.0
k8s.io/client-go v0.25.0
github.com/stretchr/testify v1.11.1
gitlab.com/unboundsoftware/apex-mocks v0.2.0
k8s.io/api v0.35.2
k8s.io/apimachinery v0.35.2
k8s.io/client-go v0.35.2
)
require (
github.com/PuerkitoBio/purell v1.1.1 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/emicklei/go-restful/v3 v3.8.0 // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/go-openapi/jsonpointer v0.19.5 // indirect
github.com/go-openapi/jsonreference v0.19.5 // indirect
github.com/go-openapi/swag v0.19.14 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/gnostic v0.5.7-v3refs // indirect
github.com/google/gofuzz v1.1.0 // indirect
github.com/imdario/mergo v0.3.6 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/go-logr/logr v1.4.3 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/google/gnostic-models v0.7.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/mailru/easyjson v0.7.6 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/spf13/pflag v1.0.5 // indirect
golang.org/x/net v0.0.0-20220722155237-a158d28d115b // indirect
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/protobuf v1.28.0 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/spf13/pflag v1.0.9 // indirect
github.com/x448/float16 v0.8.4 // indirect
go.yaml.in/yaml/v2 v2.4.3 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/net v0.47.0 // indirect
golang.org/x/oauth2 v0.30.0 // indirect
golang.org/x/sys v0.38.0 // indirect
golang.org/x/term v0.37.0 // indirect
golang.org/x/text v0.31.0 // indirect
golang.org/x/time v0.9.0 // indirect
google.golang.org/protobuf v1.36.8 // indirect
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/api v0.25.0 // indirect
k8s.io/klog/v2 v2.70.1 // indirect
k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 // indirect
k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed // indirect
sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
sigs.k8s.io/yaml v1.2.0 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 // indirect
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
sigs.k8s.io/randfill v1.0.0 // indirect
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
sigs.k8s.io/yaml v1.6.0 // indirect
)
+114 -442
View File
@@ -1,46 +1,11 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
github.com/alecthomas/kong v0.6.1 h1:1kNhcFepkR+HmasQpbiKDLylIL8yh5B5y1zPp5bJimA=
github.com/alecthomas/kong v0.6.1/go.mod h1:JfHWDzLmbh/puW6I3V7uWenoh56YNVONW+w8eKeUr9I=
github.com/alecthomas/repr v0.0.0-20210801044451-80ca428c5142 h1:8Uy0oSf5co/NZXje7U1z8Mpep++QJOldL2hs/sBQf48=
github.com/alecthomas/repr v0.0.0-20210801044451-80ca428c5142/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8=
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
github.com/alecthomas/kong v1.14.0 h1:gFgEUZWu2ZmZ+UhyZ1bDhuutbKN1nTtJTwh19Wsn21s=
github.com/alecthomas/kong v1.14.0/go.mod h1:wrlbXem1CWqUV5Vbmss5ISYhsVPkBb1Yo7YKJghju2I=
github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs=
github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/apex/log v1.9.0 h1:FHtw/xuaM8AgmvDDTI9fiwoAL25Sq2cxojnZICUU8l0=
github.com/apex/log v1.9.0/go.mod h1:m82fZlWIuiWzWP04XCTXmnX0xRkYYbCdYn8jbJeLBEA=
github.com/apex/logs v1.0.0/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo=
@@ -48,126 +13,62 @@ github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy
github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys=
github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw=
github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=
github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM=
github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg=
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng=
github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54=
github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=
github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8=
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=
github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA=
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
@@ -176,40 +77,46 @@ github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyex
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/onsi/ginkgo v1.6.0 h1:Ix8l273rp3QzYgXSR+c8d1fTG7UPgYkOSELPhiY/YGw=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY=
github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns=
github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo=
github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw=
github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A=
github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM=
github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs=
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY=
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0=
github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk=
github.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk=
@@ -217,315 +124,80 @@ github.com/tj/go-buffer v1.1.0/go.mod h1:iyiJpfFcR2B9sXu7KvjbT9fpM4mOelRSDTbntVj
github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0=
github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao=
github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
gitlab.com/unboundsoftware/apex-mocks v0.2.0 h1:IFt+uyIoOkSl4qdUBLUSIvOhaRdQRGB6TnpZqfRuXqY=
gitlab.com/unboundsoftware/apex-mocks v0.2.0/go.mod h1:FGsQjCu/nS6b+QaBpAFvms6p0Chr0aobGcUPeeZNSNo=
go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0=
go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8=
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg=
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU=
golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44=
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=
golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo=
gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
k8s.io/api v0.25.0 h1:H+Q4ma2U/ww0iGB78ijZx6DRByPz6/733jIuFpX70e0=
k8s.io/api v0.25.0/go.mod h1:ttceV1GyV1i1rnmvzT3BST08N6nGt+dudGrquzVQWPk=
k8s.io/apimachinery v0.25.0 h1:MlP0r6+3XbkUG2itd6vp3oxbtdQLQI94fD5gCS+gnoU=
k8s.io/apimachinery v0.25.0/go.mod h1:qMx9eAk0sZQGsXGu86fab8tZdffHbwUfsvzqKn4mfB0=
k8s.io/client-go v0.25.0 h1:CVWIaCETLMBNiTUta3d5nzRbXvY5Hy9Dpl+VvREpu5E=
k8s.io/client-go v0.25.0/go.mod h1:lxykvypVfKilxhTklov0wz1FoaUZ8X4EwbhS6rpRfN8=
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
k8s.io/klog/v2 v2.70.1 h1:7aaoSdahviPmR+XkS7FyxlkkXs6tHISSG03RxleQAVQ=
k8s.io/klog/v2 v2.70.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 h1:MQ8BAZPZlWk3S9K4a9NCkIFQtZShWqoha7snGixVgEA=
k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1/go.mod h1:C/N6wCaBHeBHkHUesQOQy2/MZqGgMAFPqGsGQLdbZBU=
k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed h1:jAne/RjBTyawwAy0utX5eqigAwz/lQhTmy+Hr/Cpue4=
k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k=
sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
k8s.io/api v0.35.2 h1:tW7mWc2RpxW7HS4CoRXhtYHSzme1PN1UjGHJ1bdrtdw=
k8s.io/api v0.35.2/go.mod h1:7AJfqGoAZcwSFhOjcGM7WV05QxMMgUaChNfLTXDRE60=
k8s.io/apimachinery v0.35.2 h1:NqsM/mmZA7sHW02JZ9RTtk3wInRgbVxL8MPfzSANAK8=
k8s.io/apimachinery v0.35.2/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
k8s.io/client-go v0.35.2 h1:YUfPefdGJA4aljDdayAXkc98DnPkIetMl4PrKX97W9o=
k8s.io/client-go v0.35.2/go.mod h1:4QqEwh4oQpeK8AaefZ0jwTFJw/9kIjdQi0jpKeYvz7g=
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE=
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ=
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck=
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
+30
View File
@@ -0,0 +1,30 @@
package kube
import "strings"
type ImageCollector map[string]map[string]struct{}
func NewImageCollector() ImageCollector {
return make(map[string]map[string]struct{})
}
func (c *ImageCollector) Add(image string) {
parts := strings.Split(image[20:], ":")
if x, exists := (*c)[parts[0]]; exists {
x[parts[1]] = struct{}{}
} else {
(*c)[parts[0]] = map[string]struct{}{
parts[1]: {},
}
}
}
func (c *ImageCollector) Images() map[string][]string {
images := make(map[string][]string)
for i, x := range *c {
for v := range x {
images[i] = append(images[i], v)
}
}
return images
}
+1 -34
View File
@@ -19,12 +19,6 @@ type Client struct {
type Options func(*Client)
func WithInClusterProvider() func(c *Client) {
return func(c *Client) {
c.provider = &DefaultProvider{provider: &InClusterProvider{}}
}
}
func WithKubeConfigProvider(kubeconfig string) func(c *Client) {
return func(c *Client) {
c.provider = &DefaultProvider{provider: &PathConfigProvider{kubecfg: kubeconfig}}
@@ -32,7 +26,7 @@ func WithKubeConfigProvider(kubeconfig string) func(c *Client) {
}
func New(opts ...Options) *Client {
c := &Client{}
c := &Client{provider: &DefaultProvider{provider: &InClusterProvider{}}}
for _, opt := range opts {
opt(c)
}
@@ -119,30 +113,3 @@ func (k PathConfigProvider) Provide() (*rest.Config, error) {
}
var _ ConfigProvider = &PathConfigProvider{}
type ImageCollector map[string]map[string]struct{}
func NewImageCollector() ImageCollector {
return make(map[string]map[string]struct{})
}
func (c *ImageCollector) Add(image string) {
parts := strings.Split(image[20:], ":")
if x, exists := (*c)[parts[0]]; exists {
x[parts[1]] = struct{}{}
} else {
(*c)[parts[0]] = map[string]struct{}{
parts[1]: {},
}
}
}
func (c *ImageCollector) Images() map[string][]string {
images := make(map[string][]string)
for i, x := range *c {
for v := range x {
images[i] = append(images[i], v)
}
}
return images
}
+366
View File
@@ -0,0 +1,366 @@
package kube
import (
"context"
"fmt"
"sort"
"testing"
"github.com/stretchr/testify/assert"
"gitlab.com/unboundsoftware/apex-mocks"
v1 "k8s.io/api/apps/v1"
batchapiv1 "k8s.io/api/batch/v1"
v12 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
appsv1 "k8s.io/client-go/kubernetes/typed/apps/v1"
batchv1 "k8s.io/client-go/kubernetes/typed/batch/v1"
)
func TestClient_GetImages(t *testing.T) {
type fields struct {
provider ClientProvider
}
type args struct {
namespaces []string
}
tests := []struct {
name string
fields fields
args args
want map[string][]string
wantLogged []string
wantErr assert.ErrorAssertionFunc
}{
{
name: "error getting client",
fields: fields{
provider: MockClientProvider(func() (APIClient, error) {
return nil, fmt.Errorf("error")
}),
},
args: args{},
want: nil,
wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
return assert.EqualError(t, err, "error")
},
},
{
name: "error fetching deployments",
fields: fields{
provider: MockClientProvider(func() (APIClient, error) {
return &MockAPIClient{
Apps: func() appsv1.AppsV1Interface {
return &MockApps{
DeploymentsFn: func(namespace string) appsv1.DeploymentInterface {
assert.Equal(t, "default", namespace)
return &MockDeployments{
ListFn: func(ctx context.Context, opts metav1.ListOptions) (*v1.DeploymentList, error) {
return nil, fmt.Errorf("error")
},
}
},
}
},
}, nil
}),
},
args: args{
namespaces: []string{"default"},
},
want: nil,
wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
return assert.EqualError(t, err, "error")
},
},
{
name: "error fetching cron jobs",
fields: fields{
provider: MockClientProvider(func() (APIClient, error) {
return &MockAPIClient{
Apps: func() appsv1.AppsV1Interface {
return &MockApps{
DeploymentsFn: func(namespace string) appsv1.DeploymentInterface {
return &MockDeployments{
ListFn: func(ctx context.Context, opts metav1.ListOptions) (*v1.DeploymentList, error) {
return &v1.DeploymentList{}, nil
},
}
},
}
},
Batch: func() batchv1.BatchV1Interface {
return &MockBatch{
CronJobsFn: func(namespace string) batchv1.CronJobInterface {
assert.Equal(t, "default", namespace)
return &MockCronJobs{
ListFn: func(ctx context.Context, opts metav1.ListOptions) (*batchapiv1.CronJobList, error) {
return nil, fmt.Errorf("error")
},
}
},
}
},
}, nil
}),
},
args: args{
namespaces: []string{"default"},
},
want: nil,
wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
return assert.EqualError(t, err, "error")
},
},
{
name: "no deployments or cronjobs",
fields: fields{
provider: MockClientProvider(func() (APIClient, error) {
return &MockAPIClient{
Apps: func() appsv1.AppsV1Interface {
return &MockApps{
DeploymentsFn: func(namespace string) appsv1.DeploymentInterface {
return &MockDeployments{
ListFn: func(ctx context.Context, opts metav1.ListOptions) (*v1.DeploymentList, error) {
return &v1.DeploymentList{}, nil
},
}
},
}
},
Batch: func() batchv1.BatchV1Interface {
return &MockBatch{
CronJobsFn: func(namespace string) batchv1.CronJobInterface {
return &MockCronJobs{
ListFn: func(ctx context.Context, opts metav1.ListOptions) (*batchapiv1.CronJobList, error) {
return &batchapiv1.CronJobList{}, nil
},
}
},
}
},
}, nil
}),
},
args: args{
namespaces: []string{"default"},
},
want: map[string][]string{},
wantErr: assert.NoError,
},
{
name: "deployments and cronjobs in multiple namespaces",
fields: fields{
provider: MockClientProvider(func() (APIClient, error) {
return &MockAPIClient{
Apps: func() appsv1.AppsV1Interface {
return &MockApps{
DeploymentsFn: func(namespace string) appsv1.DeploymentInterface {
return &MockDeployments{
ListFn: func(ctx context.Context, opts metav1.ListOptions) (*v1.DeploymentList, error) {
if namespace == "default" {
return &v1.DeploymentList{
Items: []v1.Deployment{
{
ObjectMeta: metav1.ObjectMeta{
Name: "some-deployment",
},
Spec: v1.DeploymentSpec{
Template: v12.PodTemplateSpec{
Spec: v12.PodSpec{
Containers: []v12.Container{
{
Image: "registry.gitlab.com/unboundsoftware/dummy:abc123",
},
},
},
},
},
},
},
}, nil
}
return &v1.DeploymentList{
Items: []v1.Deployment{
{
ObjectMeta: metav1.ObjectMeta{
Name: "other-deployment",
},
Spec: v1.DeploymentSpec{
Template: v12.PodTemplateSpec{
Spec: v12.PodSpec{
Containers: []v12.Container{
{
Image: "registry.gitlab.com/unboundsoftware/dummy:def456",
},
},
},
},
},
},
},
}, nil
},
}
},
}
},
Batch: func() batchv1.BatchV1Interface {
return &MockBatch{
CronJobsFn: func(namespace string) batchv1.CronJobInterface {
return &MockCronJobs{
ListFn: func(ctx context.Context, opts metav1.ListOptions) (*batchapiv1.CronJobList, error) {
if namespace == "other" {
return &batchapiv1.CronJobList{
Items: []batchapiv1.CronJob{
{
ObjectMeta: metav1.ObjectMeta{
Name: "some-cronjob",
},
Spec: batchapiv1.CronJobSpec{
JobTemplate: batchapiv1.JobTemplateSpec{
Spec: batchapiv1.JobSpec{
Template: v12.PodTemplateSpec{
Spec: v12.PodSpec{
Containers: []v12.Container{
{
Image: "registry.gitlab.com/unboundsoftware/other:xxx111",
},
},
},
},
},
},
},
},
},
}, nil
}
return &batchapiv1.CronJobList{}, nil
},
}
},
}
},
}, nil
}),
},
args: args{
namespaces: []string{"default", "other"},
},
want: map[string][]string{
"unboundsoftware/dummy": {"abc123", "def456"},
"unboundsoftware/other": {"xxx111"},
},
wantLogged: []string{
"info: Found image 'unboundsoftware/dummy:abc123' in deployment default.some-deployment",
"info: Found image 'unboundsoftware/dummy:def456' in deployment other.other-deployment",
"info: Found image 'unboundsoftware/other:xxx111' in cronjob other.some-cronjob",
},
wantErr: assert.NoError,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
c := &Client{
provider: tt.fields.provider,
}
logger := apex.New()
ctx := context.Background()
got, err := c.GetImages(ctx, logger, tt.args.namespaces)
if !tt.wantErr(t, err, fmt.Sprintf("GetImages(%v, %v, %v)", ctx, logger, tt.args.namespaces)) {
return
}
for k, v := range got {
sort.SliceStable(v, func(i, j int) bool {
return v[i] < v[j]
})
got[k] = v
}
assert.Equalf(t, tt.want, got, "GetImages(%v, %v, %v)", ctx, logger, tt.args.namespaces)
logger.Check(t, tt.wantLogged)
})
}
}
type MockClientProvider func() (APIClient, error)
func (m MockClientProvider) Provide() (APIClient, error) {
return m()
}
type MockAPIClient struct {
Apps func() appsv1.AppsV1Interface
Batch func() batchv1.BatchV1Interface
}
func (m *MockAPIClient) AppsV1() appsv1.AppsV1Interface {
if m.Apps == nil {
return nil
}
return m.Apps()
}
func (m *MockAPIClient) BatchV1() batchv1.BatchV1Interface {
if m.Batch == nil {
return nil
}
return m.Batch()
}
var _ APIClient = &MockAPIClient{}
type MockApps struct {
appsv1.AppsV1Interface
DeploymentsFn func(namespace string) appsv1.DeploymentInterface
}
func (a *MockApps) Deployments(namespace string) appsv1.DeploymentInterface {
if a.DeploymentsFn == nil {
return nil
}
return a.DeploymentsFn(namespace)
}
var _ appsv1.AppsV1Interface = &MockApps{}
type MockDeployments struct {
appsv1.DeploymentInterface
ListFn func(ctx context.Context, opts metav1.ListOptions) (*v1.DeploymentList, error)
}
func (d *MockDeployments) List(ctx context.Context, opts metav1.ListOptions) (*v1.DeploymentList, error) {
if d.ListFn == nil {
return nil, nil
}
return d.ListFn(ctx, opts)
}
var _ appsv1.DeploymentInterface = &MockDeployments{}
type MockBatch struct {
batchv1.BatchV1Interface
CronJobsFn func(namespace string) batchv1.CronJobInterface
}
func (b *MockBatch) CronJobs(namespace string) batchv1.CronJobInterface {
if b.CronJobsFn == nil {
return nil
}
return b.CronJobsFn(namespace)
}
var _ batchv1.BatchV1Interface = &MockBatch{}
type MockCronJobs struct {
batchv1.CronJobInterface
ListFn func(ctx context.Context, opts metav1.ListOptions) (*batchapiv1.CronJobList, error)
}
func (m *MockCronJobs) List(ctx context.Context, opts metav1.ListOptions) (*batchapiv1.CronJobList, error) {
if m.ListFn == nil {
return nil, nil
}
return m.ListFn(ctx, opts)
}
var _ batchv1.CronJobInterface = &MockCronJobs{}
+6
View File
@@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
]
}