From 2757a8a5c89d3ca79ae59edaecbd3d37a020bdcf Mon Sep 17 00:00:00 2001 From: Julien Goux Date: Thu, 4 Jun 2026 12:33:44 +0200 Subject: [PATCH] chore(cli-go): migrate Docker SDK to Moby modules --- apps/cli-go/go.mod | 105 ++--- apps/cli-go/go.sum | 395 ++++++------------ apps/cli-go/internal/db/diff/diff.go | 7 +- apps/cli-go/internal/db/diff/diff_test.go | 37 +- apps/cli-go/internal/db/diff/migra.go | 4 +- apps/cli-go/internal/db/dump/dump.go | 4 +- apps/cli-go/internal/db/dump/dump_test.go | 8 +- apps/cli-go/internal/db/lint/lint_test.go | 4 +- apps/cli-go/internal/db/pull/pull_test.go | 4 +- apps/cli-go/internal/db/reset/reset.go | 18 +- apps/cli-go/internal/db/reset/reset_test.go | 45 +- apps/cli-go/internal/db/start/start.go | 11 +- apps/cli-go/internal/db/start/start_test.go | 41 +- apps/cli-go/internal/db/test/test.go | 4 +- apps/cli-go/internal/db/test/test_test.go | 4 +- .../internal/functions/deploy/bundle.go | 4 +- .../internal/functions/deploy/bundle_test.go | 2 +- .../internal/functions/deploy/deploy_test.go | 10 +- .../internal/functions/download/download.go | 4 +- .../functions/download/download_test.go | 15 +- apps/cli-go/internal/functions/serve/serve.go | 20 +- .../internal/functions/serve/serve_test.go | 14 +- .../internal/functions/serve/streamer.go | 4 +- .../internal/functions/serve/streamer_test.go | 6 +- apps/cli-go/internal/gen/types/types.go | 4 +- apps/cli-go/internal/gen/types/types_test.go | 12 +- .../internal/migration/squash/squash_test.go | 37 +- apps/cli-go/internal/start/start.go | 108 +++-- apps/cli-go/internal/start/start_test.go | 39 +- apps/cli-go/internal/status/status.go | 22 +- apps/cli-go/internal/status/status_test.go | 16 +- apps/cli-go/internal/stop/stop.go | 6 +- apps/cli-go/internal/stop/stop_test.go | 42 +- .../cli-go/internal/testing/apitest/docker.go | 72 ++-- .../cli-go/internal/utils/container_output.go | 4 +- .../internal/utils/container_output_test.go | 8 +- apps/cli-go/internal/utils/docker.go | 95 ++--- apps/cli-go/internal/utils/docker_darwin.go | 2 +- apps/cli-go/internal/utils/docker_linux.go | 2 +- apps/cli-go/internal/utils/docker_test.go | 56 +-- apps/cli-go/internal/utils/docker_windows.go | 4 +- apps/cli-go/internal/utils/edgeruntime.go | 4 +- apps/cli-go/internal/utils/misc.go | 4 +- apps/cli-go/legacy/branch/create/create.go | 10 +- .../legacy/branch/create/create_test.go | 10 +- apps/cli-go/legacy/branch/delete/delete.go | 10 +- .../legacy/branch/delete/delete_test.go | 2 +- .../legacy/branch/switch_/switch__test.go | 20 +- 48 files changed, 573 insertions(+), 786 deletions(-) diff --git a/apps/cli-go/go.mod b/apps/cli-go/go.mod index 1de6ab7518..bd246a7ffe 100644 --- a/apps/cli-go/go.mod +++ b/apps/cli-go/go.mod @@ -14,10 +14,8 @@ require ( github.com/compose-spec/compose-go/v2 v2.11.0 github.com/containerd/errdefs v1.0.0 github.com/containers/common v0.64.2 - github.com/docker/cli v28.5.2+incompatible - github.com/docker/compose/v2 v2.40.3 - github.com/docker/docker v28.5.2+incompatible - github.com/docker/go-connections v0.7.0 + github.com/docker/cli v29.5.3+incompatible + github.com/docker/compose/v5 v5.1.4 github.com/docker/go-units v0.5.0 github.com/fsnotify/fsnotify v1.10.1 github.com/getsentry/sentry-go v0.46.2 @@ -38,6 +36,8 @@ require ( github.com/jackc/pgx/v4 v4.18.3 github.com/joho/godotenv v1.5.1 github.com/mithrandie/csvq-driver v1.7.0 + github.com/moby/moby/api v1.54.2 + github.com/moby/moby/client v0.4.1 github.com/muesli/reflow v0.3.0 github.com/multigres/multigres v0.0.0-20260126223308-f5a52171bbc4 github.com/oapi-codegen/nullable v1.1.0 @@ -87,24 +87,9 @@ require ( github.com/alingse/asasalint v0.0.11 // indirect github.com/alingse/nilnesserr v0.2.0 // indirect github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect - github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/ashanbrown/forbidigo v1.6.0 // indirect github.com/ashanbrown/makezero v1.2.0 // indirect github.com/atotto/clipboard v0.1.4 // indirect - github.com/aws/aws-sdk-go-v2 v1.41.1 // indirect - github.com/aws/aws-sdk-go-v2/config v1.32.7 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.19.7 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 // indirect - github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 // indirect - github.com/aws/smithy-go v1.24.0 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/aymerick/douceur v0.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -135,12 +120,12 @@ require ( github.com/cloudflare/circl v1.6.3 // indirect github.com/containerd/console v1.0.5 // indirect github.com/containerd/containerd/api v1.10.0 // indirect - github.com/containerd/containerd/v2 v2.2.4 // indirect + github.com/containerd/containerd/v2 v2.2.3 // indirect github.com/containerd/continuity v0.4.5 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/containerd/log v0.1.0 // indirect - github.com/containerd/platforms v1.0.0-rc.2 // indirect - github.com/containerd/ttrpc v1.2.7 // indirect + github.com/containerd/platforms v1.0.0-rc.4 // indirect + github.com/containerd/ttrpc v1.2.8 // indirect github.com/containerd/typeurl/v2 v2.2.3 // indirect github.com/containers/storage v1.59.1 // indirect github.com/curioswitch/go-reassign v0.3.0 // indirect @@ -154,16 +139,13 @@ require ( github.com/distribution/reference v0.6.0 // indirect github.com/dlclark/regexp2 v1.11.5 // indirect github.com/dnephin/pflag v1.0.7 // indirect - github.com/docker/buildx v0.29.1 // indirect - github.com/docker/cli-docs-tool v0.10.0 // indirect - github.com/docker/distribution v2.8.3+incompatible // indirect + github.com/docker/buildx v0.33.0 // indirect + github.com/docker/docker v28.5.2+incompatible // indirect github.com/docker/docker-credential-helpers v0.9.5 // indirect - github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c // indirect - github.com/docker/go-metrics v0.0.1 // indirect + github.com/docker/go-connections v0.7.0 // indirect github.com/dprotaso/go-yit v0.0.0-20220510233725-9ba8df137936 // indirect github.com/ecies/go/v2 v2.0.11 // indirect github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203 // indirect - github.com/emicklei/go-restful/v3 v3.13.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect github.com/ethereum/go-ethereum v1.17.0 // indirect @@ -174,7 +156,6 @@ require ( github.com/firefart/nonamedreturns v1.0.6 // indirect github.com/fsnotify/fsevents v0.2.0 // indirect github.com/fvbommel/sortorder v1.1.0 // indirect - github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect github.com/gabriel-vasile/mimetype v1.4.13 // indirect github.com/getkin/kin-openapi v0.131.0 // indirect @@ -184,23 +165,10 @@ require ( github.com/go-git/go-billy/v5 v5.9.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/jsonpointer v0.22.4 // indirect - github.com/go-openapi/jsonreference v0.21.4 // indirect - github.com/go-openapi/swag v0.25.4 // indirect - github.com/go-openapi/swag/cmdutils v0.25.4 // indirect - github.com/go-openapi/swag/conv v0.25.4 // indirect - github.com/go-openapi/swag/fileutils v0.25.4 // indirect - github.com/go-openapi/swag/jsonname v0.25.4 // indirect - github.com/go-openapi/swag/jsonutils v0.25.4 // indirect - github.com/go-openapi/swag/loading v0.25.4 // indirect - github.com/go-openapi/swag/mangling v0.25.4 // indirect - github.com/go-openapi/swag/netutils v0.25.4 // indirect - github.com/go-openapi/swag/stringutils v0.25.4 // indirect - github.com/go-openapi/swag/typeutils v0.25.4 // indirect - github.com/go-openapi/swag/yamlutils v0.25.4 // indirect + github.com/go-openapi/jsonpointer v0.22.5 // indirect + github.com/go-openapi/swag/jsonname v0.25.5 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-sql-driver/mysql v1.9.3 // indirect github.com/go-test/deep v1.1.1 // indirect github.com/go-toolsmith/astcast v1.1.0 // indirect github.com/go-toolsmith/astcopy v1.1.0 // indirect @@ -225,14 +193,10 @@ require ( github.com/golangci/plugin-module-register v0.1.1 // indirect github.com/golangci/revgrep v0.8.0 // indirect github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e // indirect - github.com/google/certificate-transparency-go v1.3.2 // indirect - github.com/google/gnostic-models v0.7.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/gordonklaus/ineffassign v0.1.0 // indirect github.com/gorilla/css v1.0.1 // indirect - github.com/gorilla/mux v1.8.1 // indirect - github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect github.com/gostaticanalysis/comment v1.5.0 // indirect github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect @@ -243,11 +207,11 @@ require ( github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/in-toto/attestation v1.1.2 // indirect - github.com/in-toto/in-toto-golang v0.11.0 // indirect + github.com/in-toto/in-toto-golang v0.10.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/inhies/go-bytesize v0.0.0-20220417184213-4913239db9cf // indirect github.com/jackc/chunkreader/v2 v2.0.1 // indirect @@ -262,7 +226,6 @@ require ( github.com/jjti/go-spancheck v0.6.4 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect github.com/julz/importas v0.2.0 // indirect github.com/karamaru-alpha/copyloopvar v1.2.1 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect @@ -294,33 +257,28 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-runewidth v0.0.19 // indirect - github.com/mattn/go-shellwords v1.0.12 // indirect + github.com/mattn/go-shellwords v1.0.13 // indirect github.com/mgechev/revive v1.9.0 // indirect github.com/microcosm-cc/bluemonday v1.0.27 // indirect - github.com/miekg/pkcs11 v1.1.1 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect github.com/mithrandie/csvq v1.18.1 // indirect github.com/mithrandie/go-file/v2 v2.1.0 // indirect github.com/mithrandie/go-text v1.6.0 // indirect github.com/mithrandie/ternary v1.1.1 // indirect - github.com/moby/buildkit v0.26.3 // indirect + github.com/moby/buildkit v0.29.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect - github.com/moby/go-archive v0.1.0 // indirect + github.com/moby/go-archive v0.2.0 // indirect github.com/moby/locker v1.0.1 // indirect github.com/moby/patternmatcher v0.6.1 // indirect - github.com/moby/spdystream v0.5.1 // indirect github.com/moby/sys/atomicwriter v0.1.0 // indirect github.com/moby/sys/capability v0.4.0 // indirect - github.com/moby/sys/mountinfo v0.7.2 // indirect github.com/moby/sys/sequential v0.6.0 // indirect github.com/moby/sys/signal v0.7.1 // indirect github.com/moby/sys/symlink v0.3.0 // indirect github.com/moby/sys/user v0.4.0 // indirect github.com/moby/sys/userns v0.1.0 // indirect github.com/moby/term v0.5.2 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/moricho/tparallel v0.3.2 // indirect github.com/morikuni/aec v1.1.0 // indirect @@ -328,7 +286,6 @@ require ( github.com/muesli/cancelreader v0.2.2 // indirect github.com/muesli/termenv v0.16.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect @@ -342,7 +299,6 @@ require ( github.com/olekukonko/ll v0.1.6 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect - github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/perimeterx/marshmallow v1.1.5 // indirect github.com/pjbgf/sha1cd v0.6.0 // indirect @@ -373,8 +329,9 @@ require ( github.com/secure-systems-lab/go-securesystemslib v0.10.0 // indirect github.com/securego/gosec/v2 v2.22.3 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b // indirect github.com/shibumi/go-pathspec v1.3.0 // indirect + github.com/sigstore/sigstore v1.10.4 // indirect + github.com/sigstore/sigstore-go v1.1.4 // indirect github.com/sirupsen/logrus v1.9.4 // indirect github.com/sivchari/containedctx v1.0.3 // indirect github.com/skeema/knownhosts v1.3.1 // indirect @@ -389,7 +346,6 @@ require ( github.com/subosito/gotenv v1.6.0 // indirect github.com/tdakkota/asciicheck v0.4.1 // indirect github.com/tetafro/godot v1.5.1 // indirect - github.com/theupdateframework/notary v0.7.0 // indirect github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375 // indirect github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 // indirect github.com/timonwong/loggercheck v0.11.0 // indirect @@ -405,9 +361,8 @@ require ( github.com/uudashr/gocognit v1.2.0 // indirect github.com/uudashr/iface v1.3.1 // indirect github.com/vmware-labs/yaml-jsonpath v0.3.2 // indirect - github.com/x448/float16 v0.8.4 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect + github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect github.com/xen0n/gosmopolitan v1.3.0 // indirect @@ -418,7 +373,6 @@ require ( github.com/ykadowak/zerologlint v0.1.5 // indirect github.com/yuin/goldmark v1.7.13 // indirect github.com/yuin/goldmark-emoji v1.0.6 // indirect - github.com/zclconf/go-cty v1.17.0 // indirect gitlab.com/bosi/decorder v0.4.2 // indirect go-simpler.org/musttag v0.13.1 // indirect go-simpler.org/sloglint v0.11.0 // indirect @@ -427,10 +381,10 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.39.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.44.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.42.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect go.opentelemetry.io/otel/metric v1.44.0 // indirect go.opentelemetry.io/otel/sdk v1.44.0 // indirect @@ -455,25 +409,14 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect google.golang.org/protobuf v1.36.11 // indirect - gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gotest.tools/gotestsum v1.12.2 // indirect + gotest.tools/v3 v3.5.2 // indirect honnef.co/go/tools v0.6.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/apimachinery v0.34.1 // indirect - k8s.io/client-go v0.34.1 // 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 mvdan.cc/gofumpt v0.9.1 // indirect mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 // 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 tags.cncf.io/container-device-interface v1.1.0 // indirect ) diff --git a/apps/cli-go/go.sum b/apps/cli-go/go.sum index c6c20b50fb..95e7272dca 100644 --- a/apps/cli-go/go.sum +++ b/apps/cli-go/go.sum @@ -6,8 +6,6 @@ cyphar.com/go-pathrs v0.2.1 h1:9nx1vOgwVvX1mNBWDu93+vaceedpbsDqo+XuBGL40b8= cyphar.com/go-pathrs v0.2.1/go.mod h1:y8f1EMG7r+hCuFf/rXsKqMJrJAUoADZGNh5/vZPKcGc= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= -filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= -filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/4meepo/tagalign v1.4.2 h1:0hcLHPGMjDyM1gHG58cS73aQF8J4TdVR96TZViorO9E= github.com/4meepo/tagalign v1.4.2/go.mod h1:+p4aMyFM+ra7nb41CnFG6aSDXqRxU/w1VQqScKqDARI= github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE= @@ -46,8 +44,6 @@ github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgz github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw= github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk= -github.com/Shopify/logrus-bugsnag v0.0.0-20170309145241-6dbc35f2c30d h1:hi6J4K6DKrR4/ljxn6SF6nURyu785wKMuQcjt7H3VCQ= -github.com/Shopify/logrus-bugsnag v0.0.0-20170309145241-6dbc35f2c30d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= @@ -58,8 +54,6 @@ github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsr github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= github.com/alecthomas/repr v0.5.1 h1:E3G4t2QbHTSNpPKBgMTln5KLkZHLOcU7r37J4pXBuIg= github.com/alecthomas/repr v0.5.1/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alexkohler/nakedret/v2 v2.0.6 h1:ME3Qef1/KIKr3kWX3nti3hhgNxw6aqN5pZmQiFSsuzQ= github.com/alexkohler/nakedret/v2 v2.0.6/go.mod h1:l3RKju/IzOMQHmsEvXwkqMDzHHvurNQfAgE1eVmT40Q= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= @@ -68,73 +62,41 @@ github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQ github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= github.com/alingse/nilnesserr v0.2.0 h1:raLem5KG7EFVb4UIDAXgrv3N2JIaffeKNtcEXkEWd/w= github.com/alingse/nilnesserr v0.2.0/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= -github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 h1:aM1rlcoLz8y5B2r4tTLMiVTrMtpfY0O8EScKJxaSaEc= -github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA= +github.com/anchore/go-struct-converter v0.1.0 h1:2rDRssAl6mgKBSLNiVCMADgZRhoqtw9dedlWa0OhD30= +github.com/anchore/go-struct-converter v0.1.0/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA= github.com/andybalholm/brotli v1.2.1 h1:R+f5xP285VArJDRgowrfb9DqL18yVK0gKAW/F+eTWro= github.com/andybalholm/brotli v1.2.1/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ= github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk= -github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= -github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= +github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9IEUU= github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= -github.com/aws/aws-sdk-go-v2 v1.41.1 h1:ABlyEARCDLN034NhxlRUSZr4l71mh+T5KAeGh6cerhU= -github.com/aws/aws-sdk-go-v2 v1.41.1/go.mod h1:MayyLB8y+buD9hZqkCW3kX1AKq07Y5pXxtgB+rRFhz0= -github.com/aws/aws-sdk-go-v2/config v1.32.7 h1:vxUyWGUwmkQ2g19n7JY/9YL8MfAIl7bTesIUykECXmY= -github.com/aws/aws-sdk-go-v2/config v1.32.7/go.mod h1:2/Qm5vKUU/r7Y+zUk/Ptt2MDAEKAfUtKc1+3U1Mo3oY= -github.com/aws/aws-sdk-go-v2/credentials v1.19.7 h1:tHK47VqqtJxOymRrNtUXN5SP/zUTvZKeLx4tH6PGQc8= -github.com/aws/aws-sdk-go-v2/credentials v1.19.7/go.mod h1:qOZk8sPDrxhf+4Wf4oT2urYJrYt3RejHSzgAquYeppw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 h1:I0GyV8wiYrP8XpA70g1HBcQO1JlQxCMTW9npl5UbDHY= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17/go.mod h1:tyw7BOl5bBe/oqvoIeECFJjMdzXoa/dfVz3QQ5lgHGA= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 h1:xOLELNKGp2vsiteLsvLPwxC+mYmO6OZ8PYgiuPJzF8U= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17/go.mod h1:5M5CI3D12dNOtH3/mk6minaRwI2/37ifCURZISxA/IQ= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 h1:WWLqlh79iO48yLkj1v3ISRNiv+3KdQoZ6JWyfcsyQik= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17/go.mod h1:EhG22vHRrvF8oXSTYStZhJc1aUgKtnJe+aOiFEV90cM= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 h1:0ryTNEdJbzUCEWkVXEXoqlXV72J5keC1GvILMOuD00E= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4/go.mod h1:HQ4qwNZh32C3CBeO6iJLQlgtMzqeG17ziAA/3KDJFow= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 h1:RuNSMoozM8oXlgLG/n6WLaFGoea7/CddrCfIiSA+xdY= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17/go.mod h1:F2xxQ9TZz5gDWsclCtPQscGpP0VUOc8RqgFM3vDENmU= -github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 h1:VrhDvQib/i0lxvr3zqlUwLwJP4fpmpyD9wYG1vfSu+Y= -github.com/aws/aws-sdk-go-v2/service/signin v1.0.5/go.mod h1:k029+U8SY30/3/ras4G/Fnv/b88N4mAfliNn08Dem4M= -github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 h1:v6EiMvhEYBoHABfbGB4alOYmCIrcgyPPiBE1wZAEbqk= -github.com/aws/aws-sdk-go-v2/service/sso v1.30.9/go.mod h1:yifAsgBxgJWn3ggx70A3urX2AN49Y5sJTD1UQFlfqBw= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 h1:gd84Omyu9JLriJVCbGApcLzVR3XtmC4ZDPcAI6Ftvds= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13/go.mod h1:sTGThjphYE4Ohw8vJiRStAcu3rbjtXRsdNB0TvZ5wwo= -github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 h1:5fFjR/ToSOzB2OQ/XqWpZBmNvmP/pJ1jOWYlFDJTjRQ= -github.com/aws/aws-sdk-go-v2/service/sts v1.41.6/go.mod h1:qgFDZQSD/Kys7nJnVqYlWKnh0SSdMjAi0uSwON4wgYQ= -github.com/aws/smithy-go v1.24.0 h1:LpilSUItNPFr1eY85RYgTIg5eIEPtvFbskaFcmmIUnk= -github.com/aws/smithy-go v1.24.0/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/aymanbagabas/go-udiff v0.3.1 h1:LV+qyBQ2pqe0u42ZsUEtPiCaUoqgA9gYRDs3vj1nolY= github.com/aymanbagabas/go-udiff v0.3.1/go.mod h1:G0fsKmG+P6ylD0r6N/KgQD/nWzgfnl8ZBcNLgcbrw8E= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= -github.com/beorn7/perks v0.0.0-20150223135152-b965b613227f/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bitfield/gotestdox v0.2.2 h1:x6RcPAbBbErKLnapz1QeAlf3ospg8efBsedU93CDsnE= github.com/bitfield/gotestdox v0.2.2/go.mod h1:D+gwtS0urjBrzguAkTM2wodsTQYFHdpx8eqRJ3N+9pY= -github.com/bitly/go-hostpool v0.1.0/go.mod h1:4gOCgp6+NZnVqlKyZ/iBZFTAJKembaVENUpMkpg42fw= -github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5w= github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8ztxG8Fuo= +github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bombsimon/wsl/v4 v4.7.0 h1:1Ilm9JBPRczjyUs6hvOPKvd7VL1Q++PL8M0SXBDf+jQ= github.com/bombsimon/wsl/v4 v4.7.0/go.mod h1:uV/+6BkffuzSAVYD+yGyld1AChO7/EuLrCF/8xTiapg= github.com/breml/bidichk v0.3.3 h1:WSM67ztRusf1sMoqH6/c4OBCUlRVTKq+CbSeo0R17sE= @@ -143,12 +105,6 @@ github.com/breml/errchkjson v0.4.1 h1:keFSS8D7A2T0haP9kzZTi7o26r7kE3vymjZNeNDRDw github.com/breml/errchkjson v0.4.1/go.mod h1:a23OvR6Qvcl7DG/Z4o0el6BRAjKnaReoPQFciAl9U3s= github.com/buger/goterm v1.0.4 h1:Z9YvGmOih81P0FbVtEYTFF6YsSgxSUKEhf/f9bTMXbY= github.com/buger/goterm v1.0.4/go.mod h1:HiFWV3xnkolgrBV3mY8m0X0Pumt4zg4QhbdOzQtB8tE= -github.com/bugsnag/bugsnag-go v1.0.5-0.20150529004307-13fd6b8acda0 h1:s7+5BfS4WFJoVF9pnB8kBk03S7pZXRdKamnV0FOl5Sc= -github.com/bugsnag/bugsnag-go v1.0.5-0.20150529004307-13fd6b8acda0/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/butuzov/ireturn v0.4.0 h1:+s76bF/PfeKEdbG8b54aCocxXmi0wvYdOVsWxVO7n8E= github.com/butuzov/ireturn v0.4.0/go.mod h1:ghI0FrCmap8pDWZwfPisFD1vEc56VKH4NpQUxDHta70= github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= @@ -198,8 +154,6 @@ github.com/clipperhouse/displaywidth v0.10.0 h1:GhBG8WuerxjFQQYeuZAeVTuyxuX+Urai github.com/clipperhouse/displaywidth v0.10.0/go.mod h1:XqJajYsaiEwkxOj4bowCTMcT1SgvHo9flfF3jQasdbs= github.com/clipperhouse/uax29/v2 v2.6.0 h1:z0cDbUV+aPASdFb2/ndFnS9ts/WNXgTNNGFoKXuhpos= github.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= -github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004 h1:lkAMpLVBDaj17e85keuznYcH5rqI438v41pKcBl4ZxQ= -github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA= github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8= github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4= github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= @@ -208,14 +162,14 @@ github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUo github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= github.com/compose-spec/compose-go/v2 v2.11.0 h1:xoq/ootgIL6TsHmbJHrkuh7+bzjhPV3NHftHRPPyVXM= github.com/compose-spec/compose-go/v2 v2.11.0/go.mod h1:ZU6zlcweCZKyiB7BVfCizQT9XmkEIMFE+PRZydVcsZg= -github.com/containerd/cgroups/v3 v3.1.2 h1:OSosXMtkhI6Qove637tg1XgK4q+DhR0mX8Wi8EhrHa4= -github.com/containerd/cgroups/v3 v3.1.2/go.mod h1:PKZ2AcWmSBsY/tJUVhtS/rluX0b1uq1GmPO1ElCmbOw= +github.com/containerd/cgroups/v3 v3.1.3 h1:eUNflyMddm18+yrDmZPn3jI7C5hJ9ahABE5q6dyLYXQ= +github.com/containerd/cgroups/v3 v3.1.3/go.mod h1:PKZ2AcWmSBsY/tJUVhtS/rluX0b1uq1GmPO1ElCmbOw= github.com/containerd/console v1.0.5 h1:R0ymNeydRqH2DmakFNdmjR2k0t7UPuiOV/N/27/qqsc= github.com/containerd/console v1.0.5/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd/api v1.10.0 h1:5n0oHYVBwN4VhoX9fFykCV9dF1/BvAXeg2F8W6UYq1o= github.com/containerd/containerd/api v1.10.0/go.mod h1:NBm1OAk8ZL+LG8R0ceObGxT5hbUYj7CzTmR3xh0DlMM= -github.com/containerd/containerd/v2 v2.2.4 h1:8x2UdXqww7NYqGNabQ7i1nAgB5LegzjC9KQzO/900iA= -github.com/containerd/containerd/v2 v2.2.4/go.mod h1:YBcTO8D9149QY9zNmUjy04Mhuc4DlrZQ8FIOwKZEM7o= +github.com/containerd/containerd/v2 v2.2.3 h1:mOBRLaHGvmgy0bRo1Sg6OD8ugMKZIvCoWWMeMMygliA= +github.com/containerd/containerd/v2 v2.2.3/go.mod h1:ns24cwt+p36mRnuKE3hLRxVBpuSP+a/Y25AMki1t/RY= github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= @@ -226,17 +180,17 @@ github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/containerd/nydus-snapshotter v0.15.4 h1:l59kGRVMtwMLDLh322HsWhEsBCkRKMkGWYV5vBeLYCE= -github.com/containerd/nydus-snapshotter v0.15.4/go.mod h1:eRJqnxQDr48HNop15kZdLZpFF5B6vf6Q11Aq1K0E4Ms= -github.com/containerd/platforms v1.0.0-rc.2 h1:0SPgaNZPVWGEi4grZdV8VRYQn78y+nm6acgLGv/QzE4= -github.com/containerd/platforms v1.0.0-rc.2/go.mod h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4= +github.com/containerd/nydus-snapshotter v0.15.13 h1:z9yCiTPMxVBIZlHxOPinZXhly2MdcIqxk9VXPlHIOJY= +github.com/containerd/nydus-snapshotter v0.15.13/go.mod h1:t95dwCb4I0RE4n1iOk0sJCWosNoACA8daOXmU5A2VHI= +github.com/containerd/platforms v1.0.0-rc.4 h1:M42JrUT4zfZTqtkUwkr0GzmUWbfyO5VO0Q5b3op97T4= +github.com/containerd/platforms v1.0.0-rc.4/go.mod h1:lKlMXyLybmBedS/JJm11uDofzI8L2v0J2ZbYvNsbq1A= github.com/containerd/plugin v1.0.0 h1:c8Kf1TNl6+e2TtMHZt+39yAPDbouRH9WAToRjex483Y= github.com/containerd/plugin v1.0.0/go.mod h1:hQfJe5nmWfImiqT1q8Si3jLv3ynMUIBB47bQ+KexvO8= -github.com/containerd/stargz-snapshotter v0.17.0 h1:djNS4KU8ztFhLdEDZ1bsfzOiYuVHT6TgSU5qwRk+cNc= -github.com/containerd/stargz-snapshotter/estargz v0.17.0 h1:+TyQIsR/zSFI1Rm31EQBwpAA1ovYgIKHy7kctL3sLcE= -github.com/containerd/stargz-snapshotter/estargz v0.17.0/go.mod h1:s06tWAiJcXQo9/8AReBCIo/QxcXFZ2n4qfsRnpl71SM= -github.com/containerd/ttrpc v1.2.7 h1:qIrroQvuOL9HQ1X6KHe2ohc7p+HP/0VE6XPU7elJRqQ= -github.com/containerd/ttrpc v1.2.7/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o= +github.com/containerd/stargz-snapshotter v0.18.2 h1:Ev/sxfQUjwzJQ9eqy3XzttcQ3osMIqkQgMYlcET+10M= +github.com/containerd/stargz-snapshotter/estargz v0.18.2 h1:yXkZFYIzz3eoLwlTUZKz2iQ4MrckBxJjkmD16ynUTrw= +github.com/containerd/stargz-snapshotter/estargz v0.18.2/go.mod h1:XyVU5tcJ3PRpkA9XS2T5us6Eg35yM0214Y+wvrZTBrY= +github.com/containerd/ttrpc v1.2.8 h1:xbVu6D4qF2jihdh9rDVOKqUMiFBQk6YctTdo1zk087Y= +github.com/containerd/ttrpc v1.2.8/go.mod h1:wyZW2K79t4Hfcxl+GUvkZqRBzJlqFFvgEeeWXa42tyE= github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40= github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk= github.com/containers/common v0.64.2 h1:1xepE7QwQggUXxmyQ1Dbh6Cn0yd7ktk14sN3McSWf5I= @@ -252,6 +206,8 @@ github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s= github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= +github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 h1:uX1JmpONuD549D73r6cgnxyUu18Zb7yHAy5AYU0Pm4Q= +github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467/go.mod h1:uzvlm1mxhHkdfqitSA92i7Se+S9ksOn3a3qmv/kyOCw= github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE= github.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc= github.com/daixiang0/gci v0.13.6 h1:RKuEOSkGpSadkGbvZ6hJ4ddItT3cVZ9Vn9Rybk6xjl8= @@ -270,57 +226,47 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvw github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8= github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= -github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352 h1:ge14PCmCvPjpMQMIAH7uKg0lrtNSOdpYsRXlwk3QbaE= +github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352/go.mod h1:SKVExuS+vpu2l9IoOc0RwqE7NYnb0JlcFHFnEJkVDzc= +github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7 h1:lxmTCgmHE1GUYL7P0MlNa00M67axePTq+9nBSGddR8I= +github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7/go.mod h1:GvWntX9qiTlOud0WkQ6ewFm0LPy5JUR1Xo0Ngbd1w6Y= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ= github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dnephin/pflag v1.0.7 h1:oxONGlWxhmUct0YzKTgrpQv9AUA1wtPBn7zuSjJqptk= github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= -github.com/docker/buildx v0.29.1 h1:58hxM5Z4mnNje3G5NKfULT9xCr8ooM8XFtlfUK9bKaA= -github.com/docker/buildx v0.29.1/go.mod h1:J4EFv6oxlPiV1MjO0VyJx2u5tLM7ImDEl9zyB8d4wPI= -github.com/docker/cli v28.5.2+incompatible h1:XmG99IHcBmIAoC1PPg9eLBZPlTrNUAijsHLm8PjhBlg= -github.com/docker/cli v28.5.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli-docs-tool v0.10.0 h1:bOD6mKynPQgojQi3s2jgcUWGp/Ebqy1SeCr9VfKQLLU= -github.com/docker/cli-docs-tool v0.10.0/go.mod h1:5EM5zPnT2E7yCLERZmrDA234Vwn09fzRHP4aX1qwp1U= -github.com/docker/compose/v2 v2.40.3 h1:XeYkQu1svDtyfZPv5nTwFryQ25ZJMkIlc4pz9HalMPI= -github.com/docker/compose/v2 v2.40.3/go.mod h1:iNY1tvoHTyN3C3QHCuWAgj3OjR2T6mGkk/qxfbBF/4M= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/buildx v0.33.0 h1:xuZeuQe/C/2tvLDgiIA6+Ynq3FFWSfsGNWIHM3q1hD8= +github.com/docker/buildx v0.33.0/go.mod h1:7JVma62htERKE5iy5YD1q64PKiAHUzXuhSBd4oq3I74= +github.com/docker/cli v29.5.3+incompatible h1:nbEFfz774vBwQ5KRYv7c/AghjReqnGISvrRhzjV0evs= +github.com/docker/cli v29.5.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/compose/v5 v5.1.4 h1:72mGZplTVlbq6JxxhCW/bX2o1h+tT8mwt7mc+QtmA6o= +github.com/docker/compose/v5 v5.1.4/go.mod h1:ImZiWTwIFm7BziHjX2MZVzwOiIkClXRzv+rkU18lQoc= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaftjlSWt4AFexzM= github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.9.5 h1:EFNN8DHvaiK8zVqFA2DT6BjXE0GzfLOZ38ggPTKePkY= github.com/docker/docker-credential-helpers v0.9.5/go.mod h1:v1S+hepowrQXITkEfw6o4+BMbGot02wiKpzWhGUZK6c= -github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0= -github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c/go.mod h1:CADgU4DSXK5QUlFslkQu2yW2TKzFZcXq/leZfM0UH5Q= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.7.0 h1:6SsRfJddP22WMrCkj19x9WKjEDTB+ahsdiGYf0mN39c= github.com/docker/go-connections v0.7.0/go.mod h1:no1qkHdjq7kLMGUXYAduOhYPSJxxvgWBh7ogVvptn3Q= -github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4= -github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/dprotaso/go-yit v0.0.0-20191028211022-135eb7262960/go.mod h1:9HQzr9D/0PGwMEbC3d5AB7oi67+h4TsQqItC1GVYG58= github.com/dprotaso/go-yit v0.0.0-20220510233725-9ba8df137936 h1:PRxIJD8XjimM5aTknUK9w6DHLDox2r2M3DI4i2pnd3w= github.com/dprotaso/go-yit v0.0.0-20220510233725-9ba8df137936/go.mod h1:ttYvX5qlB+mlV1okblJqcSMtR4c52UKxDiX9GRBS8+Q= -github.com/dvsekhvalnov/jose2go v0.0.0-20170216131308-f21a8cedbbae/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= github.com/ecies/go/v2 v2.0.11 h1:xYhtMdLiqNi02oLirFmLyNbVXw6250h3WM6zJryQdiM= github.com/ecies/go/v2 v2.0.11/go.mod h1:LPRzoefP0Tam+1uesQOq3Gtb6M2OwlFUnXBTtBAKfDQ= github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203 h1:XBBHcIb256gUJtLmY22n99HaZTz+r2Z51xUPi01m3wg= github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203/go.mod h1:E1jcSv8FaEny+OP/5k9UxZVw9YFWGj7eI4KR/iOBqCg= github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o= github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE= -github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes= -github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= -github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= github.com/ethereum/go-ethereum v1.17.0 h1:2D+1Fe23CwZ5tQoAS5DfwKFNI1HGcTwi65/kRlAVxes= github.com/ethereum/go-ethereum v1.17.0/go.mod h1:2W3msvdosS/MCWytpqTcqgFiRYbTH59FxDJzqah120o= github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= @@ -341,8 +287,6 @@ github.com/fsnotify/fsnotify v1.10.1 h1:b0/UzAf9yR5rhf3RPm9gf3ehBPpf0oZKIjtpKrx5 github.com/fsnotify/fsnotify v1.10.1/go.mod h1:TLheqan6HD6GBK6PrDWyDPBaEV8LspOxvPSjC+bVfgo= github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= -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/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= github.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM= @@ -367,50 +311,57 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.19.1 h1:nX27AnaU43/K5bKktKwgBmR9lawoYVe1Ckg0rgzzN00= github.com/go-git/go-git/v5 v5.19.1/go.mod h1:Pb1v0c7/g8aGQJwx9Us09W85yGoyvSwuhEGMH7zjDKQ= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-openapi/jsonpointer v0.22.4 h1:dZtK82WlNpVLDW2jlA1YCiVJFVqkED1MegOUy9kR5T4= -github.com/go-openapi/jsonpointer v0.22.4/go.mod h1:elX9+UgznpFhgBuaMQ7iu4lvvX1nvNsesQ3oxmYTw80= -github.com/go-openapi/jsonreference v0.21.4 h1:24qaE2y9bx/q3uRK/qN+TDwbok1NhbSmGjjySRCHtC8= -github.com/go-openapi/jsonreference v0.21.4/go.mod h1:rIENPTjDbLpzQmQWCj5kKj3ZlmEh+EFVbz3RTUh30/4= +github.com/go-openapi/analysis v0.24.3 h1:a1hrvMr8X0Xt69KP5uVTu5jH62DscmDifrLzNglAayk= +github.com/go-openapi/analysis v0.24.3/go.mod h1:Nc+dWJ/FxZbhSow5Yh3ozg5CLJioB+XXT6MdLvJUsUw= +github.com/go-openapi/errors v0.22.7 h1:JLFBGC0Apwdzw3484MmBqspjPbwa2SHvpDm0u5aGhUA= +github.com/go-openapi/errors v0.22.7/go.mod h1://QW6SD9OsWtH6gHllUCddOXDL0tk0ZGNYHwsw4sW3w= +github.com/go-openapi/jsonpointer v0.22.5 h1:8on/0Yp4uTb9f4XvTrM2+1CPrV05QPZXu+rvu2o9jcA= +github.com/go-openapi/jsonpointer v0.22.5/go.mod h1:gyUR3sCvGSWchA2sUBJGluYMbe1zazrYWIkWPjjMUY0= +github.com/go-openapi/jsonreference v0.21.5 h1:6uCGVXU/aNF13AQNggxfysJ+5ZcU4nEAe+pJyVWRdiE= +github.com/go-openapi/jsonreference v0.21.5/go.mod h1:u25Bw85sX4E2jzFodh1FOKMTZLcfifd1Q+iKKOUxExw= +github.com/go-openapi/loads v0.23.3 h1:g5Xap1JfwKkUnZdn+S0L3SzBDpcTIYzZ5Qaag0YDkKQ= +github.com/go-openapi/loads v0.23.3/go.mod h1:NOH07zLajXo8y55hom0omlHWDVVvCwBM/S+csCK8LqA= +github.com/go-openapi/runtime v0.29.2 h1:UmwSGWNmWQqKm1c2MGgXVpC2FTGwPDQeUsBMufc5Yj0= +github.com/go-openapi/runtime v0.29.2/go.mod h1:biq5kJXRJKBJxTDJXAa00DOTa/anflQPhT0/wmjuy+0= +github.com/go-openapi/spec v0.22.4 h1:4pxGjipMKu0FzFiu/DPwN3CTBRlVM2yLf/YTWorYfDQ= +github.com/go-openapi/spec v0.22.4/go.mod h1:WQ6Ai0VPWMZgMT4XySjlRIE6GP1bGQOtEThn3gcWLtQ= +github.com/go-openapi/strfmt v0.26.1 h1:7zGCHji7zSYDC2tCXIusoxYQz/48jAf2q+sF6wXTG+c= +github.com/go-openapi/strfmt v0.26.1/go.mod h1:Zslk5VZPOISLwmWTMBIS7oiVFem1o1EI6zULY8Uer7Y= github.com/go-openapi/swag v0.25.4 h1:OyUPUFYDPDBMkqyxOTkqDYFnrhuhi9NR6QVUvIochMU= github.com/go-openapi/swag v0.25.4/go.mod h1:zNfJ9WZABGHCFg2RnY0S4IOkAcVTzJ6z2Bi+Q4i6qFQ= github.com/go-openapi/swag/cmdutils v0.25.4 h1:8rYhB5n6WawR192/BfUu2iVlxqVR9aRgGJP6WaBoW+4= github.com/go-openapi/swag/cmdutils v0.25.4/go.mod h1:pdae/AFo6WxLl5L0rq87eRzVPm/XRHM3MoYgRMvG4A0= -github.com/go-openapi/swag/conv v0.25.4 h1:/Dd7p0LZXczgUcC/Ikm1+YqVzkEeCc9LnOWjfkpkfe4= -github.com/go-openapi/swag/conv v0.25.4/go.mod h1:3LXfie/lwoAv0NHoEuY1hjoFAYkvlqI/Bn5EQDD3PPU= -github.com/go-openapi/swag/fileutils v0.25.4 h1:2oI0XNW5y6UWZTC7vAxC8hmsK/tOkWXHJQH4lKjqw+Y= -github.com/go-openapi/swag/fileutils v0.25.4/go.mod h1:cdOT/PKbwcysVQ9Tpr0q20lQKH7MGhOEb6EwmHOirUk= -github.com/go-openapi/swag/jsonname v0.25.4 h1:bZH0+MsS03MbnwBXYhuTttMOqk+5KcQ9869Vye1bNHI= -github.com/go-openapi/swag/jsonname v0.25.4/go.mod h1:GPVEk9CWVhNvWhZgrnvRA6utbAltopbKwDu8mXNUMag= -github.com/go-openapi/swag/jsonutils v0.25.4 h1:VSchfbGhD4UTf4vCdR2F4TLBdLwHyUDTd1/q4i+jGZA= -github.com/go-openapi/swag/jsonutils v0.25.4/go.mod h1:7OYGXpvVFPn4PpaSdPHJBtF0iGnbEaTk8AvBkoWnaAY= -github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4 h1:IACsSvBhiNJwlDix7wq39SS2Fh7lUOCJRmx/4SN4sVo= -github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4/go.mod h1:Mt0Ost9l3cUzVv4OEZG+WSeoHwjWLnarzMePNDAOBiM= -github.com/go-openapi/swag/loading v0.25.4 h1:jN4MvLj0X6yhCDduRsxDDw1aHe+ZWoLjW+9ZQWIKn2s= -github.com/go-openapi/swag/loading v0.25.4/go.mod h1:rpUM1ZiyEP9+mNLIQUdMiD7dCETXvkkC30z53i+ftTE= -github.com/go-openapi/swag/mangling v0.25.4 h1:2b9kBJk9JvPgxr36V23FxJLdwBrpijI26Bx5JH4Hp48= -github.com/go-openapi/swag/mangling v0.25.4/go.mod h1:6dxwu6QyORHpIIApsdZgb6wBk/DPU15MdyYj/ikn0Hg= +github.com/go-openapi/swag/conv v0.25.5 h1:wAXBYEXJjoKwE5+vc9YHhpQOFj2JYBMF2DUi+tGu97g= +github.com/go-openapi/swag/conv v0.25.5/go.mod h1:CuJ1eWvh1c4ORKx7unQnFGyvBbNlRKbnRyAvDvzWA4k= +github.com/go-openapi/swag/fileutils v0.25.5 h1:B6JTdOcs2c0dBIs9HnkyTW+5gC+8NIhVBUwERkFhMWk= +github.com/go-openapi/swag/fileutils v0.25.5/go.mod h1:V3cT9UdMQIaH4WiTrUc9EPtVA4txS0TOmRURmhGF4kc= +github.com/go-openapi/swag/jsonname v0.25.5 h1:8p150i44rv/Drip4vWI3kGi9+4W9TdI3US3uUYSFhSo= +github.com/go-openapi/swag/jsonname v0.25.5/go.mod h1:jNqqikyiAK56uS7n8sLkdaNY/uq6+D2m2LANat09pKU= +github.com/go-openapi/swag/jsonutils v0.25.5 h1:XUZF8awQr75MXeC+/iaw5usY/iM7nXPDwdG3Jbl9vYo= +github.com/go-openapi/swag/jsonutils v0.25.5/go.mod h1:48FXUaz8YsDAA9s5AnaUvAmry1UcLcNVWUjY42XkrN4= +github.com/go-openapi/swag/loading v0.25.5 h1:odQ/umlIZ1ZVRteI6ckSrvP6e2w9UTF5qgNdemJHjuU= +github.com/go-openapi/swag/loading v0.25.5/go.mod h1:I8A8RaaQ4DApxhPSWLNYWh9NvmX2YKMoB9nwvv6oW6g= +github.com/go-openapi/swag/mangling v0.25.5 h1:hyrnvbQRS7vKePQPHHDso+k6CGn5ZBs5232UqWZmJZw= +github.com/go-openapi/swag/mangling v0.25.5/go.mod h1:6hadXM/o312N/h98RwByLg088U61TPGiltQn71Iw0NY= github.com/go-openapi/swag/netutils v0.25.4 h1:Gqe6K71bGRb3ZQLusdI8p/y1KLgV4M/k+/HzVSqT8H0= github.com/go-openapi/swag/netutils v0.25.4/go.mod h1:m2W8dtdaoX7oj9rEttLyTeEFFEBvnAx9qHd5nJEBzYg= -github.com/go-openapi/swag/stringutils v0.25.4 h1:O6dU1Rd8bej4HPA3/CLPciNBBDwZj9HiEpdVsb8B5A8= -github.com/go-openapi/swag/stringutils v0.25.4/go.mod h1:GTsRvhJW5xM5gkgiFe0fV3PUlFm0dr8vki6/VSRaZK0= -github.com/go-openapi/swag/typeutils v0.25.4 h1:1/fbZOUN472NTc39zpa+YGHn3jzHWhv42wAJSN91wRw= -github.com/go-openapi/swag/typeutils v0.25.4/go.mod h1:Ou7g//Wx8tTLS9vG0UmzfCsjZjKhpjxayRKTHXf2pTE= -github.com/go-openapi/swag/yamlutils v0.25.4 h1:6jdaeSItEUb7ioS9lFoCZ65Cne1/RZtPBZ9A56h92Sw= -github.com/go-openapi/swag/yamlutils v0.25.4/go.mod h1:MNzq1ulQu+yd8Kl7wPOut/YHAAU/H6hL91fF+E2RFwc= -github.com/go-openapi/testify/enable/yaml/v2 v2.0.2 h1:0+Y41Pz1NkbTHz8NngxTuAXxEodtNSI1WG1c/m5Akw4= -github.com/go-openapi/testify/enable/yaml/v2 v2.0.2/go.mod h1:kme83333GCtJQHXQ8UKX3IBZu6z8T5Dvy5+CW3NLUUg= -github.com/go-openapi/testify/v2 v2.0.2 h1:X999g3jeLcoY8qctY/c/Z8iBHTbwLz7R2WXd6Ub6wls= -github.com/go-openapi/testify/v2 v2.0.2/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54= +github.com/go-openapi/swag/stringutils v0.25.5 h1:NVkoDOA8YBgtAR/zvCx5rhJKtZF3IzXcDdwOsYzrB6M= +github.com/go-openapi/swag/stringutils v0.25.5/go.mod h1:PKK8EZdu4QJq8iezt17HM8RXnLAzY7gW0O1KKarrZII= +github.com/go-openapi/swag/typeutils v0.25.5 h1:EFJ+PCga2HfHGdo8s8VJXEVbeXRCYwzzr9u4rJk7L7E= +github.com/go-openapi/swag/typeutils v0.25.5/go.mod h1:itmFmScAYE1bSD8C4rS0W+0InZUBrB2xSPbWt6DLGuc= +github.com/go-openapi/swag/yamlutils v0.25.5 h1:kASCIS+oIeoc55j28T4o8KwlV2S4ZLPT6G0iq2SSbVQ= +github.com/go-openapi/swag/yamlutils v0.25.5/go.mod h1:Gek1/SjjfbYvM+Iq4QGwa/2lEXde9n2j4a3wI3pNuOQ= +github.com/go-openapi/testify/v2 v2.4.0 h1:8nsPrHVCWkQ4p8h1EsRVymA2XABB4OT40gcvAu+voFM= +github.com/go-openapi/testify/v2 v2.4.0/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54= +github.com/go-openapi/validate v0.25.2 h1:12NsfLAwGegqbGWr2CnvT65X/Q2USJipmJ9b7xDJZz0= +github.com/go-openapi/validate v0.25.2/go.mod h1:Pgl1LpPPGFnZ+ys4/hTlDiRYQdI1ocKypgE+8Q8BLfY= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= @@ -421,9 +372,6 @@ github.com/go-playground/validator/v10 v10.30.2 h1:JiFIMtSSHb2/XBUbWM4i/MpeQm9ZK github.com/go-playground/validator/v10 v10.30.2/go.mod h1:mAf2pIOVXjTEBrwUMGKkCWKKPs9NheYGabeB04txQSc= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= -github.com/go-sql-driver/mysql v1.3.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo= -github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= @@ -464,19 +412,13 @@ github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= 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.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= 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= @@ -505,11 +447,8 @@ github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2 github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e h1:gD6P7NEo7Eqtt0ssnqSJNNndxe69DOQ24A5h7+i3KpM= github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e/go.mod h1:h+wZwLjUTJnm/P2rwlbJdRPZXOzaT36/FwnPnY2inzc= -github.com/google/certificate-transparency-go v1.0.10-0.20180222191210-5ab67e519c93/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= github.com/google/certificate-transparency-go v1.3.2 h1:9ahSNZF2o7SYMaKaXhAumVEzXB2QaayzII9C8rv7v+A= github.com/google/certificate-transparency-go v1.3.2/go.mod h1:H5FpMUaGa5Ab2+KCYsxg6sELw3Flkl7pGZzWdBoYLXs= -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.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= @@ -522,11 +461,12 @@ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 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/go-containerregistry v0.20.7 h1:24VGNpS0IwrOZ2ms2P1QE3Xa5X9p4phx0aUgzYzHW6I= +github.com/google/go-containerregistry v0.20.7/go.mod h1:Lx5LCZQjLH1QBaMPeGwsME9biPeo1lPx6lbGj/UmzgM= github.com/google/go-github/v62 v62.0.0 h1:/6mGCaRywZz9MuHyw9gD1CwsbmBX8GWsbFkwMmHdhl4= github.com/google/go-github/v62 v62.0.0/go.mod h1:EMxeUqGJq2xRu9DYBMwel/mr7kZrzUOfQmmpYrZn2a4= github.com/google/go-querystring v1.2.0 h1:yhqkPbu2/OH+V9BfpCVPZkNmUXhb2gBxJArfhIxNtP0= github.com/google/go-querystring v1.2.0/go.mod h1:8IFJqpSRITyJ8QhQ13bmbeMBDfmeEJZD5A0egEOmkqU= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/jsonschema-go v0.4.3 h1:/DBOLZTfDow7pe2GmaJNhltueGTtDKICi8V8p+DQPd0= github.com/google/jsonschema-go v0.4.3/go.mod h1:r5quNTdLOYEz95Ru18zA0ydNbBuYoo9tgaYcxEYhJVE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= @@ -541,11 +481,8 @@ github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5 github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= github.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0= -github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo= -github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= @@ -565,8 +502,6 @@ github.com/h2non/gock v1.2.0 h1:K6ol8rfrRkUOefooBC8elXoaNGYkpp7y2qcxGG6BzUE= github.com/h2non/gock v1.2.0/go.mod h1:tNhoxHYW2W42cYkYb1WqzdbYIieALC99kpYr7rH/BQk= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= -github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= -github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -579,8 +514,8 @@ github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9 github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= -github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= @@ -589,9 +524,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/in-toto/attestation v1.1.2 h1:MBFn6lsMq6dptQZJBhalXTcWMb/aJy3V+GX3VYj/V1E= github.com/in-toto/attestation v1.1.2/go.mod h1:gYFddHMZj3DiQ0b62ltNi1Vj5rC879bTmBbrv9CRHpM= -github.com/in-toto/in-toto-golang v0.11.0 h1:nfidMYBFx+E0lnmX5KUnN2Pdm8zdNKal1ayjJuzzRoA= -github.com/in-toto/in-toto-golang v0.11.0/go.mod h1:u3PjTnwFKjp5a1YCcw8SJg0G+tMeKfVoWsWeFMDCMtw= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/in-toto/in-toto-golang v0.10.0 h1:+s2eZQSK3WmWfYV85qXVSBfqgawi/5L02MaqA4o/tpM= +github.com/in-toto/in-toto-golang v0.10.0/go.mod h1:wjT4RiyFlLWCmLUJjwB8oZcjaq7HA390aMJcD3xXgmg= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/inhies/go-bytesize v0.0.0-20220417184213-4913239db9cf h1:FtEj8sfIcaaBfAKrE1Cwb61YDtYq9JxChK1c7AKce7s= @@ -655,11 +589,6 @@ github.com/jgautheron/goconst v1.8.1 h1:PPqCYp3K/xlOj5JmIe6O1Mj6r1DbkdbLtR3AJuZo github.com/jgautheron/goconst v1.8.1/go.mod h1:A0oxgBCHy55NQn6sYpO7UdnA9p+h7cPtoOZUmvNIako= github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= -github.com/jinzhu/gorm v0.0.0-20170222002820-5409931a1bb8 h1:CZkYfurY6KGhVtlalI4QwQ6T0Cu6iuY3e0x5RLu96WE= -github.com/jinzhu/gorm v0.0.0-20170222002820-5409931a1bb8/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= -github.com/jinzhu/inflection v0.0.0-20170102125226-1c35d901db3d h1:jRQLvyVGL+iVtDElaEIDdKwpPqUIZJfzkNLV34htpEc= -github.com/jinzhu/inflection v0.0.0-20170102125226-1c35d901db3d/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jjti/go-spancheck v0.6.4 h1:Tl7gQpYf4/TMU7AT84MN83/6PutY21Nb9fuQjFTpRRc= github.com/jjti/go-spancheck v0.6.4/go.mod h1:yAEYdKJ2lRkDA8g7X+oKUHXOWVAXSBJRv04OhF+QUjk= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= @@ -668,13 +597,7 @@ github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbd github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= 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/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -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/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE= -github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ= github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY= github.com/karamaru-alpha/copyloopvar v1.2.1 h1:wmZaZYIjnJ0b5UoKDjUHrikcV0zuPyyxI4SVplLd2CI= @@ -693,7 +616,6 @@ github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzh github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -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.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -724,7 +646,6 @@ github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= -github.com/lib/pq v0.0.0-20150723085316-0dad96c0b94f/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -735,7 +656,6 @@ github.com/lucasb-eyer/go-colorful v1.3.0 h1:2/yBRLdWBZKrf7gB40FoiKfAWYQ0lqNcbuQ github.com/lucasb-eyer/go-colorful v1.3.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddBCpE= github.com/macabu/inamedparam v0.2.0/go.mod h1:+Pee9/YfGe5LJ62pYXqB89lJ+0k5bsR8Wgz/C0Zlq3U= -github.com/magiconair/properties v1.5.3/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/manuelarte/funcorder v0.2.1 h1:7QJsw3qhljoZ5rH0xapIvjw31EcQeFbF31/7kQ/xS34= @@ -762,22 +682,16 @@ github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+Ei github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= -github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk= -github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= -github.com/mattn/go-sqlite3 v1.6.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mattn/go-shellwords v1.0.13 h1:DC0OMEpGjm6LfNFU4ckYcvbQKyp2vE8atyFGXNtDcf4= +github.com/mattn/go-shellwords v1.0.13/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mgechev/revive v1.9.0 h1:8LaA62XIKrb8lM6VsBSQ92slt/o92z5+hTw3CmrvSrM= github.com/mgechev/revive v1.9.0/go.mod h1:LAPq3+MgOf7GcL5PlWIkHb0PT7XH4NuC2LdWymhb9Mo= github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk= github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA= -github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU= -github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= -github.com/mitchellh/mapstructure v0.0.0-20150613213606-2caf8efc9366/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mithrandie/csvq v1.18.1 h1:f7NB2scbb7xx2ffPduJ2VtZ85RpWXfvanYskAkGlCBU= github.com/mithrandie/csvq v1.18.1/go.mod h1:MRJj7AtcXfk7jhNGxLuJGP3LORmh4lpiPWxQ7VyCRn8= github.com/mithrandie/csvq-driver v1.7.0 h1:ejiavXNWwTPMyr3fJFnhcqd1L1cYudA0foQy9cZrqhw= @@ -788,18 +702,22 @@ github.com/mithrandie/go-text v1.6.0 h1:8gOXTMPbMY8DJbKMTv8kHhADcJlDWXqS/YQH4SyW github.com/mithrandie/go-text v1.6.0/go.mod h1:xCgj1xiNbI/d4xA9sLVvXkjh5B2tNx2ZT2/3rpmh8to= github.com/mithrandie/ternary v1.1.1 h1:k/joD6UGVYxHixYmSR8EGgDFNONBMqyD373xT4QRdC4= github.com/mithrandie/ternary v1.1.1/go.mod h1:0D9Ba3+09K2TdSZO7/bFCC0GjSXetCvYuYq0u8FY/1g= -github.com/moby/buildkit v0.26.3 h1:D+ruZVAk/3ipRq5XRxBH9/DIFpRjSlTtMbghT5gQP9g= -github.com/moby/buildkit v0.26.3/go.mod h1:4T4wJzQS4kYWIfFRjsbJry4QoxDBjK+UGOEOs1izL7w= +github.com/moby/buildkit v0.29.0 h1:wxLEFbCOJntEDjSNNN2YWd8zxltZxT5muDQ0LzpbtpU= +github.com/moby/buildkit v0.29.0/go.mod h1:Dmv2FeDe34t75QuzeU87rBoZpAAkcpT5zeu4hXzmASc= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= -github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ= -github.com/moby/go-archive v0.1.0/go.mod h1:G9B+YoujNohJmrIYFBpSd54GTUB4lt9S+xVQvsJyFuo= +github.com/moby/go-archive v0.2.0 h1:zg5QDUM2mi0JIM9fdQZWC7U8+2ZfixfTYoHL7rWUcP8= +github.com/moby/go-archive v0.2.0/go.mod h1:mNeivT14o8xU+5q1YnNrkQVpK+dnNe/K6fHqnTg4qPU= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= +github.com/moby/moby/api v1.54.2 h1:wiat9QAhnDQjA7wk1kh/TqHz2I1uUA7M7t9SAl/JNXg= +github.com/moby/moby/api v1.54.2/go.mod h1:+RQ6wluLwtYaTd1WnPLykIDPekkuyD/ROWQClE83pzs= +github.com/moby/moby/client v0.4.1 h1:DMQgisVoMkmMs7fp3ROSdiBnoAu8+vo3GggFl06M/wY= +github.com/moby/moby/client v0.4.1/go.mod h1:z52C9O2POPOsnxZAy//WtKcQ32P+jT/NGeXu/7nfjGQ= github.com/moby/patternmatcher v0.6.1 h1:qlhtafmr6kgMIJjKJMDmMWq7WLkKIo23hsrpR3x084U= github.com/moby/patternmatcher v0.6.1/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= -github.com/moby/spdystream v0.5.1 h1:9sNYeYZUcci9R6/w7KDaFWEWeV4LStVG78Mpyq/Zm/Y= -github.com/moby/spdystream v0.5.1/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= +github.com/moby/policy-helpers v0.0.0-20260324161837-b7c0b994300b h1:lvBBM2ACrsG5/O1G1caEwlh0XeqA89IQK3xq0Sh/5NI= +github.com/moby/policy-helpers v0.0.0-20260324161837-b7c0b994300b/go.mod h1:Cbc1brDwYl1K294MmZB+6WhQR9Tr24hfhgSGND4UlL0= github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= github.com/moby/sys/capability v0.4.0 h1:4D4mI6KlNtWMCM1Z/K0i7RV1FkX+DBDHKVJpCndZoHk= @@ -818,14 +736,6 @@ github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= -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 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -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/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI= @@ -844,14 +754,10 @@ github.com/multigres/multigres v0.0.0-20260126223308-f5a52171bbc4 h1:/yOLCBuysLJ github.com/multigres/multigres v0.0.0-20260126223308-f5a52171bbc4/go.mod h1:UvLRTBJXqpyyXOtyEYH2NRPyklWWdzM7cNzcrEXiyRM= 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/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32 h1:W6apQkHrMkS0Muv8G/TipAy/FJl/rCYT0+EuS8+Z0z4= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhKRf3Swg= github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= @@ -871,6 +777,9 @@ github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 h1:G7ERwszslrBzRxj//J github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037/go.mod h1:2bpvgLBZEtENV5scfDFEtB/5+1M4hkQhDQrccEJ/qGw= github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 h1:bQx3WeLcUWy+RletIKwUIt4x3t8n2SxavmoclizMb8c= github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90/go.mod h1:y5+oSEHCPT/DGrS++Wc/479ERge0zTFxaF8PbGKcg2o= +github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= +github.com/oklog/ulid/v2 v2.1.1 h1:suPZ4ARWLOJLegGFiZZ1dFAkqzhMjL3J1TzI+5wHz8s= +github.com/oklog/ulid/v2 v2.1.1/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.2.0 h1:10Zcn4GeV59t/EGqJc8fUjtFT/FuUh5bTMzZ1XwmCRo= @@ -881,7 +790,6 @@ github.com/olekukonko/tablewriter v1.1.4 h1:ORUMI3dXbMnRlRggJX3+q7OzQFDdvgbN9nVW github.com/olekukonko/tablewriter v1.1.4/go.mod h1:+kedxuyTtgoZLwif3P1Em4hARJs+mVnzKxmsCL/C5RY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.2/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= @@ -890,24 +798,19 @@ github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y= github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0= -github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= github.com/opencontainers/runtime-spec v1.3.0 h1:YZupQUdctfhpZy3TM39nN9Ika5CBWT5diQ8ibYCRkxg= github.com/opencontainers/runtime-spec v1.3.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.13.1 h1:A8nNeceYngH9Ow++M+VVEwJVpdFmrlxsN22F+ISDCJE= github.com/opencontainers/selinux v1.13.1/go.mod h1:S10WXZ/osk2kWOYKy1x2f/eXF5ZHJoUs8UU/2caNRbg= -github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/copy v1.14.1 h1:5/7E6qsUMBaH5AnQ0sSLzzTg1oTECmcCmT6lvF45Na8= github.com/otiai10/copy v1.14.1/go.mod h1:oQwrEDDOci3IM8dJF0d8+jnbfPDllW6vUjNc3DoZm9I= @@ -917,8 +820,8 @@ github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT9 github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/otiai10/mint v1.6.3 h1:87qsV/aw1F5as1eH1zS/yqHY85ANKVMgkDrf9rcxbQs= github.com/otiai10/mint v1.6.3/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= -github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/package-url/packageurl-go v0.1.1 h1:KTRE0bK3sKbFKAk3yy63DpeskU7Cvs/x/Da5l+RtzyU= +github.com/package-url/packageurl-go v0.1.1/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= @@ -930,7 +833,6 @@ github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTw github.com/pjbgf/sha1cd v0.6.0 h1:3WJ8Wz8gvDz29quX1OcEmkAlUg9diU4GxJHqs0/XiwU= github.com/pjbgf/sha1cd v0.6.0/go.mod h1:lhpGlyHLpQZoxMv8HcgXvZEhcGs0PG/vsZnEJ7H0iCM= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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= @@ -945,26 +847,12 @@ github.com/posthog/posthog-go v1.13.0 h1:+i+t6txCczJcGZj7ME2ry4sLhPYvq3q7RYuUZ0z github.com/posthog/posthog-go v1.13.0/go.mod h1:xsVOW9YImilUcazwPNEq4PJDqEZf2KeCS758zXjwkPg= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/client_golang v0.9.0-pre1.0.20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= -github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= -github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws= github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= github.com/quasilyte/go-ruleguard v0.4.5 h1:AGY0tiOT5hJX9BTdx/xBdoCubQUAE2grkqY2lSwvZcA= @@ -1015,8 +903,6 @@ github.com/securego/gosec/v2 v2.22.3/go.mod h1:42M9Xs0v1WseinaB/BmNGO8AVqG8vRfhC github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= -github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b h1:h+3JX2VoWTFuyQEo87pStk/a99dzIO1mM9KxIyLPGTU= -github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b/go.mod h1:/yeG0My1xr/u+HZrFQ1tOQQQQrOawfyMUH13ai5brBc= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= github.com/shibumi/go-pathspec v1.3.0/go.mod h1:Xutfslp817l2I1cZvgcfeMQJG5QnU2lh5tVaaMCl3jE= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= @@ -1024,8 +910,18 @@ github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXY github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= -github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sigstore/protobuf-specs v0.5.0 h1:F8YTI65xOHw70NrvPwJ5PhAzsvTnuJMGLkA4FIkofAY= +github.com/sigstore/protobuf-specs v0.5.0/go.mod h1:+gXR+38nIa2oEupqDdzg4qSBT0Os+sP7oYv6alWewWc= +github.com/sigstore/rekor v1.5.0 h1:rL7SghHd5HLCtsCrxw0yQg+NczGvM75EjSPPWuGjaiQ= +github.com/sigstore/rekor v1.5.0/go.mod h1:D7JoVCUkxwQOpPDNYeu+CE8zeBC18Y5uDo6tF8s2rcQ= +github.com/sigstore/rekor-tiles/v2 v2.0.1 h1:1Wfz15oSRNGF5Dzb0lWn5W8+lfO50ork4PGIfEKjZeo= +github.com/sigstore/rekor-tiles/v2 v2.0.1/go.mod h1:Pjsbhzj5hc3MKY8FfVTYHBUHQEnP0ozC4huatu4x7OU= +github.com/sigstore/sigstore v1.10.4 h1:ytOmxMgLdcUed3w1SbbZOgcxqwMG61lh1TmZLN+WeZE= +github.com/sigstore/sigstore v1.10.4/go.mod h1:tDiyrdOref3q6qJxm2G+JHghqfmvifB7hw+EReAfnbI= +github.com/sigstore/sigstore-go v1.1.4 h1:wTTsgCHOfqiEzVyBYA6mDczGtBkN7cM8mPpjJj5QvMg= +github.com/sigstore/sigstore-go v1.1.4/go.mod h1:2U/mQOT9cjjxrtIUeKDVhL+sHBKsnWddn8URlswdBsg= +github.com/sigstore/timestamp-authority/v2 v2.0.3 h1:sRyYNtdED/ttLCMdaYnwpf0zre1A9chvjTnCmWWxN8Y= +github.com/sigstore/timestamp-authority/v2 v2.0.3/go.mod h1:mDaHxkt3HmZYoIlwYj4QWo0RUr7VjYU52aVO5f5Qb3I= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= @@ -1041,25 +937,20 @@ github.com/sonatard/noctx v0.1.0 h1:JjqOc2WN16ISWAjAk8M5ej0RfExEXtkEyExl2hLW+OM= github.com/sonatard/noctx v0.1.0/go.mod h1:0RvBxqY8D4j9cTTTWE8ylt2vqj2EPI8fHmrxHdsaZ2c= github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= -github.com/spdx/tools-golang v0.5.5 h1:61c0KLfAcNqAjlg6UNMdkwpMernhw3zVRwDZ2x9XOmk= -github.com/spdx/tools-golang v0.5.5/go.mod h1:MVIsXx8ZZzaRWNQpUDhC4Dud34edUYJYecciXgrw5vE= +github.com/spdx/tools-golang v0.5.7 h1:+sWcKGnhwp3vLdMqPcLdA6QK679vd86cK9hQWH3AwCg= +github.com/spdx/tools-golang v0.5.7/go.mod h1:jg7w0LOpoNAw6OxKEzCoqPC2GCTj45LyTlVmXubDsYw= github.com/speakeasy-api/openapi-overlay v0.9.0 h1:Wrz6NO02cNlLzx1fB093lBlYxSI54VRhy1aSutx0PQg= github.com/speakeasy-api/openapi-overlay v0.9.0/go.mod h1:f5FloQrHA7MsxYg9djzMD5h6dxrHjVVByWKh7an8TRc= github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= -github.com/spf13/cast v0.0.0-20150508191742-4d07383ffe94/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= -github.com/spf13/cobra v0.0.1/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= -github.com/spf13/jwalterweatherman v0.0.0-20141219030609-3d60171a6431/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.0/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v0.0.0-20150530192845-be5ff3e4840c/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0= @@ -1097,8 +988,9 @@ github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpR github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= github.com/tetafro/godot v1.5.1 h1:PZnjCol4+FqaEzvZg5+O8IY2P3hfY9JzRBNPv1pEDS4= github.com/tetafro/godot v1.5.1/go.mod h1:cCdPtEndkmqqrhiCfkmxDodMQJ/f3L1BCNskCUZdTwk= -github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c= -github.com/theupdateframework/notary v0.7.0/go.mod h1:c9DRxcmhHmVLDay4/2fUYdISnHqbFDGRSlXPO0AhYWw= +github.com/theupdateframework/go-tuf v0.7.0 h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI= +github.com/theupdateframework/go-tuf/v2 v2.4.1 h1:K6ewW064rKZCPkRo1W/CTbTtm/+IB4+coG1iNURAGCw= +github.com/theupdateframework/go-tuf/v2 v2.4.1/go.mod h1:Nex2enPVYDFCklrnbTzl3OVwD7fgIAj0J5++z/rvCj8= github.com/tidwall/jsonc v0.3.3 h1:RVQqL3xFfDkKKXIDsrBiVQiEpBtxoKbmMXONb2H/y2w= github.com/tidwall/jsonc v0.3.3/go.mod h1:dw+3CIxqHi+t8eFSpzzMlcVYxKp08UP5CD8/uSFCyJE= github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375 h1:QB54BJwA6x8QU9nHY3xJSZR2kX9bgpZekRKGkLTmEXA= @@ -1121,6 +1013,10 @@ github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/ github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk= github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab h1:H6aJ0yKQ0gF49Qb2z5hI1UHxSQt4JMyxebFR15KnApw= github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab/go.mod h1:ulncasL3N9uLrVann0m+CDlJKWsIAP34MPcOJF6VRvc= +github.com/transparency-dev/formats v0.0.0-20251017110053-404c0d5b696c h1:5a2XDQ2LiAUV+/RjckMyq9sXudfrPSuCY4FuPC1NyAw= +github.com/transparency-dev/formats v0.0.0-20251017110053-404c0d5b696c/go.mod h1:g85IafeFJZLxlzZCDRu4JLpfS7HKzR+Hw9qRh3bVzDI= +github.com/transparency-dev/merkle v0.0.2 h1:Q9nBoQcZcgPamMkGn7ghV8XiTZ/kRxn1yCG81+twTK4= +github.com/transparency-dev/merkle v0.0.2/go.mod h1:pqSy+OXefQ1EDUVmAJ8MUhHB9TXGuzVAT58PqBoHz1A= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI= @@ -1137,12 +1033,11 @@ github.com/vmware-labs/yaml-jsonpath v0.3.2 h1:/5QKeCBGdsInyDCyVNLbXyilb61MXGi9N github.com/vmware-labs/yaml-jsonpath v0.3.2/go.mod h1:U6whw1z03QyqgWdgXxvVnQ90zN1BWz5V+51Ewf8k+rQ= github.com/withfig/autocomplete-tools/packages/cobra v1.2.0 h1:MzD3XeOOSO3mAjOPpF07jFteSKZxsRHvlIcAR9RQzKM= github.com/withfig/autocomplete-tools/packages/cobra v1.2.0/go.mod h1:RoXh7+7qknOXL65uTzdzE1mPxqcPwS7FLCE9K5GfmKo= -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/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= @@ -1174,8 +1069,6 @@ github.com/yuin/goldmark-emoji v1.0.6 h1:QWfF2FYaXwL74tfGOW5izeiZepUDroDJfWubQI9 github.com/yuin/goldmark-emoji v1.0.6/go.mod h1:ukxJDKFpdFb5x0a5HqbdlcKtebh086iJpI31LTKmWuA= github.com/zalando/go-keyring v0.2.8 h1:6sD/Ucpl7jNq10rM2pgqTs0sZ9V3qMrqfIIy5YPccHs= github.com/zalando/go-keyring v0.2.8/go.mod h1:tsMo+VpRq5NGyKfxoBVjCuMrG47yj8cmakZDO5QGii0= -github.com/zclconf/go-cty v1.17.0 h1:seZvECve6XX4tmnvRzWtJNHdscMtYEx5R7bnnVyd/d0= -github.com/zclconf/go-cty v1.17.0/go.mod h1:wqFzcImaLTI6A5HfsRwB0nj5n0MRZFwmey8YoFPPs3U= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= @@ -1199,14 +1092,14 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 h1:ssfIgGN go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0/go.mod h1:GQ/474YrbE4Jx8gZ4q5I4hrhUzM6UPzyrqJYV2AqPoQ= go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU= go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.39.0 h1:cEf8jF6WbuGQWUVcqgyWtTR0kOOAWY1DYZ+UhvdmQPw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.39.0/go.mod h1:k1lzV5n5U3HkGvTCJHraTAGJ7MqsgL1wrGwTj1Isfiw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.44.0 h1:RuynHbfU8JUEw7DyONgkVYg2SVtsoF28y0LGIr69jgA= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.44.0/go.mod h1:qZF+/lBs71APw8mlnEZcqZHMzqrYrsFiJOv83lX1OGo= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0 h1:MdKucPl/HbzckWWEisiNqMPhRrAOQX8r4jTuGr636gk= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0/go.mod h1:RolT8tWtfHcjajEH5wFIZ4Dgh5jpPdFXYV9pTAk/qjc= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.42.0 h1:H7O6RlGOMTizyl3R08Kn5pdM06bnH8oscSj7o11tmLA= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.42.0/go.mod h1:mBFWu/WOVDkWWsR7Tx7h6EpQB8wsv7P0Yrh0Pb7othc= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak= go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc= @@ -1248,16 +1141,12 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= go.yaml.in/yaml/v4 v4.0.0-rc.4 h1:UP4+v6fFrBIb1l934bDl//mmnoIZEDK0idg1+AIvX5U= go.yaml.in/yaml/v4 v4.0.0-rc.4/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -1292,10 +1181,8 @@ golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/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-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1321,8 +1208,6 @@ golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= 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-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-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1336,13 +1221,11 @@ golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/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-20181116152217-5ac8a444bdc5/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-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1454,7 +1337,6 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1: google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.0.5/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.81.1 h1:VnnIIZ88UzOOKLukQi+ImGz8O1Wdp8nAGGnvOfEIWQQ= google.golang.org/grpc v1.81.1/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1467,28 +1349,16 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/cenkalti/backoff.v2 v2.2.1 h1:eJ9UAg01/HIHG987TwxvnzK2MgxXq97YY6rYDpY9aII= -gopkg.in/cenkalti/backoff.v2 v2.2.1/go.mod h1:S0QdOvT2AlerfSBkp0O+dk+bbIMaNbEmVk876gPCthU= 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/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 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/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -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/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/rethinkdb/rethinkdb-go.v6 v6.2.1 h1:d4KQkxAaAiRY2h5Zqis161Pv91A37uZyJOx73duwUwM= -gopkg.in/rethinkdb/rethinkdb-go.v6 v6.2.1/go.mod h1:WbjuEoo1oadwzQ4apSDU+JTvmllEHtsNHS6y7vFc7iw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= @@ -1496,7 +1366,6 @@ gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN 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.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/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= @@ -1511,29 +1380,11 @@ gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= -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= mvdan.cc/gofumpt v0.9.1 h1:p5YT2NfFWsYyTieYgwcQ8aKV3xRvFH4uuN/zB2gBbMQ= mvdan.cc/gofumpt v0.9.1/go.mod h1:3xYtNemnKiXaTh6R4VtlqDATFwBbdXI8lJvH/4qk7mw= mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 h1:WjUu4yQoT5BHT1w8Zu56SP8367OuBV5jvo+4Ulppyf8= mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4/go.mod h1:rthT7OuvRbaGcd5ginj6dA2oLE7YNlta9qhBNNdCaLE= -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= +pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= +pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= tags.cncf.io/container-device-interface v1.1.0 h1:RnxNhxF1JOu6CJUVpetTYvrXHdxw9j9jFYgZpI+anSY= tags.cncf.io/container-device-interface v1.1.0/go.mod h1:76Oj0Yqp9FwTx/pySDc8Bxjpg+VqXfDb50cKAXVJ34Q= diff --git a/apps/cli-go/internal/db/diff/diff.go b/apps/cli-go/internal/db/diff/diff.go index 46d465aff2..e07a8b499f 100644 --- a/apps/cli-go/internal/db/diff/diff.go +++ b/apps/cli-go/internal/db/diff/diff.go @@ -15,12 +15,11 @@ import ( "time" "github.com/cenkalti/backoff/v4" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" - "github.com/docker/go-connections/nat" "github.com/go-errors/errors" "github.com/jackc/pgconn" "github.com/jackc/pgx/v4" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/network" "github.com/spf13/afero" "github.com/spf13/viper" "github.com/supabase/cli/internal/db/start" @@ -119,7 +118,7 @@ func CreateShadowDatabase(ctx context.Context, port uint16) (string, error) { config := start.NewContainerConfig("-c", "max_worker_processes=0") hostPort := strconv.FormatUint(uint64(port), 10) hostConfig := container.HostConfig{ - PortBindings: nat.PortMap{"5432/tcp": []nat.PortBinding{{HostPort: hostPort}}}, + PortBindings: network.PortMap{network.MustParsePort("5432/tcp"): []network.PortBinding{{HostPort: hostPort}}}, AutoRemove: true, } networkingConfig := network.NetworkingConfig{} diff --git a/apps/cli-go/internal/db/diff/diff_test.go b/apps/cli-go/internal/db/diff/diff_test.go index 363d7b3f5b..b8efe6260e 100644 --- a/apps/cli-go/internal/db/diff/diff_test.go +++ b/apps/cli-go/internal/db/diff/diff_test.go @@ -10,12 +10,11 @@ import ( "testing" "time" - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/container" "github.com/h2non/gock" "github.com/jackc/pgconn" "github.com/jackc/pgerrcode" "github.com/jackc/pgx/v4" + "github.com/moby/moby/api/types/container" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -42,7 +41,7 @@ func TestRun(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, flags.LoadConfig(fsys)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Db.Image), "test-shadow-db") gock.New(utils.Docker.DaemonHost()). @@ -51,12 +50,12 @@ func TestRun(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Realtime.Image), "test-shadow-realtime") require.NoError(t, apitest.MockDockerLogs(utils.Docker, "test-shadow-realtime", "")) apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Storage.Image), "test-shadow-storage") @@ -100,7 +99,7 @@ func TestRun(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/images/" + utils.GetRegistryImageUrl(utils.Config.Db.Image) + "/json"). @@ -197,7 +196,7 @@ func TestDiffDatabase(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/images/" + utils.GetRegistryImageUrl(utils.Config.Db.Image) + "/json"). @@ -215,18 +214,18 @@ func TestDiffDatabase(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Db.Image), "test-shadow-db") gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: false, Status: "exited", }, - }}) + }) gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db/logs"). Reply(http.StatusServiceUnavailable) @@ -245,18 +244,18 @@ func TestDiffDatabase(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Db.Image), "test-shadow-db") gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) gock.New(utils.Docker.DaemonHost()). Delete("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db"). Reply(http.StatusOK) @@ -282,18 +281,18 @@ create schema public`) sql := "create schema test" require.NoError(t, afero.WriteFile(fsys, path, []byte(sql), 0644)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Db.Image), "test-shadow-db") gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) gock.New(utils.Docker.DaemonHost()). Delete("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db"). Reply(http.StatusOK) diff --git a/apps/cli-go/internal/db/diff/migra.go b/apps/cli-go/internal/db/diff/migra.go index b5c001825b..d7ce723dd2 100644 --- a/apps/cli-go/internal/db/diff/migra.go +++ b/apps/cli-go/internal/db/diff/migra.go @@ -6,11 +6,11 @@ import ( _ "embed" "strings" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" "github.com/go-errors/errors" "github.com/jackc/pgconn" "github.com/jackc/pgx/v4" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/network" "github.com/supabase/cli/internal/gen/types" "github.com/supabase/cli/internal/utils" "github.com/supabase/cli/pkg/config" diff --git a/apps/cli-go/internal/db/dump/dump.go b/apps/cli-go/internal/db/dump/dump.go index 7b40ddccce..286fbefb8e 100644 --- a/apps/cli-go/internal/db/dump/dump.go +++ b/apps/cli-go/internal/db/dump/dump.go @@ -8,10 +8,10 @@ import ( "os" "strings" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" "github.com/go-errors/errors" "github.com/jackc/pgconn" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/network" "github.com/spf13/afero" "github.com/supabase/cli/internal/utils" "github.com/supabase/cli/pkg/migration" diff --git a/apps/cli-go/internal/db/dump/dump_test.go b/apps/cli-go/internal/db/dump/dump_test.go index bfdccb1289..a7e621808f 100644 --- a/apps/cli-go/internal/db/dump/dump_test.go +++ b/apps/cli-go/internal/db/dump/dump_test.go @@ -31,7 +31,7 @@ func TestDumpCommand(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, imageUrl, containerId) require.NoError(t, apitest.MockDockerLogs(utils.Docker, containerId, "hello world")) @@ -50,7 +50,7 @@ func TestDumpCommand(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, imageUrl, containerId) require.NoError(t, apitest.MockDockerLogs(utils.Docker, containerId, "hello world\n")) @@ -65,7 +65,7 @@ func TestDumpCommand(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/images"). @@ -81,7 +81,7 @@ func TestDumpCommand(t *testing.T) { // Setup in-memory fs fsys := afero.NewReadOnlyFs(afero.NewMemMapFs()) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, imageUrl, containerId) require.NoError(t, apitest.MockDockerLogs(utils.Docker, containerId, "hello world\n")) diff --git a/apps/cli-go/internal/db/lint/lint_test.go b/apps/cli-go/internal/db/lint/lint_test.go index f43b2086d7..86cd5ede5f 100644 --- a/apps/cli-go/internal/db/lint/lint_test.go +++ b/apps/cli-go/internal/db/lint/lint_test.go @@ -7,10 +7,10 @@ import ( "net/http" "testing" - "github.com/docker/docker/api/types/container" "github.com/h2non/gock" "github.com/jackc/pgconn" "github.com/jackc/pgerrcode" + "github.com/moby/moby/api/types/container" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -33,7 +33,7 @@ func TestLintCommand(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). diff --git a/apps/cli-go/internal/db/pull/pull_test.go b/apps/cli-go/internal/db/pull/pull_test.go index 964a40dbe6..3acbc9eaff 100644 --- a/apps/cli-go/internal/db/pull/pull_test.go +++ b/apps/cli-go/internal/db/pull/pull_test.go @@ -62,7 +62,7 @@ func TestPullSchema(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Db.Image), "test-db") require.NoError(t, apitest.MockDockerLogs(utils.Docker, "test-db", "test")) @@ -90,7 +90,7 @@ func TestPullSchema(t *testing.T) { path := filepath.Join(utils.MigrationsDir, "0_test.sql") require.NoError(t, afero.WriteFile(fsys, path, []byte(""), 0644)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/images/" + utils.GetRegistryImageUrl(utils.Config.Db.Image) + "/json"). diff --git a/apps/cli-go/internal/db/reset/reset.go b/apps/cli-go/internal/db/reset/reset.go index 7d841f4ba3..c7ff573d71 100644 --- a/apps/cli-go/internal/db/reset/reset.go +++ b/apps/cli-go/internal/db/reset/reset.go @@ -12,13 +12,13 @@ import ( "github.com/cenkalti/backoff/v4" "github.com/containerd/errdefs" - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" "github.com/go-errors/errors" "github.com/jackc/pgconn" "github.com/jackc/pgerrcode" "github.com/jackc/pgx/v4" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/network" + "github.com/moby/moby/client" "github.com/spf13/afero" "github.com/supabase/cli/internal/db/start" "github.com/supabase/cli/internal/migration/apply" @@ -62,8 +62,8 @@ func Run(ctx context.Context, version string, last uint, config pgconn.Config, f return err } // Seed objects from supabase/buckets directory - if resp, err := utils.Docker.ContainerInspect(ctx, utils.StorageId); err == nil { - if resp.State.Health == nil || resp.State.Health.Status != types.Healthy { + if resp, err := utils.Docker.ContainerInspect(ctx, utils.StorageId, client.ContainerInspectOptions{}); err == nil { + if resp.Container.State.Health == nil || resp.Container.State.Health.Status != container.Healthy { if err := start.WaitForHealthyService(ctx, 30*time.Second, utils.StorageId); err != nil { return err } @@ -111,10 +111,10 @@ func resetDatabase14(ctx context.Context, version string, fsys afero.Fs, options } func resetDatabase15(ctx context.Context, version string, fsys afero.Fs, options ...func(*pgx.ConnConfig)) error { - if err := utils.Docker.ContainerRemove(ctx, utils.DbId, container.RemoveOptions{Force: true}); err != nil { + if _, err := utils.Docker.ContainerRemove(ctx, utils.DbId, client.ContainerRemoveOptions{Force: true}); err != nil { return errors.Errorf("failed to remove container: %w", err) } - if err := utils.Docker.VolumeRemove(ctx, utils.DbId, true); err != nil { + if _, err := utils.Docker.VolumeRemove(ctx, utils.DbId, client.VolumeRemoveOptions{Force: true}); err != nil { return errors.Errorf("failed to remove volume: %w", err) } config := start.NewContainerConfig() @@ -214,7 +214,7 @@ func RestartDatabase(ctx context.Context, w io.Writer) error { fmt.Fprintln(w, "Restarting containers...") // Some extensions must be manually restarted after pg_terminate_backend // Ref: https://github.com/citusdata/pg_cron/issues/99 - if err := utils.Docker.ContainerRestart(ctx, utils.DbId, container.StopOptions{}); err != nil { + if _, err := utils.Docker.ContainerRestart(ctx, utils.DbId, client.ContainerRestartOptions{}); err != nil { return errors.Errorf("failed to restart container: %w", err) } if err := start.WaitForHealthyService(ctx, utils.Config.Db.HealthTimeout, utils.DbId); err != nil { @@ -227,7 +227,7 @@ func restartServices(ctx context.Context) error { // No need to restart PostgREST because it automatically reconnects and listens for schema changes services := listServicesToRestart() result := utils.WaitAll(services, func(id string) error { - if err := utils.Docker.ContainerRestart(ctx, id, container.StopOptions{}); err != nil && !errdefs.IsNotFound(err) { + if _, err := utils.Docker.ContainerRestart(ctx, id, client.ContainerRestartOptions{}); err != nil && !errdefs.IsNotFound(err) { return errors.Errorf("failed to restart %s: %w", id, err) } return nil diff --git a/apps/cli-go/internal/db/reset/reset_test.go b/apps/cli-go/internal/db/reset/reset_test.go index 8bfad09b92..0eb88ec80a 100644 --- a/apps/cli-go/internal/db/reset/reset_test.go +++ b/apps/cli-go/internal/db/reset/reset_test.go @@ -7,11 +7,10 @@ import ( "net/http" "testing" - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/container" "github.com/h2non/gock" "github.com/jackc/pgconn" "github.com/jackc/pgerrcode" + "github.com/moby/moby/api/types/container" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -40,7 +39,7 @@ func TestResetCommand(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId). @@ -56,12 +55,12 @@ func TestResetCommand(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId + "/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) // Setup mock postgres conn := pgtest.NewConn() defer conn.Close(t) @@ -79,12 +78,12 @@ func TestResetCommand(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.StorageId + "/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) gock.New(utils.Config.Api.ExternalUrl). Get("/storage/v1/bucket"). Reply(http.StatusOK). @@ -119,7 +118,7 @@ func TestResetCommand(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). @@ -137,7 +136,7 @@ func TestResetCommand(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId). @@ -284,7 +283,7 @@ func TestRestartDatabase(t *testing.T) { t.Run("restarts affected services", func(t *testing.T) { utils.DbId = "test-reset" // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() // Restarts postgres gock.New(utils.Docker.DaemonHost()). @@ -293,12 +292,12 @@ func TestRestartDatabase(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId + "/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) // Restarts services utils.StorageId = "test-storage" utils.GotrueId = "test-auth" @@ -319,7 +318,7 @@ func TestRestartDatabase(t *testing.T) { t.Run("throws error on service restart failure", func(t *testing.T) { utils.DbId = "test-reset" // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() // Restarts postgres gock.New(utils.Docker.DaemonHost()). @@ -328,12 +327,12 @@ func TestRestartDatabase(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId + "/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) // Restarts services utils.StorageId = "test-storage" utils.GotrueId = "test-auth" @@ -359,7 +358,7 @@ func TestRestartDatabase(t *testing.T) { t.Run("throws error on db restart failure", func(t *testing.T) { utils.DbId = "test-reset" // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() // Restarts postgres gock.New(utils.Docker.DaemonHost()). @@ -375,7 +374,7 @@ func TestRestartDatabase(t *testing.T) { t.Run("throws error on health check timeout", func(t *testing.T) { utils.DbId = "test-reset" // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Post("/v" + utils.Docker.ClientVersion() + "/containers/test-reset/restart"). @@ -383,12 +382,12 @@ func TestRestartDatabase(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/test-reset/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: false, Status: "exited", }, - }}) + }) gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/test-reset/logs"). Reply(http.StatusServiceUnavailable) diff --git a/apps/cli-go/internal/db/start/start.go b/apps/cli-go/internal/db/start/start.go index 6f1eeacde3..1961c95a82 100644 --- a/apps/cli-go/internal/db/start/start.go +++ b/apps/cli-go/internal/db/start/start.go @@ -13,12 +13,12 @@ import ( "github.com/cenkalti/backoff/v4" "github.com/containerd/errdefs" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" - "github.com/docker/go-connections/nat" "github.com/go-errors/errors" "github.com/jackc/pgconn" "github.com/jackc/pgx/v4" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/network" + "github.com/moby/moby/client" "github.com/spf13/afero" "github.com/supabase/cli/internal/db/pgcache" "github.com/supabase/cli/internal/migration/apply" @@ -117,8 +117,9 @@ EOF`} func NewHostConfig() container.HostConfig { hostPort := strconv.FormatUint(uint64(utils.Config.Db.Port), 10) + dbPort := network.MustParsePort("5432/tcp") hostConfig := container.HostConfig{ - PortBindings: nat.PortMap{"5432/tcp": []nat.PortBinding{{HostPort: hostPort}}}, + PortBindings: network.PortMap{dbPort: []network.PortBinding{{HostPort: hostPort}}}, RestartPolicy: container.RestartPolicy{Name: container.RestartPolicyUnlessStopped}, Binds: []string{ utils.DbId + ":/var/lib/postgresql/data", @@ -163,7 +164,7 @@ EOF`} hostConfig.Binds = append(hostConfig.Binds, utils.ToDockerPath(fromBackup)+":/etc/backup.sql:ro") } // Creating volume will not override existing volume, so we must inspect explicitly - _, err := utils.Docker.VolumeInspect(ctx, utils.DbId) + _, err := utils.Docker.VolumeInspect(ctx, utils.DbId, client.VolumeInspectOptions{}) utils.NoBackupVolume = errdefs.IsNotFound(err) if utils.NoBackupVolume { fmt.Fprintln(w, "Starting database...") diff --git a/apps/cli-go/internal/db/start/start_test.go b/apps/cli-go/internal/db/start/start_test.go index b4d6411bcd..03ddf60d1e 100644 --- a/apps/cli-go/internal/db/start/start_test.go +++ b/apps/cli-go/internal/db/start/start_test.go @@ -8,10 +8,9 @@ import ( "os" "testing" - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/volume" "github.com/h2non/gock" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/volume" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -61,7 +60,7 @@ func TestStartDatabase(t *testing.T) { roles := "create role test" require.NoError(t, afero.WriteFile(fsys, utils.CustomRolesPath, []byte(roles), 0644)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/volumes/" + utils.DbId). @@ -71,12 +70,12 @@ func TestStartDatabase(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId + "/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Realtime.Image), "test-realtime") require.NoError(t, apitest.MockDockerLogs(utils.Docker, "test-realtime", "")) apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Storage.Image), "test-storage") @@ -106,7 +105,7 @@ func TestStartDatabase(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/volumes/" + utils.DbId). @@ -116,12 +115,12 @@ func TestStartDatabase(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId + "/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) // Run test err := StartDatabase(context.Background(), "", fsys, io.Discard) // Check error @@ -139,7 +138,7 @@ func TestStartDatabase(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/volumes/" + utils.DbId). @@ -171,7 +170,7 @@ func TestStartCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). @@ -188,7 +187,7 @@ func TestStartCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/"). @@ -206,7 +205,7 @@ func TestStartCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/"). @@ -308,7 +307,7 @@ func TestSetupDatabase(t *testing.T) { utils.Config.Realtime.Enabled = true utils.Config.Db.Port = 5432 // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/images/" + utils.GetRegistryImageUrl(utils.Config.Realtime.Image) + "/json"). @@ -328,7 +327,7 @@ func TestSetupDatabase(t *testing.T) { // Setup in-memory fs fsys := &fstest.OpenErrorFs{DenyPath: utils.CustomRolesPath} // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Realtime.Image), "test-realtime") require.NoError(t, apitest.MockDockerLogs(utils.Docker, "test-realtime", "")) @@ -358,7 +357,7 @@ func TestStartDatabaseWithCustomSettings(t *testing.T) { fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/volumes/" + utils.DbId). @@ -368,12 +367,12 @@ func TestStartDatabaseWithCustomSettings(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId + "/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Realtime.Image), "test-realtime") require.NoError(t, apitest.MockDockerLogs(utils.Docker, "test-realtime", "")) diff --git a/apps/cli-go/internal/db/test/test.go b/apps/cli-go/internal/db/test/test.go index 2852ee9432..c10d4fb076 100644 --- a/apps/cli-go/internal/db/test/test.go +++ b/apps/cli-go/internal/db/test/test.go @@ -8,12 +8,12 @@ import ( "path" "path/filepath" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" "github.com/go-errors/errors" "github.com/jackc/pgconn" "github.com/jackc/pgerrcode" "github.com/jackc/pgx/v4" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/network" "github.com/spf13/afero" "github.com/spf13/viper" "github.com/supabase/cli/internal/utils" diff --git a/apps/cli-go/internal/db/test/test_test.go b/apps/cli-go/internal/db/test/test_test.go index 063f9bcd11..02e525181e 100644 --- a/apps/cli-go/internal/db/test/test_test.go +++ b/apps/cli-go/internal/db/test/test_test.go @@ -38,7 +38,7 @@ func TestRunCommand(t *testing.T) { Query(DISABLE_PGTAP). Reply("DROP EXTENSION") // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() containerId := "test-pg-prove" apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(config.Images.PgProve), containerId) @@ -87,7 +87,7 @@ func TestRunCommand(t *testing.T) { Query(DISABLE_PGTAP). Reply("DROP EXTENSION") // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/images/" + utils.GetRegistryImageUrl(config.Images.PgProve) + "/json"). diff --git a/apps/cli-go/internal/functions/deploy/bundle.go b/apps/cli-go/internal/functions/deploy/bundle.go index ae807aa01f..24c18d25cd 100644 --- a/apps/cli-go/internal/functions/deploy/bundle.go +++ b/apps/cli-go/internal/functions/deploy/bundle.go @@ -8,9 +8,9 @@ import ( "path/filepath" "strings" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" "github.com/go-errors/errors" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/network" "github.com/spf13/afero" "github.com/spf13/viper" "github.com/supabase/cli/internal/utils" diff --git a/apps/cli-go/internal/functions/deploy/bundle_test.go b/apps/cli-go/internal/functions/deploy/bundle_test.go index 5933e77dc4..6f43e411b7 100644 --- a/apps/cli-go/internal/functions/deploy/bundle_test.go +++ b/apps/cli-go/internal/functions/deploy/bundle_test.go @@ -47,7 +47,7 @@ func TestDockerBundle(t *testing.T) { Reply(http.StatusOK). Body(&body) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) apitest.MockDockerStart(utils.Docker, imageUrl, containerId) require.NoError(t, apitest.MockDockerLogsExitCode(utils.Docker, containerId, 1)) // Setup mock bundler diff --git a/apps/cli-go/internal/functions/deploy/deploy_test.go b/apps/cli-go/internal/functions/deploy/deploy_test.go index e746da9279..7d898e4946 100644 --- a/apps/cli-go/internal/functions/deploy/deploy_test.go +++ b/apps/cli-go/internal/functions/deploy/deploy_test.go @@ -60,7 +60,7 @@ func TestDeployCommand(t *testing.T) { Reply(http.StatusCreated). JSON(api.FunctionResponse{Id: fmt.Sprintf("%d", i)}) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) apitest.MockDockerStart(utils.Docker, imageUrl, containerId) require.NoError(t, apitest.MockDockerLogs(utils.Docker, containerId, "bundled")) } @@ -123,7 +123,7 @@ import_map = "./import_map.json" Reply(http.StatusCreated). JSON(api.FunctionResponse{Id: "1"}) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) apitest.MockDockerStart(utils.Docker, imageUrl, containerId) require.NoError(t, apitest.MockDockerLogs(utils.Docker, containerId, "bundled")) // Setup output file @@ -176,7 +176,7 @@ import_map = "./import_map.json" MatchParam("slug", "enabled-func"). Reply(http.StatusCreated). JSON(api.FunctionResponse{Id: "1"}) - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) apitest.MockDockerStart(utils.Docker, imageUrl, containerId) require.NoError(t, apitest.MockDockerLogs(utils.Docker, containerId, "bundled")) // Setup output file @@ -243,7 +243,7 @@ verify_jwt = false Reply(http.StatusCreated). JSON(api.FunctionResponse{Id: "1"}) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) apitest.MockDockerStart(utils.Docker, imageUrl, containerId) require.NoError(t, apitest.MockDockerLogs(utils.Docker, containerId, "bundled")) // Setup output file @@ -289,7 +289,7 @@ verify_jwt = false Reply(http.StatusCreated). JSON(api.FunctionResponse{Id: "1"}) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) apitest.MockDockerStart(utils.Docker, imageUrl, containerId) require.NoError(t, apitest.MockDockerLogs(utils.Docker, containerId, "bundled")) // Setup output file diff --git a/apps/cli-go/internal/functions/download/download.go b/apps/cli-go/internal/functions/download/download.go index 74d0c13e4d..f05cf7c481 100644 --- a/apps/cli-go/internal/functions/download/download.go +++ b/apps/cli-go/internal/functions/download/download.go @@ -19,10 +19,10 @@ import ( "strings" "github.com/andybalholm/brotli" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" "github.com/docker/go-units" "github.com/go-errors/errors" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/network" "github.com/spf13/afero" "github.com/spf13/viper" "github.com/supabase/cli/internal/utils" diff --git a/apps/cli-go/internal/functions/download/download_test.go b/apps/cli-go/internal/functions/download/download_test.go index 6ec601d928..b007108fb6 100644 --- a/apps/cli-go/internal/functions/download/download_test.go +++ b/apps/cli-go/internal/functions/download/download_test.go @@ -17,11 +17,11 @@ import ( "strings" "testing" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/image" - "github.com/docker/docker/api/types/network" - "github.com/docker/docker/api/types/volume" "github.com/h2non/gock" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/image" + "github.com/moby/moby/api/types/network" + "github.com/moby/moby/api/types/volume" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -191,7 +191,7 @@ func TestRunDockerUnbundle(t *testing.T) { token := apitest.RandomAccessToken(t) t.Setenv("SUPABASE_ACCESS_TOKEN", string(token)) - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) dockerHost := utils.Docker.DaemonHost() // Setup mock api @@ -283,7 +283,7 @@ func TestRunDockerUnbundle(t *testing.T) { token := apitest.RandomAccessToken(t) t.Setenv("SUPABASE_ACCESS_TOKEN", string(token)) - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) dockerHost := utils.Docker.DaemonHost() // Setup mock api @@ -292,6 +292,9 @@ func TestRunDockerUnbundle(t *testing.T) { gock.New(dockerHost). Head("/_ping"). ReplyError(errors.New("docker unavailable")) + gock.New(dockerHost). + Get("/_ping"). + ReplyError(errors.New("docker unavailable")) mockMultipartBody(t, project, slugDocker, bundleMetadata{"/source/index.ts"}, []multipartPart{ {filename: "/source/index.ts", contents: "console.log('hello')"}, diff --git a/apps/cli-go/internal/functions/serve/serve.go b/apps/cli-go/internal/functions/serve/serve.go index 38ca9f7e2e..4dbc3462c1 100644 --- a/apps/cli-go/internal/functions/serve/serve.go +++ b/apps/cli-go/internal/functions/serve/serve.go @@ -11,11 +11,11 @@ import ( "strings" "github.com/docker/cli/cli/compose/loader" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/mount" - "github.com/docker/docker/api/types/network" - "github.com/docker/go-connections/nat" "github.com/go-errors/errors" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/mount" + "github.com/moby/moby/api/types/network" + "github.com/moby/moby/client" "github.com/spf13/afero" "github.com/spf13/viper" "github.com/supabase/cli/internal/functions/deploy" @@ -109,7 +109,7 @@ func restartEdgeRuntime(ctx context.Context, envFilePath string, noVerifyJWT *bo return err } // 2. Remove existing container. - _ = utils.Docker.ContainerRemove(ctx, utils.EdgeRuntimeId, container.RemoveOptions{ + _, _ = utils.Docker.ContainerRemove(ctx, utils.EdgeRuntimeId, client.ContainerRemoveOptions{ RemoveVolumes: true, Force: true, }) @@ -199,13 +199,13 @@ func ServeFunctions(ctx context.Context, envFilePath string, noVerifyJWT *bool, EOF `} // 4. Parse exposed ports - dockerRuntimePort := nat.Port(fmt.Sprintf("%d/tcp", dockerRuntimeServerPort)) - exposedPorts := nat.PortSet{dockerRuntimePort: struct{}{}} - portBindings := nat.PortMap{} + dockerRuntimePort := network.MustParsePort(fmt.Sprintf("%d/tcp", dockerRuntimeServerPort)) + exposedPorts := network.PortSet{dockerRuntimePort: struct{}{}} + portBindings := network.PortMap{} if runtimeOption.InspectMode != nil { - dockerInspectorPort := nat.Port(fmt.Sprintf("%d/tcp", dockerRuntimeInspectorPort)) + dockerInspectorPort := network.MustParsePort(fmt.Sprintf("%d/tcp", dockerRuntimeInspectorPort)) exposedPorts[dockerInspectorPort] = struct{}{} - portBindings[dockerInspectorPort] = []nat.PortBinding{{ + portBindings[dockerInspectorPort] = []network.PortBinding{{ HostPort: strconv.FormatUint(uint64(utils.Config.EdgeRuntime.InspectorPort), 10), }} } diff --git a/apps/cli-go/internal/functions/serve/serve_test.go b/apps/cli-go/internal/functions/serve/serve_test.go index 95b3a91fdb..785445ecd6 100644 --- a/apps/cli-go/internal/functions/serve/serve_test.go +++ b/apps/cli-go/internal/functions/serve/serve_test.go @@ -8,8 +8,8 @@ import ( "strings" "testing" - "github.com/docker/docker/api/types/container" "github.com/h2non/gock" + "github.com/moby/moby/api/types/container" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -33,7 +33,7 @@ func TestServeCommand(t *testing.T) { require.NoError(t, afero.WriteFile(fsys, utils.FallbackEnvFilePath, []byte{}, 0644)) require.NoError(t, afero.WriteFile(fsys, utils.FallbackImportMapPath, []byte("{}"), 0644)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/supabase_db_test/json"). @@ -56,7 +56,7 @@ func TestServeCommand(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/exec/kong-reload/json"). Reply(http.StatusOK). - JSON(container.ExecInspect{ExitCode: 0}) + JSON(map[string]int{"ExitCode": 0}) // Run test with timeout context err := Run(context.Background(), "", nil, "", RuntimeOption{}, fsys) // Check error @@ -79,7 +79,7 @@ func TestServeCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.InitConfig(utils.InitParams{ProjectId: "test"}, fsys)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/supabase_db_test/json"). @@ -95,7 +95,7 @@ func TestServeCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.InitConfig(utils.InitParams{ProjectId: "test"}, fsys)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/supabase_db_test/json"). @@ -115,7 +115,7 @@ func TestServeCommand(t *testing.T) { entrypoint := filepath.Join(utils.FunctionsDir, "hello", "index.ts") require.NoError(t, afero.WriteFile(fsys, entrypoint, []byte{}, 0644)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/supabase_db_test/json"). @@ -136,7 +136,7 @@ func TestServeFunctions(t *testing.T) { // Setup in-memory fs fsys := afero.FromIOFS{FS: testdata} // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.EdgeRuntime.Image), utils.EdgeRuntimeId) // Run test diff --git a/apps/cli-go/internal/functions/serve/streamer.go b/apps/cli-go/internal/functions/serve/streamer.go index 09d4171d5e..654e2f1696 100644 --- a/apps/cli-go/internal/functions/serve/streamer.go +++ b/apps/cli-go/internal/functions/serve/streamer.go @@ -7,8 +7,8 @@ import ( "github.com/cenkalti/backoff/v4" "github.com/containerd/errdefs" - "github.com/docker/docker/api/types/container" "github.com/go-errors/errors" + "github.com/moby/moby/client" "github.com/supabase/cli/internal/utils" ) @@ -34,7 +34,7 @@ func (s *logStreamer) Start(containerID string) { // Retry indefinitely until stream is closed policy := backoff.WithContext(backoff.NewConstantBackOff(retryInterval), s.ctx) fetch := func() error { - if err := utils.DockerStreamLogs(s.ctx, containerID, os.Stdout, os.Stderr, func(lo *container.LogsOptions) { + if err := utils.DockerStreamLogs(s.ctx, containerID, os.Stdout, os.Stderr, func(lo *client.ContainerLogsOptions) { lo.Timestamps = true }); errdefs.IsNotFound(err) || errdefs.IsConflict(err) || errors.Is(err, utils.ErrContainerKilled) { return err diff --git a/apps/cli-go/internal/functions/serve/streamer_test.go b/apps/cli-go/internal/functions/serve/streamer_test.go index 23116860e9..f408371c81 100644 --- a/apps/cli-go/internal/functions/serve/streamer_test.go +++ b/apps/cli-go/internal/functions/serve/streamer_test.go @@ -20,7 +20,7 @@ func TestLogStreamer(t *testing.T) { t.Run("streams logs from container", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() require.NoError(t, apitest.MockDockerLogsStream(utils.Docker, containerID, 1, strings.NewReader(""))) // Run test @@ -38,7 +38,7 @@ func TestLogStreamer(t *testing.T) { t.Run("retries on container exit", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() require.NoError(t, apitest.MockDockerLogsStream(utils.Docker, containerID, 0, strings.NewReader(""))) require.NoError(t, apitest.MockDockerLogsStream(utils.Docker, containerID, 137, strings.NewReader(""))) @@ -58,7 +58,7 @@ func TestLogStreamer(t *testing.T) { t.Run("retries on missing container", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + containerID + "/logs"). diff --git a/apps/cli-go/internal/gen/types/types.go b/apps/cli-go/internal/gen/types/types.go index c12a7b58eb..a63ddb4a8f 100644 --- a/apps/cli-go/internal/gen/types/types.go +++ b/apps/cli-go/internal/gen/types/types.go @@ -10,11 +10,11 @@ import ( "strings" "time" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" "github.com/go-errors/errors" "github.com/jackc/pgconn" "github.com/jackc/pgx/v4" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/network" "github.com/spf13/afero" "github.com/spf13/viper" "github.com/supabase/cli/internal/utils" diff --git a/apps/cli-go/internal/gen/types/types_test.go b/apps/cli-go/internal/gen/types/types_test.go index e7134b1820..6dceb7a6df 100644 --- a/apps/cli-go/internal/gen/types/types_test.go +++ b/apps/cli-go/internal/gen/types/types_test.go @@ -7,9 +7,9 @@ import ( "testing" "time" - "github.com/docker/docker/api/types/container" "github.com/h2non/gock" "github.com/jackc/pgconn" + "github.com/moby/moby/api/types/container" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -37,7 +37,7 @@ func TestGenLocalCommand(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId). @@ -58,7 +58,7 @@ func TestGenLocalCommand(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId). @@ -74,7 +74,7 @@ func TestGenLocalCommand(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId). @@ -95,7 +95,7 @@ func TestGenLocalCommand(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId). @@ -177,7 +177,7 @@ func TestGenRemoteCommand(t *testing.T) { const containerId = "test-pgmeta" imageUrl := utils.GetRegistryImageUrl(utils.Config.Studio.PgmetaImage) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, imageUrl, containerId) require.NoError(t, apitest.MockDockerLogs(utils.Docker, containerId, "hello world\n")) diff --git a/apps/cli-go/internal/migration/squash/squash_test.go b/apps/cli-go/internal/migration/squash/squash_test.go index 9bb51dab6c..eb20b0d260 100644 --- a/apps/cli-go/internal/migration/squash/squash_test.go +++ b/apps/cli-go/internal/migration/squash/squash_test.go @@ -13,12 +13,11 @@ import ( "testing" "time" - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/container" "github.com/h2non/gock" "github.com/jackc/pgconn" "github.com/jackc/pgerrcode" "github.com/jackc/pgx/v4" + "github.com/moby/moby/api/types/container" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -53,18 +52,18 @@ func TestSquashCommand(t *testing.T) { require.NoError(t, afero.WriteFile(fsys, paths[0], []byte(sql), 0644)) require.NoError(t, afero.WriteFile(fsys, paths[1], []byte{}, 0644)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Db.Image), "test-shadow-db") gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) gock.New(utils.Docker.DaemonHost()). Delete("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db"). Reply(http.StatusOK) @@ -179,7 +178,7 @@ func TestSquashVersion(t *testing.T) { path = filepath.Join(utils.MigrationsDir, "1_target.sql") require.NoError(t, afero.WriteFile(fsys, path, []byte{}, 0644)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/images/" + utils.GetRegistryImageUrl(utils.Config.Db.Image) + "/json"). @@ -200,7 +199,7 @@ func TestSquashMigrations(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/images/" + utils.GetRegistryImageUrl(utils.Config.Db.Image) + "/json"). @@ -217,18 +216,18 @@ func TestSquashMigrations(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Db.Image), "test-shadow-db") gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: false, Status: "exited", }, - }}) + }) gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db/logs"). Reply(http.StatusServiceUnavailable) @@ -247,18 +246,18 @@ func TestSquashMigrations(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, flags.LoadConfig(fsys)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Db.Image), "test-shadow-db") gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) gock.New(utils.Docker.DaemonHost()). Delete("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db"). Reply(http.StatusOK) @@ -282,18 +281,18 @@ func TestSquashMigrations(t *testing.T) { sql := "create schema test" require.NoError(t, afero.WriteFile(fsys, path, []byte(sql), 0644)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.Config.Db.Image), "test-shadow-db") gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) gock.New(utils.Docker.DaemonHost()). Delete("/v" + utils.Docker.ClientVersion() + "/containers/test-shadow-db"). Reply(http.StatusOK) diff --git a/apps/cli-go/internal/start/start.go b/apps/cli-go/internal/start/start.go index 6ce6a4434d..a0ddc0911e 100644 --- a/apps/cli-go/internal/start/start.go +++ b/apps/cli-go/internal/start/start.go @@ -6,7 +6,6 @@ import ( _ "embed" "encoding/json" "fmt" - "io" "net" "net/url" "os" @@ -22,16 +21,14 @@ import ( "github.com/compose-spec/compose-go/v2/types" "github.com/docker/cli/cli/command" dockerFlags "github.com/docker/cli/cli/flags" - "github.com/docker/compose/v2/pkg/api" - "github.com/docker/compose/v2/pkg/compose" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/image" - "github.com/docker/docker/api/types/network" - "github.com/docker/docker/client" - "github.com/docker/go-connections/nat" + "github.com/docker/compose/v5/pkg/api" + "github.com/docker/compose/v5/pkg/compose" "github.com/go-errors/errors" "github.com/jackc/pgconn" "github.com/jackc/pgx/v4" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/network" + "github.com/moby/moby/client" "github.com/spf13/afero" "github.com/supabase/cli/internal/db/start" @@ -169,12 +166,30 @@ func isPermanentError(err error) bool { return true } +func mustPort(port string) network.Port { + return network.MustParsePort(port) +} + +func portSet(ports ...string) network.PortSet { + result := make(network.PortSet, len(ports)) + for _, port := range ports { + result[mustPort(port)] = struct{}{} + } + return result +} + +func portMap(containerPort, hostPort string) network.PortMap { + return network.PortMap{ + mustPort(containerPort): []network.PortBinding{{HostPort: hostPort}}, + } +} + // ImagePull wraps the Docker client's ImagePull with retry logic and registry auth -func (cli *RetryClient) ImagePull(ctx context.Context, refStr string, options image.PullOptions) (io.ReadCloser, error) { +func (cli *RetryClient) ImagePull(ctx context.Context, refStr string, options client.ImagePullOptions) (client.ImagePullResponse, error) { if len(options.RegistryAuth) == 0 { options.RegistryAuth = utils.GetRegistryAuth() } - pull := func() (io.ReadCloser, error) { + pull := func() (client.ImagePullResponse, error) { resp, err := cli.Client.ImagePull(ctx, refStr, options) if isPermanentError(err) { return resp, &backoff.PermanentError{Err: err} @@ -185,9 +200,9 @@ func (cli *RetryClient) ImagePull(ctx context.Context, refStr string, options im return backoff.RetryWithData(pull, policy) } -// Also retry ImageInspect: https://github.com/docker/compose/blob/main/pkg/compose/pull.go#L174 -func (cli *RetryClient) ImageInspect(ctx context.Context, refStr string, options ...client.ImageInspectOption) (image.InspectResponse, error) { - pull := func() (image.InspectResponse, error) { +// Also retry ImageInspect when prefetching images before containers are created. +func (cli *RetryClient) ImageInspect(ctx context.Context, refStr string, options ...client.ImageInspectOption) (client.ImageInspectResult, error) { + pull := func() (client.ImageInspectResult, error) { resp, err := cli.Client.ImageInspect(ctx, refStr, options...) if isPermanentError(err) { return resp, &backoff.PermanentError{Err: err} @@ -198,21 +213,20 @@ func (cli *RetryClient) ImageInspect(ctx context.Context, refStr string, options return backoff.RetryWithData(pull, policy) } -// pullImagesUsingCompose pulls all required images using docker-compose service -func pullImagesUsingCompose(ctx context.Context, project types.Project) error { - // Create Docker CLI +func pullImages(ctx context.Context, project types.Project) { cli, err := command.NewDockerCli() if err != nil { - return errors.Errorf("failed to create Docker CLI: %w", err) + return } - // Initialize Docker CLI opt := command.WithAPIClient(&RetryClient{Client: utils.Docker}) if err := cli.Initialize(&dockerFlags.ClientOptions{}, opt); err != nil { - return errors.Errorf("failed to initialize Docker CLI: %w", err) + return } - service := compose.NewComposeService(cli) - // Fallback to regular image pull by ignoring failures - return service.Pull(ctx, &project, api.PullOptions{IgnoreFailures: true}) + service, err := compose.NewComposeService(cli) + if err != nil { + return + } + _ = service.Pull(ctx, &project, api.PullOptions{IgnoreFailures: true}) } func run(ctx context.Context, fsys afero.Fs, excludedContainers []string, dbConfig pgconn.Config, options ...func(*pgx.ConnConfig)) error { @@ -235,9 +249,7 @@ func run(ctx context.Context, fsys afero.Fs, excludedContainers []string, dbConf Name: "supabase-cli", Services: utils.GetServices().Filter(notExcluded), } - if err := pullImagesUsingCompose(ctx, project); err != nil { - return err - } + pullImages(ctx, project) // Start Postgres. if dbConfig.Host == utils.DbId { @@ -319,13 +331,11 @@ EOF Retries: 3, StartPeriod: 10 * time.Second, }, - ExposedPorts: nat.PortSet{"4000/tcp": {}}, + ExposedPorts: portSet("4000/tcp"), }, container.HostConfig{ - Binds: bind, - PortBindings: nat.PortMap{"4000/tcp": []nat.PortBinding{{ - HostPort: strconv.FormatUint(uint64(utils.Config.Analytics.Port), 10), - }}}, + Binds: bind, + PortBindings: portMap("4000/tcp", strconv.FormatUint(uint64(utils.Config.Analytics.Port), 10)), RestartPolicy: container.RestartPolicy{Name: container.RestartPolicyUnlessStopped}, }, network.NetworkingConfig{ @@ -545,17 +555,11 @@ EOF ` + string(utils.Config.Api.Tls.KeyContent) + ` EOF `}, - ExposedPorts: nat.PortSet{ - "8000/tcp": {}, - "8443/tcp": {}, - nat.Port(fmt.Sprintf("%d/tcp", nginxTemplateServerPort)): {}, - }, + ExposedPorts: portSet("8000/tcp", "8443/tcp", fmt.Sprintf("%d/tcp", nginxTemplateServerPort)), }, container.HostConfig{ - Binds: binds, - PortBindings: nat.PortMap{nat.Port(fmt.Sprintf("%d/tcp", dockerPort)): []nat.PortBinding{{ - HostPort: strconv.FormatUint(uint64(utils.Config.Api.Port), 10), - }}}, + Binds: binds, + PortBindings: portMap(fmt.Sprintf("%d/tcp", dockerPort), strconv.FormatUint(uint64(utils.Config.Api.Port), 10)), RestartPolicy: container.RestartPolicy{Name: container.RestartPolicyUnlessStopped}, }, network.NetworkingConfig{ @@ -768,7 +772,7 @@ EOF container.Config{ Image: utils.Config.Auth.Image, Env: env, - ExposedPorts: nat.PortSet{"9999/tcp": {}}, + ExposedPorts: portSet("9999/tcp"), Healthcheck: &container.HealthConfig{ Test: []string{ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", @@ -798,16 +802,16 @@ EOF // Start Mailpit if utils.Config.Inbucket.Enabled && !isContainerExcluded(utils.Config.Inbucket.Image, excluded) { - inbucketPortBindings := nat.PortMap{"8025/tcp": []nat.PortBinding{{ + inbucketPortBindings := network.PortMap{mustPort("8025/tcp"): []network.PortBinding{{ HostPort: strconv.FormatUint(uint64(utils.Config.Inbucket.Port), 10), }}} if utils.Config.Inbucket.SmtpPort != 0 { - inbucketPortBindings["1025/tcp"] = []nat.PortBinding{{ + inbucketPortBindings[mustPort("1025/tcp")] = []network.PortBinding{{ HostPort: strconv.FormatUint(uint64(utils.Config.Inbucket.SmtpPort), 10), }} } if utils.Config.Inbucket.Pop3Port != 0 { - inbucketPortBindings["1110/tcp"] = []nat.PortBinding{{ + inbucketPortBindings[mustPort("1110/tcp")] = []network.PortBinding{{ HostPort: strconv.FormatUint(uint64(utils.Config.Inbucket.Pop3Port), 10), }} } @@ -873,7 +877,7 @@ EOF "RUN_JANITOR=true", fmt.Sprintf("MAX_HEADER_LENGTH=%d", utils.Config.Realtime.MaxHeaderLength), }, - ExposedPorts: nat.PortSet{"4000/tcp": {}}, + ExposedPorts: portSet("4000/tcp"), Healthcheck: &container.HealthConfig{ // Podman splits command by spaces unless it's quoted, but curl header can't be quoted. Test: []string{ @@ -1116,10 +1120,8 @@ EOF }, }, container.HostConfig{ - Binds: binds, - PortBindings: nat.PortMap{"3000/tcp": []nat.PortBinding{{ - HostPort: strconv.FormatUint(uint64(utils.Config.Studio.Port), 10), - }}}, + Binds: binds, + PortBindings: portMap("3000/tcp", strconv.FormatUint(uint64(utils.Config.Studio.Port), 10)), RestartPolicy: container.RestartPolicy{Name: container.RestartPolicyUnlessStopped}, }, network.NetworkingConfig{ @@ -1181,11 +1183,7 @@ EOF "/bin/sh", "-c", fmt.Sprintf("/app/bin/migrate && /app/bin/supavisor eval '%s' && /app/bin/server", poolerTenantBuf.String()), }, - ExposedPorts: nat.PortSet{ - "4000/tcp": {}, - nat.Port(fmt.Sprintf("%d/tcp", portSession)): {}, - nat.Port(fmt.Sprintf("%d/tcp", portTransaction)): {}, - }, + ExposedPorts: portSet("4000/tcp", fmt.Sprintf("%d/tcp", portSession), fmt.Sprintf("%d/tcp", portTransaction)), Healthcheck: &container.HealthConfig{ Test: []string{"CMD", "curl", "-sSfL", "--head", "-o", "/dev/null", "http://127.0.0.1:4000/api/health"}, Interval: 10 * time.Second, @@ -1194,9 +1192,7 @@ EOF }, }, container.HostConfig{ - PortBindings: nat.PortMap{nat.Port(fmt.Sprintf("%d/tcp", dockerPort)): []nat.PortBinding{{ - HostPort: strconv.FormatUint(uint64(utils.Config.Db.Pooler.Port), 10), - }}}, + PortBindings: portMap(fmt.Sprintf("%d/tcp", dockerPort), strconv.FormatUint(uint64(utils.Config.Db.Pooler.Port), 10)), RestartPolicy: container.RestartPolicy{Name: container.RestartPolicyUnlessStopped}, }, network.NetworkingConfig{ diff --git a/apps/cli-go/internal/start/start_test.go b/apps/cli-go/internal/start/start_test.go index afafbd815e..7e49c007d1 100644 --- a/apps/cli-go/internal/start/start_test.go +++ b/apps/cli-go/internal/start/start_test.go @@ -10,13 +10,12 @@ import ( "testing" "time" - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/image" - "github.com/docker/docker/api/types/network" - "github.com/docker/docker/api/types/volume" "github.com/h2non/gock" "github.com/jackc/pgconn" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/image" + "github.com/moby/moby/api/types/network" + "github.com/moby/moby/api/types/volume" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -69,7 +68,7 @@ func TestStartCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). @@ -92,7 +91,7 @@ func TestStartCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). @@ -102,11 +101,11 @@ func TestStartCommand(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/supabase_db_start/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, }, - }}) + }) gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/json"). Reply(http.StatusOK). @@ -136,7 +135,7 @@ func TestDatabaseStart(t *testing.T) { }, fsys)) ctx := phtelemetry.WithService(context.Background(), service) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Head("/_ping"). @@ -214,12 +213,12 @@ func TestDatabaseStart(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + c + "/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) } gock.New(utils.Config.Api.ExternalUrl). Head("/rest-admin/v1/ready"). @@ -231,12 +230,12 @@ func TestDatabaseStart(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.StorageId + "/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) gock.New(utils.Config.Api.ExternalUrl). Get("/storage/v1/bucket"). Reply(http.StatusOK). @@ -262,7 +261,7 @@ func TestDatabaseStart(t *testing.T) { // Setup in-memory fs fsys := afero.NewMemMapFs() // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Head("/_ping"). @@ -289,12 +288,12 @@ func TestDatabaseStart(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId + "/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, - Health: &container.Health{Status: types.Healthy}, + Health: &container.Health{Status: container.Healthy}, }, - }}) + }) // Run test exclude := ExcludableContainers() exclude = append(exclude, "invalid", exclude[0]) diff --git a/apps/cli-go/internal/status/status.go b/apps/cli-go/internal/status/status.go index ae0639903f..b523bfb265 100644 --- a/apps/cli-go/internal/status/status.go +++ b/apps/cli-go/internal/status/status.go @@ -15,9 +15,9 @@ import ( "time" "github.com/Netflix/go-env" - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/container" "github.com/go-errors/errors" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/client" "github.com/olekukonko/tablewriter" "github.com/olekukonko/tablewriter/tw" "github.com/spf13/afero" @@ -120,14 +120,14 @@ func Run(ctx context.Context, names CustomName, format string, fsys afero.Fs) er } func checkServiceHealth(ctx context.Context) ([]string, error) { - resp, err := utils.Docker.ContainerList(ctx, container.ListOptions{ + resp, err := utils.Docker.ContainerList(ctx, client.ContainerListOptions{ Filters: utils.CliProjectFilter(utils.Config.ProjectId), }) if err != nil { return nil, errors.Errorf("failed to list running containers: %w", err) } - running := make(map[string]struct{}, len(resp)) - for _, c := range resp { + running := make(map[string]struct{}, len(resp.Items)) + for _, c := range resp.Items { for _, n := range c.Names { running[n] = struct{}{} } @@ -141,13 +141,13 @@ func checkServiceHealth(ctx context.Context) ([]string, error) { return stopped, nil } -func assertContainerHealthy(ctx context.Context, container string) error { - if resp, err := utils.Docker.ContainerInspect(ctx, container); err != nil { +func assertContainerHealthy(ctx context.Context, containerId string) error { + if resp, err := utils.Docker.ContainerInspect(ctx, containerId, client.ContainerInspectOptions{}); err != nil { return errors.Errorf("failed to inspect container health: %w", err) - } else if !resp.State.Running { - return errors.Errorf("%s container is not running: %s", container, resp.State.Status) - } else if resp.State.Health != nil && resp.State.Health.Status != types.Healthy { - return errors.Errorf("%s container is not ready: %s", container, resp.State.Health.Status) + } else if !resp.Container.State.Running { + return errors.Errorf("%s container is not running: %s", containerId, resp.Container.State.Status) + } else if resp.Container.State.Health != nil && resp.Container.State.Health.Status != container.Healthy { + return errors.Errorf("%s container is not ready: %s", containerId, resp.Container.State.Health.Status) } return nil } diff --git a/apps/cli-go/internal/status/status_test.go b/apps/cli-go/internal/status/status_test.go index c7bfc1bc4f..c6806a8e1a 100644 --- a/apps/cli-go/internal/status/status_test.go +++ b/apps/cli-go/internal/status/status_test.go @@ -7,8 +7,8 @@ import ( "net/http" "testing" - "github.com/docker/docker/api/types/container" "github.com/h2non/gock" + "github.com/moby/moby/api/types/container" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -28,16 +28,16 @@ func TestStatusCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.InitConfig(utils.InitParams{ProjectId: "test"}, fsys)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/supabase_db_test/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ Running: true, }, - }}) + }) gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/json"). Reply(http.StatusOK). @@ -63,7 +63,7 @@ func TestStatusCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/supabase_db_"). @@ -85,7 +85,7 @@ func TestServiceHealth(t *testing.T) { }) } // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/json"). @@ -101,7 +101,7 @@ func TestServiceHealth(t *testing.T) { t.Run("shows stopped container", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/json"). @@ -118,7 +118,7 @@ func TestServiceHealth(t *testing.T) { t.Run("throws error on network error", func(t *testing.T) { errNetwork := errors.New("network error") // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/json"). diff --git a/apps/cli-go/internal/stop/stop.go b/apps/cli-go/internal/stop/stop.go index da98f16002..8cc0926511 100644 --- a/apps/cli-go/internal/stop/stop.go +++ b/apps/cli-go/internal/stop/stop.go @@ -6,7 +6,7 @@ import ( "fmt" "io" - "github.com/docker/docker/api/types/volume" + "github.com/moby/moby/client" "github.com/spf13/afero" "github.com/supabase/cli/internal/utils" "github.com/supabase/cli/internal/utils/flags" @@ -33,9 +33,9 @@ func Run(ctx context.Context, backup bool, projectId string, all bool, fsys afer } fmt.Println("Stopped " + utils.Aqua("supabase") + " local development setup.") - if resp, err := utils.Docker.VolumeList(ctx, volume.ListOptions{ + if resp, err := utils.Docker.VolumeList(ctx, client.VolumeListOptions{ Filters: utils.CliProjectFilter(searchProjectIdFilter), - }); err == nil && len(resp.Volumes) > 0 { + }); err == nil && len(resp.Items) > 0 { if len(searchProjectIdFilter) > 0 { listVolume := fmt.Sprintf("docker volume ls --filter label=%s=%s", utils.CliProjectLabel, searchProjectIdFilter) utils.CmdSuggestion = "Local data are backed up to docker volume. Use docker to show them: " + utils.Aqua(listVolume) diff --git a/apps/cli-go/internal/stop/stop_test.go b/apps/cli-go/internal/stop/stop_test.go index 588e31addf..34be2d9f37 100644 --- a/apps/cli-go/internal/stop/stop_test.go +++ b/apps/cli-go/internal/stop/stop_test.go @@ -8,11 +8,10 @@ import ( "net/http" "testing" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" - "github.com/docker/docker/api/types/volume" - "github.com/docker/docker/client" "github.com/h2non/gock" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/network" + "github.com/moby/moby/api/types/volume" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -26,7 +25,7 @@ func TestStopCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/json"). @@ -43,7 +42,7 @@ func TestStopCommand(t *testing.T) { gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/volumes"). Reply(http.StatusOK). - JSON(volume.ListResponse{Volumes: []*volume.Volume{{ + JSON(volume.ListResponse{Volumes: []volume.Volume{{ Name: utils.DbId, }}}) // Run test @@ -58,7 +57,7 @@ func TestStopCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() projects := []string{"project1", "project2"} @@ -78,7 +77,7 @@ func TestStopCommand(t *testing.T) { Get("/v" + utils.Docker.ClientVersion() + "/volumes"). Reply(http.StatusOK). JSON(volume.ListResponse{ - Volumes: []*volume.Volume{ + Volumes: []volume.Volume{ {Name: "volume1", Labels: map[string]string{utils.CliProjectLabel: "project1"}}, {Name: "volume2", Labels: map[string]string{utils.CliProjectLabel: "project2"}}, }, @@ -111,7 +110,7 @@ func TestStopCommand(t *testing.T) { Get("/v"+utils.Docker.ClientVersion()+"/volumes"). MatchParam("filters", fmt.Sprintf(`{"label":{"com.supabase.cli.project=%s":true}}`, projectId)). Reply(http.StatusOK). - JSON(volume.ListResponse{Volumes: []*volume.Volume{{Name: "volume-" + projectId}}}) + JSON(volume.ListResponse{Volumes: []volume.Volume{{Name: "volume-" + projectId}}}) } // Mock final ContainerList to verify all containers are stopped @@ -148,7 +147,7 @@ func TestStopCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/json"). @@ -168,7 +167,7 @@ func TestStopServices(t *testing.T) { {ID: "c2", State: "exited"}, } // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/json"). @@ -201,24 +200,7 @@ func TestStopServices(t *testing.T) { utils.EdgeRuntimeId = "test-functions" utils.InbucketId = "test-inbucket" // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) - defer gock.OffAll() - apitest.MockDockerStop(utils.Docker) - // Run test - err := stop(context.Background(), false, io.Discard, utils.Config.ProjectId) - // Check error - assert.NoError(t, err) - assert.Empty(t, apitest.ListUnmatchedRequests()) - }) - - t.Run("skips all filter when removing data volumes with Docker version pre-v1.42", func(t *testing.T) { - utils.DbId = "test-db" - utils.StorageId = "test-storage" - utils.EdgeRuntimeId = "test-functions" - utils.InbucketId = "test-inbucket" - // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) - require.NoError(t, client.WithVersion("1.41")(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() apitest.MockDockerStop(utils.Docker) // Run test @@ -230,7 +212,7 @@ func TestStopServices(t *testing.T) { t.Run("throws error on prune failure", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers/json"). diff --git a/apps/cli-go/internal/testing/apitest/docker.go b/apps/cli-go/internal/testing/apitest/docker.go index 9b9020c044..521fbfa750 100644 --- a/apps/cli-go/internal/testing/apitest/docker.go +++ b/apps/cli-go/internal/testing/apitest/docker.go @@ -2,36 +2,65 @@ package apitest import ( "bytes" + "encoding/binary" "fmt" "io" + "math" "net/http" "strings" - "github.com/docker/docker/api" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/image" - "github.com/docker/docker/api/types/network" - "github.com/docker/docker/api/types/versions" - "github.com/docker/docker/api/types/volume" - "github.com/docker/docker/client" - "github.com/docker/docker/pkg/stdcopy" - "github.com/go-errors/errors" "github.com/h2non/gock" + "github.com/moby/moby/api/pkg/stdcopy" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/image" + "github.com/moby/moby/api/types/network" + "github.com/moby/moby/api/types/volume" + "github.com/moby/moby/client" ) const mockHost = "http://127.0.0.1" +const mockAPIVersion = "1.54" -func MockDocker(docker *client.Client) error { +type stdWriter struct { + io.Writer + stream stdcopy.StdType +} + +func (w stdWriter) Write(p []byte) (int, error) { + if len(p) > math.MaxUint32 { + return 0, fmt.Errorf("docker stdcopy frame too large: %d", len(p)) + } + header := [8]byte{byte(w.stream)} + //nolint:gosec // len(p) is checked against math.MaxUint32 above. + binary.BigEndian.PutUint32(header[4:], uint32(len(p))) + if _, err := w.Writer.Write(header[:]); err != nil { + return 0, err + } + if _, err := w.Writer.Write(p); err != nil { + return 0, err + } + return len(p), nil +} + +func NewStdoutWriter(w io.Writer) io.Writer { + return stdWriter{Writer: w, stream: stdcopy.Stdout} +} + +func MockDocker(docker **client.Client) error { // Skip setup if docker is already mocked - if docker.DaemonHost() == mockHost { + if (*docker).DaemonHost() == mockHost { return nil } - if err := client.WithVersion(api.DefaultVersion)(docker); err != nil { + mock, err := client.New( + client.WithHost(mockHost), + client.WithAPIVersion(mockAPIVersion), + client.WithHTTPClient(&http.Client{Transport: gock.NewTransport()}), + ) + if err != nil { return err } - // Safe to ignore errors as transport will be replaced by gock - _ = client.WithHost(mockHost)(docker) - return client.WithHTTPClient(http.DefaultClient)(docker) + *docker = mock + return nil } // Ref: internal/utils/docker.go::DockerStart @@ -68,12 +97,6 @@ func MockDockerStop(docker *client.Client) { Post("/v" + docker.ClientVersion() + "/containers/prune"). Reply(http.StatusOK). JSON(container.PruneReport{}) - if !versions.GreaterThanOrEqualTo(docker.ClientVersion(), "1.42") { - gock.New(docker.DaemonHost()). - Post("/v"+docker.ClientVersion()+"/volumes/prune"). - MatchParam("filters", `"all":{"true":true}`). - ReplyError(errors.New(`failed to parse filters for all=true&label=com.supabase.cli.project%3Dtest: "all" is an invalid volume filter`)) - } gock.New(docker.DaemonHost()). Post("/v" + docker.ClientVersion() + "/volumes/prune"). Reply(http.StatusOK). @@ -95,7 +118,7 @@ func setupDockerLogs(docker *client.Client, containerID, stdout string, exitCode func MockDockerLogsStream(docker *client.Client, containerID string, exitCode int, r io.Reader) error { var body bytes.Buffer - writer := stdcopy.NewStdWriter(&body, stdcopy.Stdout) + writer := NewStdoutWriter(&body) _, err := io.Copy(writer, r) gock.New(docker.DaemonHost()). Get("/v"+docker.ClientVersion()+"/containers/"+containerID+"/logs"). @@ -105,10 +128,11 @@ func MockDockerLogsStream(docker *client.Client, containerID string, exitCode in gock.New(docker.DaemonHost()). Get("/v" + docker.ClientVersion() + "/containers/" + containerID + "/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ ExitCode: exitCode, - }}}) + }, + }) return err } diff --git a/apps/cli-go/internal/utils/container_output.go b/apps/cli-go/internal/utils/container_output.go index bd3e19d1f6..bba708aa6c 100644 --- a/apps/cli-go/internal/utils/container_output.go +++ b/apps/cli-go/internal/utils/container_output.go @@ -12,7 +12,7 @@ import ( "strconv" "strings" - "github.com/docker/docker/pkg/jsonmessage" + "github.com/moby/moby/api/types/jsonstream" ) func ProcessPullOutput(out io.ReadCloser, p Program) error { @@ -21,7 +21,7 @@ func ProcessPullOutput(out io.ReadCloser, p Program) error { downloads := make(map[string]struct{ current, total int64 }) for { - var progress jsonmessage.JSONMessage + var progress jsonstream.Message if err := dec.Decode(&progress); err == io.EOF { break diff --git a/apps/cli-go/internal/utils/container_output_test.go b/apps/cli-go/internal/utils/container_output_test.go index 3250846183..79355d01bb 100644 --- a/apps/cli-go/internal/utils/container_output_test.go +++ b/apps/cli-go/internal/utils/container_output_test.go @@ -7,7 +7,7 @@ import ( "testing" tea "github.com/charmbracelet/bubbletea" - "github.com/docker/docker/pkg/jsonmessage" + "github.com/moby/moby/api/types/jsonstream" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -65,12 +65,12 @@ func TestProcessDiffOutput(t *testing.T) { func TestProcessPullOutput(t *testing.T) { t.Run("processes docker pull messages", func(t *testing.T) { - messages := []jsonmessage.JSONMessage{ + messages := []jsonstream.Message{ {Status: "Pulling from library/postgres"}, {ID: "layer1", Status: "Pulling fs layer"}, - {ID: "layer1", Status: "Downloading", Progress: &jsonmessage.JSONProgress{Current: 50, Total: 100}}, + {ID: "layer1", Status: "Downloading", Progress: &jsonstream.Progress{Current: 50, Total: 100}}, {ID: "layer2", Status: "Pulling fs layer"}, - {ID: "layer2", Status: "Downloading", Progress: &jsonmessage.JSONProgress{Current: 75, Total: 100}}, + {ID: "layer2", Status: "Downloading", Progress: &jsonstream.Progress{Current: 75, Total: 100}}, } // Create a pipe to write messages diff --git a/apps/cli-go/internal/utils/docker.go b/apps/cli-go/internal/utils/docker.go index 9736fa651d..b81fae90ed 100644 --- a/apps/cli-go/internal/utils/docker.go +++ b/apps/cli-go/internal/utils/docker.go @@ -21,17 +21,13 @@ import ( dockerConfig "github.com/docker/cli/cli/config" dockerFlags "github.com/docker/cli/cli/flags" "github.com/docker/cli/cli/streams" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/filters" - "github.com/docker/docker/api/types/image" - "github.com/docker/docker/api/types/mount" - "github.com/docker/docker/api/types/network" - "github.com/docker/docker/api/types/versions" - "github.com/docker/docker/api/types/volume" - "github.com/docker/docker/client" - "github.com/docker/docker/pkg/jsonmessage" - "github.com/docker/docker/pkg/stdcopy" "github.com/go-errors/errors" + "github.com/moby/moby/api/pkg/stdcopy" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/mount" + "github.com/moby/moby/api/types/network" + "github.com/moby/moby/client" + "github.com/moby/moby/client/pkg/jsonmessage" "github.com/spf13/viper" "go.opentelemetry.io/otel" ) @@ -65,7 +61,7 @@ func DockerNetworkCreateIfNotExists(ctx context.Context, mode container.NetworkM if !isUserDefined(mode) { return nil } - _, err := Docker.NetworkCreate(ctx, mode.NetworkName(), network.CreateOptions{Labels: labels}) + _, err := Docker.NetworkCreate(ctx, mode.NetworkName(), client.NetworkCreateOptions{Labels: labels}) // if error is network already exists, no need to propagate to user if errdefs.IsConflict(err) || errors.Is(err, podman.ErrNetworkExists) { return nil @@ -96,7 +92,7 @@ var NoBackupVolume = false func DockerRemoveAll(ctx context.Context, w io.Writer, projectId string) error { fmt.Fprintln(w, "Stopping containers...") args := CliProjectFilter(projectId) - containers, err := Docker.ContainerList(ctx, container.ListOptions{ + containers, err := Docker.ContainerList(ctx, client.ContainerListOptions{ All: true, Filters: args, }) @@ -105,11 +101,11 @@ func DockerRemoveAll(ctx context.Context, w io.Writer, projectId string) error { } // Gracefully shutdown containers var ids []string - for _, c := range containers { + for _, c := range containers.Items { ids = append(ids, c.ID) } result := WaitAll(ids, func(id string) error { - if err := Docker.ContainerStop(ctx, id, container.StopOptions{}); err != nil && !errdefs.IsNotModified(err) { + if _, err := Docker.ContainerStop(ctx, id, client.ContainerStopOptions{}); err != nil && !errdefs.IsNotModified(err) { return errors.Errorf("failed to stop container: %w", err) } return nil @@ -117,43 +113,34 @@ func DockerRemoveAll(ctx context.Context, w io.Writer, projectId string) error { if err := errors.Join(result...); err != nil { return err } - if report, err := Docker.ContainersPrune(ctx, args); err != nil { + if result, err := Docker.ContainerPrune(ctx, client.ContainerPruneOptions{Filters: args}); err != nil { return errors.Errorf("failed to prune containers: %w", err) } else if viper.GetBool("DEBUG") { - fmt.Fprintln(os.Stderr, "Pruned containers:", report.ContainersDeleted) + fmt.Fprintln(os.Stderr, "Pruned containers:", result.Report.ContainersDeleted) } // Remove named volumes if NoBackupVolume { - vargs := args.Clone() - if versions.GreaterThanOrEqualTo(Docker.ClientVersion(), "1.42") { - // Since docker engine 25.0.3, all flag is required to include named volumes. - // https://github.com/docker/cli/blob/master/cli/command/volume/prune.go#L76 - vargs.Add("all", "true") - } - if report, err := Docker.VolumesPrune(ctx, vargs); err != nil { + if result, err := Docker.VolumePrune(ctx, client.VolumePruneOptions{All: true, Filters: args.Clone()}); err != nil { return errors.Errorf("failed to prune volumes: %w", err) } else if viper.GetBool("DEBUG") { - fmt.Fprintln(os.Stderr, "Pruned volumes:", report.VolumesDeleted) + fmt.Fprintln(os.Stderr, "Pruned volumes:", result.Report.VolumesDeleted) } } // Remove networks. - if report, err := Docker.NetworksPrune(ctx, args); err != nil { + if result, err := Docker.NetworkPrune(ctx, client.NetworkPruneOptions{Filters: args}); err != nil { return errors.Errorf("failed to prune networks: %w", err) } else if viper.GetBool("DEBUG") { - fmt.Fprintln(os.Stderr, "Pruned network:", report.NetworksDeleted) + fmt.Fprintln(os.Stderr, "Pruned network:", result.Report.NetworksDeleted) } return nil } -func CliProjectFilter(projectId string) filters.Args { +func CliProjectFilter(projectId string) client.Filters { + args := make(client.Filters) if len(projectId) == 0 { - return filters.NewArgs( - filters.Arg("label", CliProjectLabel), - ) + return args.Add("label", CliProjectLabel) } - return filters.NewArgs( - filters.Arg("label", CliProjectLabel+"="+projectId), - ) + return args.Add("label", CliProjectLabel+"="+projectId) } var ( @@ -204,14 +191,15 @@ func GetRegistryImageUrl(imageName string) string { } func DockerImagePull(ctx context.Context, imageTag string, w io.Writer) error { - out, err := Docker.ImagePull(ctx, imageTag, image.PullOptions{ + out, err := Docker.ImagePull(ctx, imageTag, client.ImagePullOptions{ RegistryAuth: GetRegistryAuth(), }) if err != nil { return errors.Errorf("failed to pull docker image: %w", err) } defer out.Close() - if err := jsonmessage.DisplayJSONMessagesToStream(out, streams.NewOut(w), nil); err != nil { + outStream := streams.NewOut(w) + if err := jsonmessage.DisplayJSONMessagesStream(out, outStream, outStream.FD(), outStream.IsTerminal(), nil); err != nil { return errors.Errorf("failed to display json stream: %w", err) } return nil @@ -294,7 +282,7 @@ func DockerStart(ctx context.Context, config container.Config, hostConfig contai } else { // Create named volumes with labels for _, name := range sources { - if _, err := Docker.VolumeCreate(ctx, volume.CreateOptions{ + if _, err := Docker.VolumeCreate(ctx, client.VolumeCreateOptions{ Name: name, Labels: config.Labels, }); err != nil { @@ -303,12 +291,17 @@ func DockerStart(ctx context.Context, config container.Config, hostConfig contai } } // Create container from image - resp, err := Docker.ContainerCreate(ctx, &config, &hostConfig, &networkingConfig, nil, containerName) + resp, err := Docker.ContainerCreate(ctx, client.ContainerCreateOptions{ + Config: &config, + HostConfig: &hostConfig, + NetworkingConfig: &networkingConfig, + Name: containerName, + }) if err != nil { return "", errors.Errorf("failed to create docker container: %w", err) } // Run container in background - err = Docker.ContainerStart(ctx, resp.ID, container.StartOptions{}) + _, err = Docker.ContainerStart(ctx, resp.ID, client.ContainerStartOptions{}) if err != nil { if hostPort := parsePortBindError(err); len(hostPort) > 0 { CmdSuggestion = suggestDockerStop(ctx, hostPort) @@ -328,7 +321,7 @@ func DockerStart(ctx context.Context, config container.Config, hostConfig contai } func DockerRemove(containerId string) { - if err := Docker.ContainerRemove(context.Background(), containerId, container.RemoveOptions{ + if _, err := Docker.ContainerRemove(context.Background(), containerId, client.ContainerRemoveOptions{ RemoveVolumes: true, Force: true, }); err != nil { @@ -376,8 +369,8 @@ func DockerRunOnceWithConfig(ctx context.Context, config container.Config, hostC var ErrContainerKilled = errors.New("exit 137") -func DockerStreamLogs(ctx context.Context, containerId string, stdout, stderr io.Writer, opts ...func(*container.LogsOptions)) error { - logsOptions := container.LogsOptions{ +func DockerStreamLogs(ctx context.Context, containerId string, stdout, stderr io.Writer, opts ...func(*client.ContainerLogsOptions)) error { + logsOptions := client.ContainerLogsOptions{ ShowStdout: true, ShowStderr: true, Follow: true, @@ -395,23 +388,23 @@ func DockerStreamLogs(ctx context.Context, containerId string, stdout, stderr io return errors.Errorf("failed to copy docker logs: %w", err) } // Check exit code - resp, err := Docker.ContainerInspect(ctx, containerId) + resp, err := Docker.ContainerInspect(ctx, containerId, client.ContainerInspectOptions{}) if err != nil { return errors.Errorf("failed to inspect docker container: %w", err) } - switch resp.State.ExitCode { + switch resp.Container.State.ExitCode { case 0: return nil case 137: err = ErrContainerKilled default: - err = errors.Errorf("exit %d", resp.State.ExitCode) + err = errors.Errorf("exit %d", resp.Container.State.ExitCode) } return errors.Errorf("error running container: %w", err) } func DockerStreamLogsOnce(ctx context.Context, containerId string, stdout, stderr io.Writer) error { - logs, err := Docker.ContainerLogs(ctx, containerId, container.LogsOptions{ + logs, err := Docker.ContainerLogs(ctx, containerId, client.ContainerLogsOptions{ ShowStdout: true, ShowStderr: true, }) @@ -438,7 +431,7 @@ func DockerExecOnce(ctx context.Context, containerId string, env []string, cmd [ func DockerExecOnceWithStream(ctx context.Context, containerId, workdir string, env, cmd []string, stdout, stderr io.Writer) error { // Reset shadow database - exec, err := Docker.ContainerExecCreate(ctx, containerId, container.ExecOptions{ + exec, err := Docker.ExecCreate(ctx, containerId, client.ExecCreateOptions{ Env: env, Cmd: cmd, WorkingDir: workdir, @@ -449,7 +442,7 @@ func DockerExecOnceWithStream(ctx context.Context, containerId, workdir string, return errors.Errorf("failed to exec docker create: %w", err) } // Read exec output - resp, err := Docker.ContainerExecAttach(ctx, exec.ID, container.ExecStartOptions{}) + resp, err := Docker.ExecAttach(ctx, exec.ID, client.ExecAttachOptions{}) if err != nil { return errors.Errorf("failed to exec docker attach: %w", err) } @@ -459,7 +452,7 @@ func DockerExecOnceWithStream(ctx context.Context, containerId, workdir string, return errors.Errorf("failed to copy docker logs: %w", err) } // Get the exit code - iresp, err := Docker.ContainerExecInspect(ctx, exec.ID) + iresp, err := Docker.ExecInspect(ctx, exec.ID, client.ExecInspectOptions{}) if err != nil { return errors.Errorf("failed to exec docker inspect: %w", err) } @@ -470,7 +463,7 @@ func DockerExecOnceWithStream(ctx context.Context, containerId, workdir string, } func IsDockerRunning(ctx context.Context) bool { - _, err := Docker.Ping(ctx) + _, err := Docker.Ping(ctx, client.PingOptions{}) return !client.IsErrConnectionFailed(err) } @@ -485,8 +478,8 @@ func parsePortBindError(err error) string { } func suggestDockerStop(ctx context.Context, hostPort string) string { - if containers, err := Docker.ContainerList(ctx, container.ListOptions{}); err == nil { - for _, c := range containers { + if containers, err := Docker.ContainerList(ctx, client.ContainerListOptions{}); err == nil { + for _, c := range containers.Items { for _, p := range c.Ports { if fmt.Sprintf("%s:%d", p.IP, p.PublicPort) == hostPort { if project, ok := c.Labels[CliProjectLabel]; ok { diff --git a/apps/cli-go/internal/utils/docker_darwin.go b/apps/cli-go/internal/utils/docker_darwin.go index af183bc31a..53c97669e2 100644 --- a/apps/cli-go/internal/utils/docker_darwin.go +++ b/apps/cli-go/internal/utils/docker_darwin.go @@ -2,7 +2,7 @@ package utils -import "github.com/docker/docker/api/types/container" +import "github.com/moby/moby/api/types/container" var extraHosts []string diff --git a/apps/cli-go/internal/utils/docker_linux.go b/apps/cli-go/internal/utils/docker_linux.go index b5463d0604..bd1b149dcb 100644 --- a/apps/cli-go/internal/utils/docker_linux.go +++ b/apps/cli-go/internal/utils/docker_linux.go @@ -2,7 +2,7 @@ package utils -import "github.com/docker/docker/api/types/container" +import "github.com/moby/moby/api/types/container" // Allows containers to resolve host network: https://stackoverflow.com/a/62431165 var extraHosts = []string{DinDHost + ":host-gateway"} diff --git a/apps/cli-go/internal/utils/docker_test.go b/apps/cli-go/internal/utils/docker_test.go index 0692045590..89d44e303b 100644 --- a/apps/cli-go/internal/utils/docker_test.go +++ b/apps/cli-go/internal/utils/docker_test.go @@ -7,12 +7,11 @@ import ( "testing" "time" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/image" - "github.com/docker/docker/api/types/network" - "github.com/docker/docker/pkg/jsonmessage" - "github.com/docker/docker/pkg/stdcopy" "github.com/h2non/gock" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/image" + "github.com/moby/moby/api/types/jsonstream" + "github.com/moby/moby/api/types/network" "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -29,7 +28,7 @@ func TestPullImage(t *testing.T) { t.Run("pulls image if missing", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(Docker)) + require.NoError(t, apitest.MockDocker(&Docker)) defer gock.OffAll() gock.New(Docker.DaemonHost()). Get("/v" + Docker.ClientVersion() + "/images/" + imageId + "/json"). @@ -47,7 +46,7 @@ func TestPullImage(t *testing.T) { t.Run("does nothing if image exists", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(Docker)) + require.NoError(t, apitest.MockDocker(&Docker)) defer gock.OffAll() gock.New(Docker.DaemonHost()). Get("/v" + Docker.ClientVersion() + "/images/" + imageId + "/json"). @@ -61,7 +60,7 @@ func TestPullImage(t *testing.T) { t.Run("throws error if docker is unavailable", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(Docker)) + require.NoError(t, apitest.MockDocker(&Docker)) defer gock.OffAll() gock.New(Docker.DaemonHost()). Get("/v" + Docker.ClientVersion() + "/images/" + imageId + "/json"). @@ -75,7 +74,7 @@ func TestPullImage(t *testing.T) { t.Run("throws error on failure to pull image", func(t *testing.T) { timeUnit = time.Duration(0) // Setup mock docker - require.NoError(t, apitest.MockDocker(Docker)) + require.NoError(t, apitest.MockDocker(&Docker)) defer gock.OffAll() gock.New(Docker.DaemonHost()). Get("/v" + Docker.ClientVersion() + "/images/" + imageId + "/json"). @@ -91,13 +90,13 @@ func TestPullImage(t *testing.T) { MatchParam("fromImage", imageId). MatchParam("tag", "latest"). Reply(http.StatusAccepted). - JSON(jsonmessage.JSONMessage{Error: &jsonmessage.JSONError{Message: "toomanyrequests"}}) + JSON(jsonstream.Message{Error: &jsonstream.Error{Message: "toomanyrequests"}}) gock.New(Docker.DaemonHost()). Post("/v"+Docker.ClientVersion()+"/images/create"). MatchParam("fromImage", imageId). MatchParam("tag", "latest"). Reply(http.StatusAccepted). - JSON(jsonmessage.JSONMessage{Error: &jsonmessage.JSONError{Message: "no space left on device"}}) + JSON(jsonstream.Message{Error: &jsonstream.Error{Message: "no space left on device"}}) // Run test err := DockerPullImageIfNotCached(context.Background(), imageId) // Validate api @@ -111,7 +110,7 @@ func TestRunOnce(t *testing.T) { t.Run("runs once in container", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(Docker)) + require.NoError(t, apitest.MockDocker(&Docker)) defer gock.OffAll() apitest.MockDockerStart(Docker, imageId, containerId) require.NoError(t, apitest.MockDockerLogs(Docker, containerId, "hello world")) @@ -125,7 +124,7 @@ func TestRunOnce(t *testing.T) { t.Run("throws error on container create", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(Docker)) + require.NoError(t, apitest.MockDocker(&Docker)) defer gock.OffAll() gock.New(Docker.DaemonHost()). Get("/v" + Docker.ClientVersion() + "/images/" + imageId + "/json"). @@ -147,7 +146,7 @@ func TestRunOnce(t *testing.T) { t.Run("throws error on container start", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(Docker)) + require.NoError(t, apitest.MockDocker(&Docker)) defer gock.OffAll() gock.New(Docker.DaemonHost()). Get("/v" + Docker.ClientVersion() + "/images/" + imageId + "/json"). @@ -173,7 +172,7 @@ func TestRunOnce(t *testing.T) { t.Run("removes container on cancel", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(Docker)) + require.NoError(t, apitest.MockDocker(&Docker)) defer gock.OffAll() apitest.MockDockerStart(Docker, imageId, containerId) gock.New(Docker.DaemonHost()). @@ -195,7 +194,7 @@ func TestRunOnce(t *testing.T) { t.Run("throws error on failure to parse logs", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(Docker)) + require.NoError(t, apitest.MockDocker(&Docker)) defer gock.OffAll() apitest.MockDockerStart(Docker, imageId, containerId) gock.New(Docker.DaemonHost()). @@ -215,20 +214,20 @@ func TestRunOnce(t *testing.T) { t.Run("throws error on failure to inspect", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(Docker)) + require.NoError(t, apitest.MockDocker(&Docker)) defer gock.OffAll() apitest.MockDockerStart(Docker, imageId, containerId) // Setup docker style logs var body bytes.Buffer - writer := stdcopy.NewStdWriter(&body, stdcopy.Stdout) + writer := apitest.NewStdoutWriter(&body) _, err := writer.Write([]byte("hello world")) require.NoError(t, err) - gock.New("http:///var/run/docker.sock"). + gock.New(Docker.DaemonHost()). Get("/v"+Docker.ClientVersion()+"/containers/"+containerId+"/logs"). Reply(http.StatusOK). SetHeader("Content-Type", "application/vnd.docker.raw-stream"). Body(&body) - gock.New("http:///var/run/docker.sock"). + gock.New(Docker.DaemonHost()). Get("/v" + Docker.ClientVersion() + "/containers/" + containerId + "/json"). Reply(http.StatusServiceUnavailable) gock.New(Docker.DaemonHost()). @@ -243,26 +242,27 @@ func TestRunOnce(t *testing.T) { t.Run("throws error on non-zero exit code", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(Docker)) + require.NoError(t, apitest.MockDocker(&Docker)) defer gock.OffAll() apitest.MockDockerStart(Docker, imageId, containerId) // Setup docker style logs var body bytes.Buffer - writer := stdcopy.NewStdWriter(&body, stdcopy.Stdout) + writer := apitest.NewStdoutWriter(&body) _, err := writer.Write([]byte("hello world")) require.NoError(t, err) - gock.New("http:///var/run/docker.sock"). + gock.New(Docker.DaemonHost()). Get("/v"+Docker.ClientVersion()+"/containers/"+containerId+"/logs"). Reply(http.StatusOK). SetHeader("Content-Type", "application/vnd.docker.raw-stream"). Body(&body) - gock.New("http:///var/run/docker.sock"). + gock.New(Docker.DaemonHost()). Get("/v" + Docker.ClientVersion() + "/containers/" + containerId + "/json"). Reply(http.StatusOK). - JSON(container.InspectResponse{ContainerJSONBase: &container.ContainerJSONBase{ + JSON(container.InspectResponse{ State: &container.State{ ExitCode: 1, - }}}) + }, + }) gock.New(Docker.DaemonHost()). Delete("/v" + Docker.ClientVersion() + "/containers/" + containerId). Reply(http.StatusOK) @@ -277,7 +277,7 @@ func TestRunOnce(t *testing.T) { func TestExecOnce(t *testing.T) { t.Run("throws error on failure to exec", func(t *testing.T) { // Setup mock server - require.NoError(t, apitest.MockDocker(Docker)) + require.NoError(t, apitest.MockDocker(&Docker)) defer gock.OffAll() gock.New(Docker.DaemonHost()). Post("/v" + Docker.ClientVersion() + "/containers/" + containerId + "/exec"). @@ -291,7 +291,7 @@ func TestExecOnce(t *testing.T) { t.Run("throws error on failure to hijack", func(t *testing.T) { // Setup mock server - require.NoError(t, apitest.MockDocker(Docker)) + require.NoError(t, apitest.MockDocker(&Docker)) defer gock.OffAll() gock.New(Docker.DaemonHost()). Post("/v" + Docker.ClientVersion() + "/containers/" + containerId + "/exec"). diff --git a/apps/cli-go/internal/utils/docker_windows.go b/apps/cli-go/internal/utils/docker_windows.go index 99e68d9b69..bbac0cb9b2 100644 --- a/apps/cli-go/internal/utils/docker_windows.go +++ b/apps/cli-go/internal/utils/docker_windows.go @@ -3,8 +3,8 @@ package utils import ( - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/network" ) var extraHosts []string diff --git a/apps/cli-go/internal/utils/edgeruntime.go b/apps/cli-go/internal/utils/edgeruntime.go index d7070f3f9e..249237995e 100644 --- a/apps/cli-go/internal/utils/edgeruntime.go +++ b/apps/cli-go/internal/utils/edgeruntime.go @@ -7,9 +7,9 @@ import ( "net" "strings" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" "github.com/go-errors/errors" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/api/types/network" "github.com/spf13/viper" ) diff --git a/apps/cli-go/internal/utils/misc.go b/apps/cli-go/internal/utils/misc.go index 8e9870531b..bf2557451e 100644 --- a/apps/cli-go/internal/utils/misc.go +++ b/apps/cli-go/internal/utils/misc.go @@ -11,10 +11,10 @@ import ( "time" "github.com/containerd/errdefs" - "github.com/docker/docker/client" "github.com/go-errors/errors" "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/plumbing/format/gitignore" + "github.com/moby/moby/client" "github.com/spf13/afero" "github.com/spf13/viper" "github.com/supabase/cli/internal/utils/agent" @@ -146,7 +146,7 @@ func AssertSupabaseDbIsRunning() error { } func AssertServiceIsRunning(ctx context.Context, containerId string) error { - if _, err := Docker.ContainerInspect(ctx, containerId); err != nil { + if _, err := Docker.ContainerInspect(ctx, containerId, client.ContainerInspectOptions{}); err != nil { if errdefs.IsNotFound(err) { return errors.New(ErrNotRunning) } diff --git a/apps/cli-go/legacy/branch/create/create.go b/apps/cli-go/legacy/branch/create/create.go index 5501283763..c97950bc3f 100644 --- a/apps/cli-go/legacy/branch/create/create.go +++ b/apps/cli-go/legacy/branch/create/create.go @@ -9,9 +9,9 @@ import ( "os" "path/filepath" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/pkg/stdcopy" "github.com/go-errors/errors" + "github.com/moby/moby/api/pkg/stdcopy" + "github.com/moby/moby/client" "github.com/spf13/afero" "github.com/supabase/cli/internal/utils" "github.com/supabase/cli/internal/utils/flags" @@ -71,7 +71,7 @@ func assertNewBranchIsValid(branchPath string, fsys afero.Fs) error { } func createBranch(ctx context.Context, branch string) error { - exec, err := utils.Docker.ContainerExecCreate(ctx, utils.DbId, container.ExecOptions{ + exec, err := utils.Docker.ExecCreate(ctx, utils.DbId, client.ExecCreateOptions{ Cmd: []string{"/bin/bash", "-c", cloneScript}, Env: []string{"DB_NAME=" + branch}, AttachStderr: true, @@ -81,7 +81,7 @@ func createBranch(ctx context.Context, branch string) error { return err } // Read exec output - resp, err := utils.Docker.ContainerExecAttach(ctx, exec.ID, container.ExecStartOptions{}) + resp, err := utils.Docker.ExecAttach(ctx, exec.ID, client.ExecAttachOptions{}) if err != nil { return err } @@ -92,7 +92,7 @@ func createBranch(ctx context.Context, branch string) error { return err } // Get the exit code - iresp, err := utils.Docker.ContainerExecInspect(ctx, exec.ID) + iresp, err := utils.Docker.ExecInspect(ctx, exec.ID, client.ExecInspectOptions{}) if err != nil { return err } diff --git a/apps/cli-go/legacy/branch/create/create_test.go b/apps/cli-go/legacy/branch/create/create_test.go index 66b919ecbd..a2d59ab856 100644 --- a/apps/cli-go/legacy/branch/create/create_test.go +++ b/apps/cli-go/legacy/branch/create/create_test.go @@ -5,8 +5,8 @@ import ( "net/http" "testing" - "github.com/docker/docker/api/types/container" "github.com/h2non/gock" + "github.com/moby/moby/api/types/container" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -52,7 +52,7 @@ func TestBranchCreation(t *testing.T) { t.Run("docker exec failure", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Post("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId + "/exec"). @@ -66,7 +66,7 @@ func TestBranchCreation(t *testing.T) { t.Run("docker attach failure", func(t *testing.T) { // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Post("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId + "/exec"). @@ -75,7 +75,7 @@ func TestBranchCreation(t *testing.T) { // Run test err := createBranch(context.Background(), "test-branch") // Validate api - assert.ErrorContains(t, err, "unable to upgrade to tcp, received 404") + assert.ErrorContains(t, err, "cannot connect to the Docker daemon") assert.Empty(t, apitest.ListUnmatchedRequests()) }) } @@ -92,7 +92,7 @@ func TestCreateCommand(t *testing.T) { fsys := &afero.MemMapFs{} require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). diff --git a/apps/cli-go/legacy/branch/delete/delete.go b/apps/cli-go/legacy/branch/delete/delete.go index ea14cd34d6..4990b92266 100644 --- a/apps/cli-go/legacy/branch/delete/delete.go +++ b/apps/cli-go/legacy/branch/delete/delete.go @@ -7,9 +7,9 @@ import ( "io" "path/filepath" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/pkg/stdcopy" "github.com/go-errors/errors" + "github.com/moby/moby/api/pkg/stdcopy" + "github.com/moby/moby/client" "github.com/spf13/afero" "github.com/supabase/cli/internal/utils" "github.com/supabase/cli/internal/utils/flags" @@ -59,7 +59,7 @@ func deleteBranchDir(branch string, fsys afero.Fs) error { } func deleteBranchPG(ctx context.Context, branch string) error { - exec, err := utils.Docker.ContainerExecCreate(ctx, utils.DbId, container.ExecOptions{ + exec, err := utils.Docker.ExecCreate(ctx, utils.DbId, client.ExecCreateOptions{ Cmd: []string{"dropdb", "--username", "postgres", "--host", "127.0.0.1", branch}, AttachStderr: true, AttachStdout: true, @@ -68,7 +68,7 @@ func deleteBranchPG(ctx context.Context, branch string) error { return err } // Read exec output - resp, err := utils.Docker.ContainerExecAttach(ctx, exec.ID, container.ExecStartOptions{}) + resp, err := utils.Docker.ExecAttach(ctx, exec.ID, client.ExecAttachOptions{}) if err != nil { return err } @@ -79,7 +79,7 @@ func deleteBranchPG(ctx context.Context, branch string) error { return err } // Get the exit code - iresp, err := utils.Docker.ContainerExecInspect(ctx, exec.ID) + iresp, err := utils.Docker.ExecInspect(ctx, exec.ID, client.ExecInspectOptions{}) if err != nil { return err } diff --git a/apps/cli-go/legacy/branch/delete/delete_test.go b/apps/cli-go/legacy/branch/delete/delete_test.go index 76957e2460..aefb25d886 100644 --- a/apps/cli-go/legacy/branch/delete/delete_test.go +++ b/apps/cli-go/legacy/branch/delete/delete_test.go @@ -65,7 +65,7 @@ func TestDeleteCommand(t *testing.T) { fsys := &afero.MemMapFs{} require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). diff --git a/apps/cli-go/legacy/branch/switch_/switch__test.go b/apps/cli-go/legacy/branch/switch_/switch__test.go index f0e51d521e..a72a8ffa5e 100644 --- a/apps/cli-go/legacy/branch/switch_/switch__test.go +++ b/apps/cli-go/legacy/branch/switch_/switch__test.go @@ -6,9 +6,9 @@ import ( "path/filepath" "testing" - "github.com/docker/docker/api/types/container" "github.com/h2non/gock" "github.com/jackc/pgerrcode" + "github.com/moby/moby/api/types/container" "github.com/spf13/afero" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -29,7 +29,7 @@ func TestSwitchCommand(t *testing.T) { require.NoError(t, fsys.Mkdir(branchPath, 0755)) require.NoError(t, afero.WriteFile(fsys, utils.CurrBranchPath, []byte("main"), 0644)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). @@ -77,7 +77,7 @@ func TestSwitchCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). @@ -94,7 +94,7 @@ func TestSwitchCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). @@ -112,7 +112,7 @@ func TestSwitchCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). @@ -130,7 +130,7 @@ func TestSwitchCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). @@ -154,7 +154,7 @@ func TestSwitchCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). @@ -178,7 +178,7 @@ func TestSwitchCommand(t *testing.T) { fsys := afero.NewMemMapFs() require.NoError(t, utils.WriteConfig(fsys, false)) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Get("/v" + utils.Docker.ClientVersion() + "/containers"). @@ -241,7 +241,7 @@ func TestSwitchDatabase(t *testing.T) { Query("ALTER DATABASE postgres RENAME TO main;"). ReplyError(pgerrcode.DuplicateDatabase, `database "main" already exists`) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Post("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId + "/restart"). @@ -276,7 +276,7 @@ func TestSwitchDatabase(t *testing.T) { Query("ALTER DATABASE main RENAME TO postgres;"). ReplyError(pgerrcode.DuplicateDatabase, `database "postgres" already exists`) // Setup mock docker - require.NoError(t, apitest.MockDocker(utils.Docker)) + require.NoError(t, apitest.MockDocker(&utils.Docker)) defer gock.OffAll() gock.New(utils.Docker.DaemonHost()). Post("/v" + utils.Docker.ClientVersion() + "/containers/" + utils.DbId + "/restart").