Compare commits

..

275 Commits

Author SHA1 Message Date
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
18 changed files with 1227 additions and 547 deletions
+4
View File
@@ -2,3 +2,7 @@ vendor
.gitignore
.git
Dockerfile
coverage.txt
coverage.html
/exported
/release
+6 -5
View File
@@ -1,18 +1,19 @@
include:
- template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml'
- project: unboundsoftware/ci-templates
file: Defaults.gitlab-ci.yml
- project: unboundsoftware/ci-templates
file: Release.gitlab-ci.yml
- project: unboundsoftware/ci-templates
file: Pre-Commit-Go.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
-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.13.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.22.0
hooks:
- id: commitlint
stages: [ commit-msg ]
additional_dependencies: [ '@commitlint/config-conventional' ]
- repo: https://github.com/lietu/go-pre-commit
rev: v0.1.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.4.0
hooks:
- id: golangci-lint
+218
View File
@@ -0,0 +1,218 @@
## [0.0.19] - 2025-09-10
### 🐛 Bug Fixes
- *(deps)* Update kubernetes packages to v0.34.1
## [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
## [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
## [0.0.16] - 2025-07-16
### 🐛 Bug Fixes
- *(deps)* Update kubernetes packages to v0.33.3
## [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
## [0.0.14] - 2025-06-20
### 🐛 Bug Fixes
- *(deps)* Update kubernetes packages to v0.33.2
## [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
## [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
## [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
## [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
## [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
## [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
- Simplify CI configuration by removing unused variables
- *(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
- Remove pre-commit stage and include Go pre-commit template
## [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
### 💼 Other
- *(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
### ⚙️ 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
- Add release flow
### 🛡️ Security
- *(deps)* [security] bump golang.org/x/net from 0.13.0 to 0.17.0
## [0.0.3] - 2022-09-27
### 🚀 Features
- Add all existing tags to exclusion filter
### 💼 Other
- *(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
+1 -1
View File
@@ -1,4 +1,4 @@
FROM golang:1.19.1 as build
FROM amd64/golang:1.25.1@sha256:53f7808857782118f3a062261f721507dfa36e5c545e5d39c2dcf9916e3f0b1b 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.
+11 -2
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,7 +36,16 @@ 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
+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{}
+34 -35
View File
@@ -12,20 +12,16 @@ import (
)
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",
@@ -38,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
}
@@ -46,38 +57,26 @@ 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",
URL: reqUrl,
Header: header,
Body: io.NopCloser(buff),
}
_, err = r.client.Do(req)
return err
}
func (r *RestClient) GetTags(project string) ([]Tag, error) {
encoded := url.QueryEscape(project)
reqUrl, err := url.Parse(fmt.Sprintf("https://gitlab.com/api/v4/projects/%s/repository/tags", encoded))
if err != nil {
return nil, err
}
header := http.Header{}
header.Add("Content-Type", "application/json;charset=UTF-8")
header.Add("PRIVATE-TOKEN", r.token)
req := &http.Request{
Method: "GET",
Method: method,
URL: reqUrl,
Header: header,
Body: body,
}
resp, err := r.client.Do(req)
if err != nil {
return nil, err
return err
}
var tags []Tag
decoder := json.NewDecoder(resp.Body)
err = decoder.Decode(&tags)
return tags, 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))
}
return err
}
type ProjectConfig struct {
+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 -35
View File
@@ -1,52 +1,57 @@
module gitlab.com/unboundsoftware/gitlab-cleanup-handler
go 1.19
go 1.24.0
toolchain go1.25.1
require (
github.com/alecthomas/kong v0.6.1
github.com/alecthomas/kong v1.12.1
github.com/apex/log v1.9.0
k8s.io/apimachinery v0.25.2
k8s.io/client-go v0.25.2
github.com/stretchr/testify v1.11.1
gitlab.com/unboundsoftware/apex-mocks v0.2.0
k8s.io/api v0.34.1
k8s.io/apimachinery v0.34.1
k8s.io/client-go v0.34.1
)
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/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.2 // 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/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/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.6 // indirect
github.com/x448/float16 v0.8.4 // indirect
go.yaml.in/yaml/v2 v2.4.2 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/net v0.38.0 // indirect
golang.org/x/oauth2 v0.27.0 // indirect
golang.org/x/sys v0.31.0 // indirect
golang.org/x/term v0.30.0 // indirect
golang.org/x/text v0.23.0 // indirect
golang.org/x/time v0.9.0 // indirect
google.golang.org/protobuf v1.36.5 // indirect
gopkg.in/evanphx/json-patch.v4 v4.12.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.2 // 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-20250710124328-f3f2b991d03b // indirect
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // 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
)
+108 -417
View File
@@ -1,46 +1,9 @@
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/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.12.1 h1:iq6aMJDcFYP9uFrLdsiZQ2ZMmcshduyGv4Pek0MQPW0=
github.com/alecthomas/kong v1.12.1/go.mod h1:p2vqieVMeTAnaC83txKtXe8FLke2X07aruPWXyMPQrU=
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
github.com/alecthomas/repr v0.4.0/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 +11,66 @@ 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/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/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/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/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.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
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-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
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 +79,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.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM=
github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4=
github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
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.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
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.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
github.com/spf13/pflag v1.0.6/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,314 +126,96 @@ 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/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
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=
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.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
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/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.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
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/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.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
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.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
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/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=
golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
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/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=
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
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.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
gopkg.in/evanphx/json-patch.v4 v4.12.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.2 h1:v6G8RyFcwf0HR5jQGIAYlvtRNrxMJQG1xJzaSeVnIS8=
k8s.io/api v0.25.2/go.mod h1:qP1Rn4sCVFwx/xIhe+we2cwBLTXNcheRyYXwajonhy0=
k8s.io/apimachinery v0.25.2 h1:WbxfAjCx+AeN8Ilp9joWnyJ6xu9OMeS/fsfjK/5zaQs=
k8s.io/apimachinery v0.25.2/go.mod h1:hqqA1X0bsgsxI6dXsJ4HnNTBOmJNxyPp8dw3u2fSHwA=
k8s.io/client-go v0.25.2 h1:SUPp9p5CwM0yXGQrwYurw9LWz+YtMwhWd0GqOsSiefo=
k8s.io/client-go v0.25.2/go.mod h1:i7cNU7N+yGQmJkewcRD2+Vuj4iz7b30kI8OcL3horQ4=
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.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4=
k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY=
k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8=
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-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA=
k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y=
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/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"
]
}