From 796cee4124f2d396fcbaf3b5d072e4b0332f2b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 8 Apr 2025 13:03:07 +0200 Subject: [PATCH 1/9] feat: create a seed for an sdk in the internal package it contains: - docker config - docker context discovery --- internal/docker/config/README.md | 8 + internal/docker/config/auth.go | 215 +++++++++ internal/docker/config/auth_test.go | 232 +++++++++ internal/docker/config/config.go | 16 + internal/docker/config/config_test.go | 134 ++++++ internal/docker/config/load.go | 102 ++++ .../config/testdata/.docker/config.json | 8 + .../testdata/credhelpers-config/config.json | 17 + .../invalid-config/.docker/config.json | 3 + internal/docker/config/types.go | 65 +++ internal/docker/context/README.md | 7 + internal/docker/context/context.go | 109 +++++ internal/docker/context/context_test.go | 161 +++++++ internal/docker/context/internal/context.go | 114 +++++ .../docker/context/internal/context_test.go | 441 ++++++++++++++++++ internal/docker/context/internal/errors.go | 5 + 16 files changed, 1637 insertions(+) create mode 100644 internal/docker/config/README.md create mode 100644 internal/docker/config/auth.go create mode 100644 internal/docker/config/auth_test.go create mode 100644 internal/docker/config/config.go create mode 100644 internal/docker/config/config_test.go create mode 100644 internal/docker/config/load.go create mode 100644 internal/docker/config/testdata/.docker/config.json create mode 100644 internal/docker/config/testdata/credhelpers-config/config.json create mode 100644 internal/docker/config/testdata/invalid-config/.docker/config.json create mode 100644 internal/docker/config/types.go create mode 100644 internal/docker/context/README.md create mode 100644 internal/docker/context/context.go create mode 100644 internal/docker/context/context_test.go create mode 100644 internal/docker/context/internal/context.go create mode 100644 internal/docker/context/internal/context_test.go create mode 100644 internal/docker/context/internal/errors.go diff --git a/internal/docker/config/README.md b/internal/docker/config/README.md new file mode 100644 index 0000000000..ff881b5b90 --- /dev/null +++ b/internal/docker/config/README.md @@ -0,0 +1,8 @@ +### github.com/testcontainers/testcontainers-go/internal/docker/config +Go library to load docker CLI configs, auths, etc. with minimal deps. +So far the only deps are on the stdlib. + +This library is a fork of [github.com/cpuguy83/dockercfg](https://github.com/cpuguy83/dockercfg). + +### Usage +See the [godoc](https://godoc.org/github.com/testcontainers/testcontainers-go/internal/docker/config) for API details. diff --git a/internal/docker/config/auth.go b/internal/docker/config/auth.go new file mode 100644 index 0000000000..ee29d4ec1d --- /dev/null +++ b/internal/docker/config/auth.go @@ -0,0 +1,215 @@ +package config + +import ( + "bytes" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "io/fs" + "os/exec" + "runtime" + "strings" +) + +// This is used by the docker CLI in cases where an oauth identity token is used. +// In that case the username is stored literally as `` +// When fetching the credentials we check for this value to determine if. +const tokenUsername = "" + +// GetRegistryCredentials gets registry credentials for the passed in registry host. +// +// This will use [Load] to read registry auth details from the config. +// If the config doesn't exist, it will attempt to load registry credentials using the default credential helper for the platform. +func GetRegistryCredentials(hostname string) (string, string, error) { + cfg, err := Load() + if err != nil { + if !errors.Is(err, fs.ErrNotExist) { + return "", "", fmt.Errorf("load default config: %w", err) + } + + return GetCredentialsFromHelper("", hostname) + } + + return cfg.GetRegistryCredentials(hostname) +} + +// ResolveRegistryHost can be used to transform a docker registry host name into what is used for the docker config/cred helpers +// +// This is useful for using with containerd authorizers. +// Naturally this only transforms docker hub URLs. +func ResolveRegistryHost(host string) string { + switch host { + case "index.docker.io", "docker.io", "https://index.docker.io/v1/", "registry-1.docker.io": + return "https://index.docker.io/v1/" + } + return host +} + +// GetRegistryCredentials gets credentials, if any, for the provided hostname. +// +// Hostnames should already be resolved using [ResolveRegistryHost]. +// +// If the returned username string is empty, the password is an identity token. +func (c *Config) GetRegistryCredentials(hostname string) (string, string, error) { + h, ok := c.CredentialHelpers[hostname] + if ok { + return GetCredentialsFromHelper(h, hostname) + } + + if c.CredentialsStore != "" { + username, password, err := GetCredentialsFromHelper(c.CredentialsStore, hostname) + if err != nil { + return "", "", fmt.Errorf("get credentials from store: %w", err) + } + + if username != "" || password != "" { + return username, password, nil + } + } + + auth, ok := c.AuthConfigs[hostname] + if !ok { + return GetCredentialsFromHelper("", hostname) + } + + if auth.IdentityToken != "" { + return "", auth.IdentityToken, nil + } + + if auth.Username != "" && auth.Password != "" { + return auth.Username, auth.Password, nil + } + + return DecodeBase64Auth(auth) +} + +// DecodeBase64Auth decodes the legacy file-based auth storage from the docker CLI. +// It takes the "Auth" filed from AuthConfig and decodes that into a username and password. +// +// If "Auth" is empty, an empty user/pass will be returned, but not an error. +func DecodeBase64Auth(auth AuthConfig) (string, string, error) { + if auth.Auth == "" { + return "", "", nil + } + + decLen := base64.StdEncoding.DecodedLen(len(auth.Auth)) + decoded := make([]byte, decLen) + n, err := base64.StdEncoding.Decode(decoded, []byte(auth.Auth)) + if err != nil { + return "", "", fmt.Errorf("decode auth: %w", err) + } + + decoded = decoded[:n] + + const sep = ":" + user, pass, found := strings.Cut(string(decoded), sep) + if !found { + return "", "", fmt.Errorf("invalid auth: missing %q separator", sep) + } + + return user, pass, nil +} + +// Errors from credential helpers. +var ( + ErrCredentialsNotFound = errors.New("credentials not found in native keychain") + ErrCredentialsMissingServerURL = errors.New("no credentials server URL") +) + +//nolint:gochecknoglobals // These are used to mock exec in tests. +var ( + // execLookPath is a variable that can be used to mock exec.LookPath in tests. + execLookPath = exec.LookPath + // execCommand is a variable that can be used to mock exec.Command in tests. + execCommand = exec.Command +) + +// GetCredentialsFromHelper attempts to lookup credentials from the passed in docker credential helper. +// +// The credential helper should just be the suffix name (no "docker-credential-"). +// If the passed in helper program is empty this will look up the default helper for the platform. +// +// If the credentials are not found, no error is returned, only empty credentials. +// +// Hostnames should already be resolved using [ResolveRegistryHost] +// +// If the username string is empty, the password string is an identity token. +func GetCredentialsFromHelper(helper, hostname string) (string, string, error) { + if helper == "" { + helper, helperErr := getCredentialHelper() + if helperErr != nil { + return "", "", fmt.Errorf("get credential helper: %w", helperErr) + } + + if helper == "" { + return "", "", nil + } + } + + helper = "docker-credential-" + helper + p, err := execLookPath(helper) + if err != nil { + if !errors.Is(err, exec.ErrNotFound) { + return "", "", fmt.Errorf("look up %q: %w", helper, err) + } + + return "", "", nil + } + + var outBuf, errBuf bytes.Buffer + cmd := execCommand(p, "get") + cmd.Stdin = strings.NewReader(hostname) + cmd.Stdout = &outBuf + cmd.Stderr = &errBuf + + if err = cmd.Run(); err != nil { + out := strings.TrimSpace(outBuf.String()) + switch out { + case ErrCredentialsNotFound.Error(): + return "", "", nil + case ErrCredentialsMissingServerURL.Error(): + return "", "", ErrCredentialsMissingServerURL + default: + return "", "", fmt.Errorf("execute %q stdout: %q stderr: %q: %w", + helper, out, strings.TrimSpace(errBuf.String()), err, + ) + } + } + + var creds struct { + Username string `json:"Username"` + Secret string `json:"Secret"` + } + + if err = json.Unmarshal(outBuf.Bytes(), &creds); err != nil { + return "", "", fmt.Errorf("unmarshal credentials from: %q: %w", helper, err) + } + + // When tokenUsername is used, the output is an identity token and the username is garbage. + if creds.Username == tokenUsername { + creds.Username = "" + } + + return creds.Username, creds.Secret, nil +} + +// getCredentialHelper gets the default credential helper name for the current platform. +func getCredentialHelper() (string, error) { + switch runtime.GOOS { + case "linux": + if _, err := exec.LookPath("pass"); err != nil { + if errors.Is(err, exec.ErrNotFound) { + return "secretservice", nil + } + return "", fmt.Errorf(`look up "pass": %w`, err) + } + return "pass", nil + case "darwin": + return "osxkeychain", nil + case "windows": + return "wincred", nil + default: + return "", nil + } +} diff --git a/internal/docker/config/auth_test.go b/internal/docker/config/auth_test.go new file mode 100644 index 0000000000..57f6c1fc5b --- /dev/null +++ b/internal/docker/config/auth_test.go @@ -0,0 +1,232 @@ +package config + +import ( + "encoding/base64" + "errors" + "io" + "os" + "os/exec" + "path/filepath" + "strconv" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestDecodeBase64Auth(t *testing.T) { + for _, tc := range base64TestCases() { + t.Run(tc.name, testBase64Case(tc, func() (string, string, error) { + return DecodeBase64Auth(tc.config) + })) + } +} + +func TestConfig_GetRegistryCredentials(t *testing.T) { + t.Run("from base64 auth", func(t *testing.T) { + for _, tc := range base64TestCases() { + t.Run(tc.name, func(t *testing.T) { + config := Config{ + AuthConfigs: map[string]AuthConfig{ + "some.domain": tc.config, + }, + } + testBase64Case(tc, func() (string, string, error) { + return config.GetRegistryCredentials("some.domain") + })(t) + }) + } + }) +} + +type base64TestCase struct { + name string + config AuthConfig + expUser string + expPass string + expErr bool +} + +func base64TestCases() []base64TestCase { + cases := []base64TestCase{ + {name: "empty"}, + {name: "not base64", expErr: true, config: AuthConfig{Auth: "not base64"}}, + {name: "invalid format", expErr: true, config: AuthConfig{ + Auth: base64.StdEncoding.EncodeToString([]byte("invalid format")), + }}, + {name: "happy case", expUser: "user", expPass: "pass", config: AuthConfig{ + Auth: base64.StdEncoding.EncodeToString([]byte("user:pass")), + }}, + } + + return cases +} + +type testAuthFn func() (string, string, error) + +func testBase64Case(tc base64TestCase, authFn testAuthFn) func(t *testing.T) { + return func(t *testing.T) { + t.Helper() + + u, p, err := authFn() + if tc.expErr { + require.Error(t, err) + } else { + require.NoError(t, err) + } + + require.Equal(t, tc.expUser, u) + require.Equal(t, tc.expPass, p) + } +} + +// validateAuth is a helper function to validate the username and password for a given hostname. +func validateAuth(t *testing.T, hostname, expectedUser, expectedPass string) { + t.Helper() + + username, password, err := GetRegistryCredentials(hostname) + require.NoError(t, err) + require.Equal(t, expectedUser, username) + require.Equal(t, expectedPass, password) +} + +// validateAuthError is a helper function to validate we get an error for the given hostname. +func validateAuthError(t *testing.T, hostname string, expectedErr error) { + t.Helper() + + username, password, err := GetRegistryCredentials(hostname) + require.Error(t, err) + require.Equal(t, expectedErr.Error(), err.Error()) + require.Empty(t, username) + require.Empty(t, password) +} + +// mockExecCommand is a helper function to mock exec.LookPath and exec.Command for testing. +func mockExecCommand(t *testing.T, env ...string) { + t.Helper() + + execLookPath = func(file string) (string, error) { + switch file { + case "docker-credential-helper": + return os.Args[0], nil + case "docker-credential-error": + return "", errors.New("lookup error") + } + + return "", exec.ErrNotFound + } + + execCommand = func(name string, arg ...string) *exec.Cmd { + cmd := exec.Command(name, arg...) + cmd.Env = append(os.Environ(), "GO_WANT_HELPER_PROCESS=1") + cmd.Env = append(cmd.Env, env...) + return cmd + } + + t.Cleanup(func() { + execLookPath = exec.LookPath + execCommand = exec.Command + }) +} + +func TestGetRegistryCredentials(t *testing.T) { + t.Setenv(EnvOverrideDir, filepath.Join("testdata", "credhelpers-config")) + + t.Run("auths/user-pass", func(t *testing.T) { + validateAuth(t, "userpass.io", "user", "pass") + }) + + t.Run("auths/auth", func(t *testing.T) { + validateAuth(t, "auth.io", "auth", "authsecret") + }) + + t.Run("credsStore", func(t *testing.T) { + validateAuth(t, "credstore.io", "", "") + }) + + t.Run("credHelpers/user-pass", func(t *testing.T) { + mockExecCommand(t, `HELPER_STDOUT={"Username":"credhelper","Secret":"credhelpersecret"}`) + validateAuth(t, "helper.io", "credhelper", "credhelpersecret") + }) + + t.Run("credHelpers/token", func(t *testing.T) { + mockExecCommand(t, `HELPER_STDOUT={"Username":"", "Secret":"credhelpersecret"}`) + validateAuth(t, "helper.io", "", "credhelpersecret") + }) + + t.Run("credHelpers/not-found", func(t *testing.T) { + mockExecCommand(t, "HELPER_STDOUT="+ErrCredentialsNotFound.Error(), "HELPER_EXIT_CODE=1") + validateAuth(t, "helper.io", "", "") + }) + + t.Run("credHelpers/missing-url", func(t *testing.T) { + mockExecCommand(t, "HELPER_STDOUT="+ErrCredentialsMissingServerURL.Error(), "HELPER_EXIT_CODE=1") + validateAuthError(t, "helper.io", ErrCredentialsMissingServerURL) + }) + + t.Run("credHelpers/other-error", func(t *testing.T) { + mockExecCommand(t, "HELPER_STDOUT=output", "HELPER_STDERR=my error", "HELPER_EXIT_CODE=10") + expectedErr := errors.New(`execute "docker-credential-helper" stdout: "output" stderr: "my error": exit status 10`) + validateAuthError(t, "helper.io", expectedErr) + }) + + t.Run("credHelpers/lookup-not-found", func(t *testing.T) { + mockExecCommand(t, "HELPER_STDOUT=output", "HELPER_STDERR=my error", "HELPER_EXIT_CODE=10") + validateAuth(t, "other.io", "", "") + }) + + t.Run("credHelpers/lookup-error", func(t *testing.T) { + mockExecCommand(t, "HELPER_STDOUT=output", "HELPER_STDERR=my error", "HELPER_EXIT_CODE=10") + expectedErr := errors.New(`look up "docker-credential-error": lookup error`) + validateAuthError(t, "error.io", expectedErr) + }) + + t.Run("credHelpers/decode-json", func(t *testing.T) { + mockExecCommand(t, "HELPER_STDOUT=bad-json") + expectedErr := errors.New(`unmarshal credentials from: "docker-credential-helper": invalid character 'b' looking for beginning of value`) + validateAuthError(t, "helper.io", expectedErr) + }) + + t.Run("config/not-found", func(t *testing.T) { + t.Setenv(EnvOverrideDir, filepath.Join("testdata", "missing")) + validateAuth(t, "userpass.io", "", "") + }) +} + +// TestMain is hijacked so we can run a test helper which can write +// cleanly to stdout and stderr. +func TestMain(m *testing.M) { + pid := os.Getpid() + if os.Getenv("GO_EXEC_TEST_PID") == "" { + os.Setenv("GO_EXEC_TEST_PID", strconv.Itoa(pid)) + // Run the tests. + os.Exit(m.Run()) + } + + // Run the helper which slurps stdin and writes to stdout and stderr. + if _, err := io.Copy(io.Discard, os.Stdin); err != nil { + if _, err = os.Stderr.WriteString(err.Error()); err != nil { + panic(err) + } + } + + if out := os.Getenv("HELPER_STDOUT"); out != "" { + if _, err := os.Stdout.WriteString(out); err != nil { + panic(err) + } + } + + if out := os.Getenv("HELPER_STDERR"); out != "" { + if _, err := os.Stderr.WriteString(out); err != nil { + panic(err) + } + } + + if code := os.Getenv("HELPER_EXIT_CODE"); code != "" { + code, err := strconv.Atoi(code) + if err != nil { + panic(err) + } + + os.Exit(code) + } +} diff --git a/internal/docker/config/config.go b/internal/docker/config/config.go new file mode 100644 index 0000000000..4ba63b0b6a --- /dev/null +++ b/internal/docker/config/config.go @@ -0,0 +1,16 @@ +package config + +const ( + // EnvOverrideDir is the name of the environment variable that can be + // used to override the location of the client configuration files (~/.docker). + // + // It takes priority over the default. + EnvOverrideDir = "DOCKER_CONFIG" + + // configFileDir is the name of the directory containing the client configuration files + configFileDir = ".docker" + + // configFileName is the name of the client configuration file inside the + // config-directory. + FileName = "config.json" +) diff --git a/internal/docker/config/config_test.go b/internal/docker/config/config_test.go new file mode 100644 index 0000000000..c488a75767 --- /dev/null +++ b/internal/docker/config/config_test.go @@ -0,0 +1,134 @@ +package config + +import ( + _ "embed" + "encoding/json" + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/require" +) + +//go:embed testdata/.docker/config.json +var dockerConfig string + +func TestReadDockerConfig(t *testing.T) { + var expectedConfig Config + err := json.Unmarshal([]byte(dockerConfig), &expectedConfig) + require.NoError(t, err) + + setupDockerConfigs(t, "") + + t.Run("HOME", func(t *testing.T) { + t.Run("valid", func(t *testing.T) { + setupHome(t, "testdata") + + cfg, err := Load() + require.NoError(t, err) + require.Equal(t, expectedConfig, cfg) + }) + + t.Run("not-found", func(t *testing.T) { + setupHome(t, "testdata", "not-found") + + cfg, err := Load() + require.ErrorIs(t, err, os.ErrNotExist) + require.Empty(t, cfg) + }) + + t.Run("invalid-config", func(t *testing.T) { + setupHome(t, "testdata", "invalid-config") + + cfg, err := Load() + require.ErrorContains(t, err, "json: cannot unmarshal array") + require.Empty(t, cfg) + }) + }) + + t.Run("DOCKER_AUTH_CONFIG", func(t *testing.T) { + t.Run("valid", func(t *testing.T) { + setupHome(t, "testdata", "not-found") + t.Setenv("DOCKER_AUTH_CONFIG", dockerConfig) + + cfg, err := Load() + require.NoError(t, err) + require.Equal(t, expectedConfig, cfg) + }) + + t.Run("invalid-config", func(t *testing.T) { + setupHome(t, "testdata", "not-found") + t.Setenv("DOCKER_AUTH_CONFIG", `{"auths": []}`) + + cfg, err := Load() + require.ErrorContains(t, err, "json: cannot unmarshal array") + require.Empty(t, cfg) + }) + }) + + t.Run(EnvOverrideDir, func(t *testing.T) { + t.Run("valid", func(t *testing.T) { + setupHome(t, "testdata", "not-found") + t.Setenv(EnvOverrideDir, filepath.Join("testdata", ".docker")) + + cfg, err := Load() + require.NoError(t, err) + require.Equal(t, expectedConfig, cfg) + }) + + t.Run("invalid-config", func(t *testing.T) { + setupHome(t, "testdata", "not-found") + t.Setenv(EnvOverrideDir, filepath.Join("testdata", "invalid-config", ".docker")) + + cfg, err := Load() + require.ErrorContains(t, err, "json: cannot unmarshal array") + require.Empty(t, cfg) + }) + }) +} + +func TestDir(t *testing.T) { + setupDockerConfigs(t, "") + + t.Run("HOME", func(t *testing.T) { + t.Run("valid", func(t *testing.T) { + tmpDir := t.TempDir() + setupHome(t, tmpDir) + + dir, err := Dir() + require.NoError(t, err) + require.Equal(t, filepath.Join(tmpDir, ".docker"), dir) + }) + }) + + t.Run(EnvOverrideDir, func(t *testing.T) { + t.Run("valid", func(t *testing.T) { + tmpDir := t.TempDir() + setupDockerConfigs(t, tmpDir) + + dir, err := Dir() + require.NoError(t, err) + require.Equal(t, tmpDir, dir) + }) + }) +} + +// setupHome sets the user's home directory to the given path +// and unsets the DOCKER_CONFIG and DOCKER_AUTH_CONFIG environment variables. +func setupHome(t *testing.T, dirs ...string) { + t.Helper() + + dir := filepath.Join(dirs...) + t.Setenv("HOME", dir) + t.Setenv("USERPROFILE", dir) // Windows +} + +// setupHome sets the user's home directory to the given path +// and unsets the DOCKER_CONFIG and DOCKER_AUTH_CONFIG environment variables. +func setupDockerConfigs(t *testing.T, dirs ...string) { + t.Helper() + + dir := filepath.Join(dirs...) + t.Setenv("DOCKER_AUTH_CONFIG", dir) + t.Setenv(EnvOverrideDir, dir) +} diff --git a/internal/docker/config/load.go b/internal/docker/config/load.go new file mode 100644 index 0000000000..041f8959a1 --- /dev/null +++ b/internal/docker/config/load.go @@ -0,0 +1,102 @@ +package config + +import ( + "encoding/json" + "errors" + "fmt" + "os" + "os/user" + "path/filepath" + "runtime" +) + +// getHomeDir returns the home directory of the current user with the help of +// environment variables depending on the target operating system. +// Returned path should be used with "path/filepath" to form new paths. +// +// On non-Windows platforms, it falls back to nss lookups, if the home +// directory cannot be obtained from environment-variables. +// +// If linking statically with cgo enabled against glibc, ensure the +// osusergo build tag is used. +// +// If needing to do nss lookups, do not disable cgo or set osusergo. +// +// getHomeDir is a copy of [pkg/homedir.Get] to prevent adding docker/docker +// as dependency for consumers that only need to read the config-file. +// +// [pkg/homedir.Get]: https://pkg.go.dev/github.com/docker/docker@v26.1.4+incompatible/pkg/homedir#Get +func getHomeDir() string { + home, _ := os.UserHomeDir() + if home == "" && runtime.GOOS != "windows" { + if u, err := user.Current(); err == nil { + return u.HomeDir + } + } + return home +} + +// getConfigLocation returns both the directory and full path for the config file. +// It handles all path resolution logic in one place. +func getConfigLocation() (dir string, configPath string, err error) { + dir = os.Getenv(EnvOverrideDir) + if dir == "" { + home := getHomeDir() + if home == "" { + return "", "", errors.New("user home directory not determined") + } + dir = filepath.Join(home, configFileDir) + } + configPath = filepath.Join(dir, FileName) + + return dir, configPath, nil +} + +// Dir returns the directory the configuration file is stored in. +func Dir() (string, error) { + dir, _, err := getConfigLocation() + return dir, err +} + +// Filepath returns the path to the docker cli config file. +func Filepath() (string, error) { + _, configPath, err := getConfigLocation() + return configPath, err +} + +// Load returns the docker config file. It will internally check, in this particular order: +// 1. the DOCKER_AUTH_CONFIG environment variable, unmarshalling it into a Config +// 2. the DOCKER_CONFIG environment variable, as the path to the config file +// 3. else it will load the default config file, which is ~/.docker/config.json +func Load() (Config, error) { + if env := os.Getenv("DOCKER_AUTH_CONFIG"); env != "" { + var cfg Config + if err := json.Unmarshal([]byte(env), &cfg); err != nil { + return Config{}, fmt.Errorf("unmarshal DOCKER_AUTH_CONFIG: %w", err) + } + return cfg, nil + } + + var cfg Config + p, err := Filepath() + if err != nil { + return cfg, fmt.Errorf("config path: %w", err) + } + + return cfg, LoadFromFilepath(p, &cfg) +} + +// LoadFromFilepath loads config from the specified path into cfg. +func LoadFromFilepath(configPath string, cfg *Config) error { + f, err := os.Open(configPath) + if err != nil { + return fmt.Errorf("open config: %w", err) + } + defer f.Close() + + if err = json.NewDecoder(f).Decode(&cfg); err != nil { + return fmt.Errorf("decode config: %w", err) + } + + return nil +} diff --git a/internal/docker/config/testdata/.docker/config.json b/internal/docker/config/testdata/.docker/config.json new file mode 100644 index 0000000000..5ce110622d --- /dev/null +++ b/internal/docker/config/testdata/.docker/config.json @@ -0,0 +1,8 @@ +{ + "auths": { + "https://index.docker.io/v1/": {}, + "https://example.com": {}, + "https://my.private.registry": {} + }, + "credsStore": "desktop" +} diff --git a/internal/docker/config/testdata/credhelpers-config/config.json b/internal/docker/config/testdata/credhelpers-config/config.json new file mode 100644 index 0000000000..653a253195 --- /dev/null +++ b/internal/docker/config/testdata/credhelpers-config/config.json @@ -0,0 +1,17 @@ +{ + "auths": { + "userpass.io": { + "username": "user", + "password": "pass" + }, + "auth.io": { + "auth": "YXV0aDphdXRoc2VjcmV0" + } + }, + "credHelpers": { + "helper.io": "helper", + "other.io": "other", + "error.io": "error" + }, + "credsStore": "desktop" + } diff --git a/internal/docker/config/testdata/invalid-config/.docker/config.json b/internal/docker/config/testdata/invalid-config/.docker/config.json new file mode 100644 index 0000000000..f0f444f355 --- /dev/null +++ b/internal/docker/config/testdata/invalid-config/.docker/config.json @@ -0,0 +1,3 @@ +{ + "auths": [] +} diff --git a/internal/docker/config/types.go b/internal/docker/config/types.go new file mode 100644 index 0000000000..a371575461 --- /dev/null +++ b/internal/docker/config/types.go @@ -0,0 +1,65 @@ +package config + +// Config represents the on disk format of the docker CLI's config file. +type Config struct { + AuthConfigs map[string]AuthConfig `json:"auths"` + HTTPHeaders map[string]string `json:"HttpHeaders,omitempty"` + PsFormat string `json:"psFormat,omitempty"` + ImagesFormat string `json:"imagesFormat,omitempty"` + NetworksFormat string `json:"networksFormat,omitempty"` + PluginsFormat string `json:"pluginsFormat,omitempty"` + VolumesFormat string `json:"volumesFormat,omitempty"` + StatsFormat string `json:"statsFormat,omitempty"` + DetachKeys string `json:"detachKeys,omitempty"` + CredentialsStore string `json:"credsStore,omitempty"` + CredentialHelpers map[string]string `json:"credHelpers,omitempty"` + Filename string `json:"-"` // Note: for internal use only. + ServiceInspectFormat string `json:"serviceInspectFormat,omitempty"` + ServicesFormat string `json:"servicesFormat,omitempty"` + TasksFormat string `json:"tasksFormat,omitempty"` + SecretFormat string `json:"secretFormat,omitempty"` + ConfigFormat string `json:"configFormat,omitempty"` + NodesFormat string `json:"nodesFormat,omitempty"` + PruneFilters []string `json:"pruneFilters,omitempty"` + Proxies map[string]ProxyConfig `json:"proxies,omitempty"` + Experimental string `json:"experimental,omitempty"` + StackOrchestrator string `json:"stackOrchestrator,omitempty"` + Kubernetes *KubernetesConfig `json:"kubernetes,omitempty"` + CurrentContext string `json:"currentContext,omitempty"` + CLIPluginsExtraDirs []string `json:"cliPluginsExtraDirs,omitempty"` + Aliases map[string]string `json:"aliases,omitempty"` +} + +// ProxyConfig contains proxy configuration settings. +type ProxyConfig struct { + HTTPProxy string `json:"httpProxy,omitempty"` + HTTPSProxy string `json:"httpsProxy,omitempty"` + NoProxy string `json:"noProxy,omitempty"` + FTPProxy string `json:"ftpProxy,omitempty"` +} + +// AuthConfig contains authorization information for connecting to a Registry. +type AuthConfig struct { + Username string `json:"username,omitempty"` + Password string `json:"password,omitempty"` + Auth string `json:"auth,omitempty"` + + // Email is an optional value associated with the username. + // This field is deprecated and will be removed in a later + // version of docker. + Email string `json:"email,omitempty"` + + ServerAddress string `json:"serveraddress,omitempty"` + + // IdentityToken is used to authenticate the user and get + // an access token for the registry. + IdentityToken string `json:"identitytoken,omitempty"` + + // RegistryToken is a bearer token to be sent to a registry. + RegistryToken string `json:"registrytoken,omitempty"` +} + +// KubernetesConfig contains Kubernetes orchestrator settings. +type KubernetesConfig struct { + AllNamespaces string `json:"allNamespaces,omitempty"` +} diff --git a/internal/docker/context/README.md b/internal/docker/context/README.md new file mode 100644 index 0000000000..603a160041 --- /dev/null +++ b/internal/docker/context/README.md @@ -0,0 +1,7 @@ +### github.com/testcontainers/testcontainers-go/internal/docker/context +Go library to load docker CLI context. + +This library is extracted from [github.com/docker/cli](https://github.com/docker/cli/blob/master/cli/context/store/metadatastore.go) + +### Usage +See the [godoc](https://godoc.org/github.com/testcontainers/testcontainers-go/internal/docker/context) for API details. diff --git a/internal/docker/context/context.go b/internal/docker/context/context.go new file mode 100644 index 0000000000..f9042268cc --- /dev/null +++ b/internal/docker/context/context.go @@ -0,0 +1,109 @@ +package context + +// The code in this file has been extracted from https://github.com/docker/cli, +// more especifically from https://github.com/docker/cli/blob/master/cli/context/store/metadatastore.go +// with the goal of not consuming the CLI package and all its dependencies. + +import ( + "fmt" + "os" + "path/filepath" + + "github.com/testcontainers/testcontainers-go/internal/docker/config" + "github.com/testcontainers/testcontainers-go/internal/docker/context/internal" +) + +const ( + // DefaultContextName is the name reserved for the default context (config & env based) + DefaultContextName = "default" + + // EnvOverrideContext is the name of the environment variable that can be + // used to override the context to use. If set, it overrides the context + // that's set in the CLI's configuration file, but takes no effect if the + // "DOCKER_HOST" env-var is set (which takes precedence. + EnvOverrideContext = "DOCKER_CONTEXT" + + // EnvOverrideHost is the name of the environment variable that can be used + // to override the default host to connect to (DefaultDockerHost). + // + // This env-var is read by FromEnv and WithHostFromEnv and when set to a + // non-empty value, takes precedence over the default host (which is platform + // specific), or any host already set. + EnvOverrideHost = "DOCKER_HOST" + + // contextsDir is the name of the directory containing the contexts + contextsDir = "contexts" + + // metadataDir is the name of the directory containing the metadata + metadataDir = "meta" +) + +// ErrDockerHostNotSet is the error returned when the Docker host is not set in the Docker context +var ErrDockerHostNotSet = internal.ErrDockerHostNotSet + +// getContextFromEnv returns the context name from the environment variables. +func getContextFromEnv() string { + if os.Getenv(EnvOverrideHost) != "" { + return DefaultContextName + } + + if ctxName := os.Getenv(EnvOverrideContext); ctxName != "" { + return ctxName + } + + return "" +} + +// Current returns the current context name, based on +// environment variables and the cli configuration file. It does not +// validate if the given context exists or if it's valid. +// +// If the current context is not found, it returns the default context name. +func Current() (string, error) { + // Check env vars first (clearer precedence) + if ctx := getContextFromEnv(); ctx != "" { + return ctx, nil + } + + // Then check config + cfg, err := config.Load() + if err != nil { + if os.IsNotExist(err) { + return DefaultContextName, nil + } + return "", fmt.Errorf("load docker config: %w", err) + } + + if cfg.CurrentContext != "" { + return cfg.CurrentContext, nil + } + + return DefaultContextName, nil +} + +// CurrentDockerHost returns the Docker host from the current Docker context. +// For that, it traverses the directory structure of the Docker configuration directory, +// looking for the current context and its Docker endpoint. +func CurrentDockerHost() (string, error) { + current, err := Current() + if err != nil { + return "", fmt.Errorf("current context: %w", err) + } + + metaRoot, err := metaRoot() + if err != nil { + return "", fmt.Errorf("meta root: %w", err) + } + + return internal.ExtractDockerHost(current, metaRoot) +} + +// metaRoot returns the root directory of the Docker context metadata. +func metaRoot() (string, error) { + dir, err := config.Dir() + if err != nil { + return "", fmt.Errorf("docker config dir: %w", err) + } + + return filepath.Join(dir, contextsDir, metadataDir), nil +} diff --git a/internal/docker/context/context_test.go b/internal/docker/context/context_test.go new file mode 100644 index 0000000000..9f39bb89da --- /dev/null +++ b/internal/docker/context/context_test.go @@ -0,0 +1,161 @@ +package context + +import ( + "fmt" + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/testcontainers/testcontainers-go/internal/docker/config" + "github.com/testcontainers/testcontainers-go/internal/docker/context/internal" +) + +func TestCurrent(t *testing.T) { + t.Run("current/1", func(tt *testing.T) { + setupDockerContexts(tt, 1, 3) // current context is context1 + + current, err := Current() + require.NoError(t, err) + require.Equal(t, "context1", current) + }) + + t.Run("current/auth-error", func(tt *testing.T) { + tt.Setenv("DOCKER_AUTH_CONFIG", "invalid-auth-config") + + current, err := Current() + require.Error(t, err) + require.Empty(t, current) + }) + + t.Run("current/override-host", func(tt *testing.T) { + tt.Setenv("DOCKER_HOST", "tcp://127.0.0.1:2") + + current, err := Current() + require.NoError(t, err) + require.Equal(t, DefaultContextName, current) + }) + + t.Run("current/override-context", func(tt *testing.T) { + setupDockerContexts(tt, 1, 3) // current context is context1 + tt.Setenv("DOCKER_CONTEXT", "context2") // override the current context + + current, err := Current() + require.NoError(t, err) + require.Equal(t, "context2", current) + }) + + t.Run("current/empty-context", func(tt *testing.T) { + contextCount := 3 + setupDockerContexts(tt, contextCount+1, contextCount) // current context is the empty one + + current, err := Current() + require.NoError(t, err) + require.Equal(t, DefaultContextName, current) + }) +} + +func TestCurrentDockerHost(t *testing.T) { + t.Run("docker-context/1", func(tt *testing.T) { + setupDockerContexts(tt, 1, 3) // current context is context1 + + host, err := CurrentDockerHost() + require.NoError(t, err) + require.Equal(t, "tcp://127.0.0.1:1", host) // from context1 + }) + + t.Run("docker-context/2", func(tt *testing.T) { + setupDockerContexts(tt, 2, 3) // current context is context2 + + host, err := CurrentDockerHost() + require.NoError(t, err) + require.Equal(t, "tcp://127.0.0.1:2", host) // from context2 + }) + + t.Run("docker-context/not-found", func(tt *testing.T) { + setupDockerContexts(tt, 1, 1) // current context is context1 + + metaRoot, err := metaRoot() + require.NoError(t, err) + + host, err := internal.ExtractDockerHost("context-not-found", metaRoot) + require.Error(t, err) + require.Empty(t, host) + }) +} + +// setupDockerContexts creates a temporary directory structure for testing the Docker context functions. +// It creates the following structure, where $i is the index of the context, starting from 1: +// - $HOME/.docker +// - config.json +// - contexts +// - meta +// - context$i +// - meta.json +// +// The config.json file contains the current context, and the meta.json files contain the metadata for each context. +// It generates the specified number of contexts, setting the current context to the one specified by currentContextIndex. +// Finally it always adds a context with an empty host, to validate the behavior when the host is not set. +// This empty context can be used setting the currentContextIndex to a number greater than contextsCount. +func setupDockerContexts(t *testing.T, currentContextIndex int, contextsCount int) { + t.Helper() + + tmpDir := t.TempDir() + t.Setenv("HOME", tmpDir) + t.Setenv("USERPROFILE", tmpDir) // Windows support + + configDir, err := config.Dir() + require.NoError(t, err) + + tempMkdirAll(t, configDir) + + configJSON := filepath.Join(configDir, config.FileName) + + const baseContext = "context" + + // default config.json with no current context + configBytes := `{"currentContext": ""}` + + if currentContextIndex <= contextsCount { + configBytes = fmt.Sprintf(`{ + "currentContext": "%s%d" +}`, baseContext, currentContextIndex) + } + + err = os.WriteFile(configJSON, []byte(configBytes), 0o644) + require.NoError(t, err) + + metaDir, err := metaRoot() + require.NoError(t, err) + + tempMkdirAll(t, metaDir) + + // first index is 1 + for i := 1; i <= contextsCount; i++ { + createDockerContext(t, metaDir, baseContext, i, fmt.Sprintf("tcp://127.0.0.1:%d", i)) + } + + // add a context with no host + createDockerContext(t, metaDir, baseContext, contextsCount+1, "") +} + +// createDockerContext creates a Docker context with the specified name and host +func createDockerContext(t *testing.T, metaDir, baseContext string, index int, host string) { + t.Helper() + + contextDir := filepath.Join(metaDir, fmt.Sprintf("context%d", index)) + tempMkdirAll(t, contextDir) + + context := fmt.Sprintf(`{"Name":"%s%d","Metadata":{"Description":"Testcontainers Go %d"},"Endpoints":{"docker":{"Host":"%s","SkipTLSVerify":false}}}`, + baseContext, index, index, host) + err := os.WriteFile(filepath.Join(contextDir, "meta.json"), []byte(context), 0o644) + require.NoError(t, err) +} + +func tempMkdirAll(t *testing.T, dir string) { + t.Helper() + + err := os.MkdirAll(dir, 0o755) + require.NoError(t, err) +} diff --git a/internal/docker/context/internal/context.go b/internal/docker/context/internal/context.go new file mode 100644 index 0000000000..2fa07b4ec1 --- /dev/null +++ b/internal/docker/context/internal/context.go @@ -0,0 +1,114 @@ +package internal + +import ( + "encoding/json" + "errors" + "fmt" + "os" + "path/filepath" +) + +const metaFile = "meta.json" + +// dockerContext represents the metadata stored for a context +type dockerContext struct { + Description string + Fields map[string]any +} + +// endpoint represents a Docker endpoint configuration +type endpoint struct { + Host string `json:",omitempty"` + SkipTLSVerify bool +} + +// metadata represents a complete context configuration +type metadata struct { + Name string `json:",omitempty"` + Context *dockerContext `json:"metadata,omitempty"` + Endpoints map[string]*endpoint `json:"endpoints,omitempty"` +} + +// store manages Docker context metadata files +type store struct { + root string +} + +// ExtractDockerHost extracts the Docker host from the given Docker context +func ExtractDockerHost(contextName string, metaRoot string) (string, error) { + s := &store{root: metaRoot} + + contexts, err := s.list() + if err != nil { + return "", fmt.Errorf("list contexts: %w", err) + } + + for _, ctx := range contexts { + if ctx.Name == contextName { + ep, ok := ctx.Endpoints["docker"] + if !ok || ep == nil || ep.Host == "" { // Check all conditions that should trigger the error + return "", ErrDockerHostNotSet + } + return ep.Host, nil + } + } + return "", ErrDockerHostNotSet +} + +func (s *store) list() ([]*metadata, error) { + dirs, err := s.findMetadataDirs(s.root) + if err != nil { + if errors.Is(err, os.ErrNotExist) { + return nil, nil + } + return nil, fmt.Errorf("find contexts: %w", err) + } + + var contexts []*metadata + for _, dir := range dirs { + ctx, err := s.load(dir) + if err != nil { + if errors.Is(err, os.ErrNotExist) { + continue + } + return nil, fmt.Errorf("load context %s: %w", dir, err) + } + contexts = append(contexts, ctx) + } + return contexts, nil +} + +func (s *store) load(dir string) (*metadata, error) { + data, err := os.ReadFile(filepath.Join(dir, metaFile)) + if err != nil { + return nil, err + } + + var meta metadata + if err := json.Unmarshal(data, &meta); err != nil { + return nil, fmt.Errorf("parse metadata: %w", err) + } + return &meta, nil +} + +func (s *store) findMetadataDirs(root string) ([]string, error) { + var dirs []string + err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + if info.IsDir() { + if hasMetaFile(path) { + dirs = append(dirs, path) + return filepath.SkipDir // don't recurse into context dirs + } + } + return nil + }) + return dirs, err +} + +func hasMetaFile(dir string) bool { + info, err := os.Stat(filepath.Join(dir, metaFile)) + return err == nil && !info.IsDir() +} diff --git a/internal/docker/context/internal/context_test.go b/internal/docker/context/internal/context_test.go new file mode 100644 index 0000000000..9b6ebc46c2 --- /dev/null +++ b/internal/docker/context/internal/context_test.go @@ -0,0 +1,441 @@ +package internal + +import ( + "encoding/json" + "os" + "path/filepath" + "runtime" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestExtractDockerHost(t *testing.T) { + t.Run("context-found-with-host", func(t *testing.T) { + host := requireDockerHost(t, "test-context", metadata{ + Name: "test-context", + Endpoints: map[string]*endpoint{ + "docker": {Host: "tcp://1.2.3.4:2375"}, + }, + }) + require.Equal(t, "tcp://1.2.3.4:2375", host) + }) + + t.Run("context-found-without-host", func(t *testing.T) { + requireDockerHostError(t, "test-context", metadata{ + Name: "test-context", + Endpoints: map[string]*endpoint{ + "docker": {}, + }, + }, ErrDockerHostNotSet) + }) + + t.Run("context-not-found", func(t *testing.T) { + requireDockerHostError(t, "missing", metadata{ + Name: "other-context", + Endpoints: map[string]*endpoint{ + "docker": {Host: "tcp://1.2.3.4:2375"}, + }, + }, ErrDockerHostNotSet) + }) + + t.Run("nested-context-found", func(t *testing.T) { + host := requireDockerHostInPath(t, "nested-context", "parent/nested-context", metadata{ + Name: "nested-context", + Endpoints: map[string]*endpoint{ + "docker": {Host: "tcp://1.2.3.4:2375"}, + }, + }) + require.Equal(t, "tcp://1.2.3.4:2375", host) + }) +} + +func TestStore_load(t *testing.T) { + t.Run("success", func(t *testing.T) { + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + want := metadata{ + Name: "test", + Context: &dockerContext{ + Description: "test context", + Fields: map[string]any{"test": true}, + }, + Endpoints: map[string]*endpoint{ + "docker": { + Host: "tcp://localhost:2375", + SkipTLSVerify: true, + }, + }, + } + + contextDir := filepath.Join(tmpDir, "test") + setupTestContext(t, tmpDir, "test", want) + + got, err := s.load(contextDir) + require.NoError(t, err) + require.Equal(t, want.Name, got.Name) + require.Equal(t, want.Context.Description, got.Context.Description) + require.Equal(t, want.Context.Fields, got.Context.Fields) + require.Equal(t, want.Endpoints["docker"].Host, got.Endpoints["docker"].Host) + require.Equal(t, want.Endpoints["docker"].SkipTLSVerify, got.Endpoints["docker"].SkipTLSVerify) + }) + + t.Run("directory-does-not-exist", func(t *testing.T) { + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + nonExistentDir := filepath.Join(tmpDir, "does-not-exist") + _, err := s.load(nonExistentDir) + require.Error(t, err) + require.True(t, os.IsNotExist(err)) + }) + + t.Run("meta-json-does-not-exist", func(t *testing.T) { + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + contextDir := filepath.Join(tmpDir, "empty") + require.NoError(t, os.MkdirAll(contextDir, 0o755)) + + _, err := s.load(contextDir) + require.Error(t, err) + require.True(t, os.IsNotExist(err)) + }) + + t.Run("invalid-json", func(t *testing.T) { + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + contextDir := filepath.Join(tmpDir, "invalid") + require.NoError(t, os.MkdirAll(contextDir, 0o755)) + require.NoError(t, os.WriteFile( + filepath.Join(contextDir, metaFile), + []byte("invalid json"), + 0o644, + )) + + _, err := s.load(contextDir) + require.Error(t, err) + require.Contains(t, err.Error(), "parse metadata") + }) + + t.Run("permission-denied", func(t *testing.T) { + if runtime.GOOS == "windows" { + t.Skip("permission tests not supported on Windows") + return + } + + if os.Getuid() == 0 { + t.Skip("cannot test permission denied as root") + } + + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + contextDir := filepath.Join(tmpDir, "no-access") + require.NoError(t, os.MkdirAll(contextDir, 0o755)) + + meta := metadata{ + Name: "test", + Endpoints: map[string]*endpoint{ + "docker": {Host: "tcp://localhost:2375"}, + }, + } + setupTestContext(t, tmpDir, "no-access", meta) + + // Remove read permissions + require.NoError(t, os.Chmod(filepath.Join(contextDir, metaFile), 0o000)) + + _, err := s.load(contextDir) + require.Error(t, err) + require.Contains(t, err.Error(), "permission denied") + }) + + t.Run("windows-file-access-error", func(t *testing.T) { + if runtime.GOOS != "windows" { + t.Skip("Windows-specific test") + return + } + + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + contextDir := filepath.Join(tmpDir, "locked") + require.NoError(t, os.MkdirAll(contextDir, 0o755)) + + // Create and lock the file + f, err := os.Create(filepath.Join(contextDir, metaFile)) + require.NoError(t, err) + require.NoError(t, f.Close()) + + // Try to load while file is locked + f2, err := os.OpenFile(filepath.Join(contextDir, metaFile), os.O_RDWR, 0o644) + require.NoError(t, err) + defer f2.Close() + + _, err = s.load(contextDir) + require.Error(t, err) + }) + + t.Run("empty-but-valid-json", func(t *testing.T) { + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + contextDir := filepath.Join(tmpDir, "empty") + require.NoError(t, os.MkdirAll(contextDir, 0o755)) + require.NoError(t, os.WriteFile( + filepath.Join(contextDir, metaFile), + []byte("{}"), + 0o644, + )) + + got, err := s.load(contextDir) + require.NoError(t, err) + require.Empty(t, got.Name) + require.Nil(t, got.Context) + require.Empty(t, got.Endpoints) + }) + + t.Run("partial-metadata", func(t *testing.T) { + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + contextDir := filepath.Join(tmpDir, "partial") + require.NoError(t, os.MkdirAll(contextDir, 0o755)) + + // Only name and docker endpoint, no context metadata + meta := metadata{ + Name: "test", + Endpoints: map[string]*endpoint{ + "docker": {Host: "tcp://localhost:2375"}, + }, + } + setupTestContext(t, tmpDir, "partial", meta) + + got, err := s.load(contextDir) + require.NoError(t, err) + require.Equal(t, "test", got.Name) + require.Nil(t, got.Context) + require.Equal(t, "tcp://localhost:2375", got.Endpoints["docker"].Host) + }) +} + +func TestStore_list(t *testing.T) { + t.Run("success", func(t *testing.T) { + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + // Setup test contexts + contexts := map[string]metadata{ + "context1": { + Name: "context1", + Endpoints: map[string]*endpoint{ + "docker": {Host: "tcp://1.2.3.4:2375"}, + }, + }, + "nested/context2": { + Name: "context2", + Endpoints: map[string]*endpoint{ + "docker": {Host: "unix:///var/run/docker.sock"}, + }, + }, + } + + for path, meta := range contexts { + setupTestContext(t, tmpDir, path, meta) + } + + list, err := s.list() + require.NoError(t, err) + require.Len(t, list, 2) + }) + + t.Run("root-does-not-exist", func(t *testing.T) { + tmpDir := t.TempDir() + nonExistentDir := filepath.Join(tmpDir, "does-not-exist") + s := &store{root: nonExistentDir} + + list, err := s.list() + require.NoError(t, err) // Should return empty list, not error + require.Empty(t, list) + }) + + t.Run("corrupted-metadata-file", func(t *testing.T) { + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + // Create a context directory with invalid JSON + contextDir := filepath.Join(tmpDir, "invalid") + require.NoError(t, os.MkdirAll(contextDir, 0o755)) + require.NoError(t, os.WriteFile( + filepath.Join(contextDir, metaFile), + []byte("invalid json"), + 0o644, + )) + + _, err := s.list() + require.Error(t, err) + require.Contains(t, err.Error(), "parse metadata") + }) + + t.Run("mixed-valid-and-invalid-contexts", func(t *testing.T) { + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + // Setup one valid context + validMeta := metadata{ + Name: "valid", + Endpoints: map[string]*endpoint{ + "docker": {Host: "tcp://1.2.3.4:2375"}, + }, + } + setupTestContext(t, tmpDir, "valid", validMeta) + + // Setup an invalid context + invalidDir := filepath.Join(tmpDir, "invalid") + require.NoError(t, os.MkdirAll(invalidDir, 0o755)) + require.NoError(t, os.WriteFile( + filepath.Join(invalidDir, metaFile), + []byte("invalid json"), + 0o644, + )) + + _, err := s.list() + require.Error(t, err) + require.Contains(t, err.Error(), "parse metadata") + }) + + t.Run("permission-denied", func(t *testing.T) { + if runtime.GOOS == "windows" { + t.Skip("permission tests not supported on Windows") + return + } + + if os.Getuid() == 0 { + t.Skip("cannot test permission denied as root") + } + + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + // Create a context with no read permissions + contextDir := filepath.Join(tmpDir, "no-access") + require.NoError(t, os.MkdirAll(contextDir, 0o755)) + + meta := metadata{ + Name: "test", + Endpoints: map[string]*endpoint{ + "docker": {Host: "tcp://1.2.3.4:2375"}, + }, + } + setupTestContext(t, tmpDir, "no-access", meta) + + // Remove read permissions + require.NoError(t, os.Chmod(filepath.Join(contextDir, metaFile), 0o000)) + + list, err := s.list() + require.Error(t, err) + require.Contains(t, err.Error(), "permission denied") + require.Empty(t, list) + }) + + t.Run("windows-file-access-error", func(t *testing.T) { + if runtime.GOOS != "windows" { + t.Skip("Windows-specific test") + return + } + + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + contextDir := filepath.Join(tmpDir, "locked") + require.NoError(t, os.MkdirAll(contextDir, 0o755)) + + // Create and lock the file + f, err := os.Create(filepath.Join(contextDir, metaFile)) + require.NoError(t, err) + require.NoError(t, f.Close()) + + // Try to list while file is locked + f2, err := os.OpenFile(filepath.Join(contextDir, metaFile), os.O_RDWR, 0o644) + require.NoError(t, err) + defer f2.Close() + + list, err := s.list() + require.Error(t, err) + require.Empty(t, list) + }) + + t.Run("empty-but-valid-context-file", func(t *testing.T) { + tmpDir := t.TempDir() + s := &store{root: tmpDir} + + // Create a context with empty but valid JSON + contextDir := filepath.Join(tmpDir, "empty") + require.NoError(t, os.MkdirAll(contextDir, 0o755)) + require.NoError(t, os.WriteFile( + filepath.Join(contextDir, metaFile), + []byte("{}"), + 0o644, + )) + + list, err := s.list() + require.NoError(t, err) + require.Len(t, list, 1) + require.Empty(t, list[0].Name) + require.Empty(t, list[0].Endpoints) + }) +} + +// requireDockerHost creates a context and verifies host extraction succeeds +func requireDockerHost(t *testing.T, contextName string, meta metadata) string { + t.Helper() + tmpDir := t.TempDir() + + setupTestContext(t, tmpDir, contextName, meta) + + host, err := ExtractDockerHost(contextName, tmpDir) + require.NoError(t, err) + return host +} + +// requireDockerHostInPath creates a context at a specific path and verifies host extraction +func requireDockerHostInPath(t *testing.T, contextName, path string, meta metadata) string { + t.Helper() + tmpDir := t.TempDir() + + setupTestContext(t, tmpDir, path, meta) + + host, err := ExtractDockerHost(contextName, tmpDir) + require.NoError(t, err) + return host +} + +// requireDockerHostError creates a context and verifies expected error +func requireDockerHostError(t *testing.T, contextName string, meta metadata, wantErr error) { + t.Helper() + tmpDir := t.TempDir() + + setupTestContext(t, tmpDir, contextName, meta) + + _, err := ExtractDockerHost(contextName, tmpDir) + require.ErrorIs(t, err, wantErr) +} + +// setupTestContext creates a test context file in the specified location +func setupTestContext(t *testing.T, root, relPath string, meta metadata) { + t.Helper() + + contextDir := filepath.Join(root, relPath) + require.NoError(t, os.MkdirAll(contextDir, 0o755)) + + data, err := json.Marshal(meta) + require.NoError(t, err) + + require.NoError(t, os.WriteFile( + filepath.Join(contextDir, metaFile), + data, + 0o644, + )) +} diff --git a/internal/docker/context/internal/errors.go b/internal/docker/context/internal/errors.go new file mode 100644 index 0000000000..479bdc3e74 --- /dev/null +++ b/internal/docker/context/internal/errors.go @@ -0,0 +1,5 @@ +package internal + +import "errors" + +var ErrDockerHostNotSet = errors.New("docker host not set in Docker context") From bd7968388fcbb2f7dc0bdfc1172d726c7a775f98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 8 Apr 2025 13:05:25 +0200 Subject: [PATCH 2/9] chore: wrap errors --- internal/docker/context/internal/context.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/docker/context/internal/context.go b/internal/docker/context/internal/context.go index 2fa07b4ec1..7612fcd25b 100644 --- a/internal/docker/context/internal/context.go +++ b/internal/docker/context/internal/context.go @@ -61,7 +61,7 @@ func (s *store) list() ([]*metadata, error) { if errors.Is(err, os.ErrNotExist) { return nil, nil } - return nil, fmt.Errorf("find contexts: %w", err) + return nil, fmt.Errorf("find metadata dirs: %w", err) } var contexts []*metadata @@ -81,7 +81,7 @@ func (s *store) list() ([]*metadata, error) { func (s *store) load(dir string) (*metadata, error) { data, err := os.ReadFile(filepath.Join(dir, metaFile)) if err != nil { - return nil, err + return nil, fmt.Errorf("read metadata: %w", err) } var meta metadata @@ -95,7 +95,7 @@ func (s *store) findMetadataDirs(root string) ([]string, error) { var dirs []string err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error { if err != nil { - return err + return fmt.Errorf("walk: %w", err) } if info.IsDir() { if hasMetaFile(path) { @@ -105,7 +105,7 @@ func (s *store) findMetadataDirs(root string) ([]string, error) { } return nil }) - return dirs, err + return dirs, fmt.Errorf("walk metadata dirs: %w", err) } func hasMetaFile(dir string) bool { From 2e7a830f0dc7f751899267c2ae6b876dac6eaf8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 8 Apr 2025 13:52:20 +0200 Subject: [PATCH 3/9] chore: use new dockerconfig package instead of cpuguy83's --- container.go | 4 +- docker_auth.go | 38 +--- docker_auth_test.go | 221 +------------------- docs/features/docker_auth.md | 3 - generic.go | 3 +- go.mod | 1 - go.sum | 2 - testdata/.docker/config.json | 8 - testdata/invalid-config/.docker/config.json | 3 - 9 files changed, 16 insertions(+), 267 deletions(-) delete mode 100644 testdata/.docker/config.json delete mode 100644 testdata/invalid-config/.docker/config.json diff --git a/container.go b/container.go index 9a03eecacc..ff654a0501 100644 --- a/container.go +++ b/container.go @@ -11,7 +11,6 @@ import ( "strings" "time" - "github.com/cpuguy83/dockercfg" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/network" @@ -23,6 +22,7 @@ import ( tcexec "github.com/testcontainers/testcontainers-go/exec" "github.com/testcontainers/testcontainers-go/internal/core" + dockerconfig "github.com/testcontainers/testcontainers-go/internal/docker/config" "github.com/testcontainers/testcontainers-go/log" "github.com/testcontainers/testcontainers-go/wait" ) @@ -390,7 +390,7 @@ func getAuthConfigsFromDockerfile(c *ContainerRequest) (map[string]registry.Auth for _, image := range images { registry, authConfig, err := dockerImageAuth(context.Background(), image, configs) if err != nil { - if !errors.Is(err, dockercfg.ErrCredentialsNotFound) { + if !errors.Is(err, dockerconfig.ErrCredentialsNotFound) { return nil, fmt.Errorf("docker image auth %q: %w", image, err) } diff --git a/docker_auth.go b/docker_auth.go index 58b3ef2637..c6fb40d77c 100644 --- a/docker_auth.go +++ b/docker_auth.go @@ -12,17 +12,17 @@ import ( "os" "sync" - "github.com/cpuguy83/dockercfg" "github.com/docker/docker/api/types/registry" "github.com/testcontainers/testcontainers-go/internal/core" + dockerconfig "github.com/testcontainers/testcontainers-go/internal/docker/config" ) // defaultRegistryFn is variable overwritten in tests to check for behaviour with different default values. var defaultRegistryFn = defaultRegistry -// getRegistryCredentials is a variable overwritten in tests to mock the dockercfg.GetRegistryCredentials function. -var getRegistryCredentials = dockercfg.GetRegistryCredentials +// getRegistryCredentials is a variable overwritten in tests to mock the dockerconfig.GetRegistryCredentials function. +var getRegistryCredentials = dockerconfig.GetRegistryCredentials // DockerImageAuth returns the auth config for the given Docker image, extracting first its Docker registry. // Finally, it will use the credential helpers to extract the information from the docker config file @@ -46,7 +46,7 @@ func dockerImageAuth(ctx context.Context, image string, configs map[string]regis return reg, cfg, nil } - return reg, registry.AuthConfig{}, dockercfg.ErrCredentialsNotFound + return reg, registry.AuthConfig{}, dockerconfig.ErrCredentialsNotFound } func getRegistryAuth(reg string, cfgs map[string]registry.AuthConfig) (registry.AuthConfig, bool) { @@ -160,7 +160,7 @@ func (c *credentialsCache) get(hostname, configKey string) (string, string, erro // configKey returns a key to use for caching credentials based on // the contents of the currently active config. -func configKey(cfg *dockercfg.Config) (string, error) { +func configKey(cfg *dockerconfig.Config) (string, error) { h := md5.New() if err := json.NewEncoder(h).Encode(cfg); err != nil { return "", fmt.Errorf("encode config: %w", err) @@ -172,7 +172,7 @@ func configKey(cfg *dockercfg.Config) (string, error) { // getDockerAuthConfigs returns a map with the auth configs from the docker config file // using the registry as the key func getDockerAuthConfigs() (map[string]registry.AuthConfig, error) { - cfg, err := getDockerConfig() + cfg, err := dockerconfig.Load() if err != nil { if errors.Is(err, os.ErrNotExist) { return map[string]registry.AuthConfig{}, nil @@ -181,7 +181,7 @@ func getDockerAuthConfigs() (map[string]registry.AuthConfig, error) { return nil, err } - key, err := configKey(cfg) + key, err := configKey(&cfg) if err != nil { return nil, err } @@ -192,7 +192,7 @@ func getDockerAuthConfigs() (map[string]registry.AuthConfig, error) { var wg sync.WaitGroup wg.Add(size) for k, v := range cfg.AuthConfigs { - go func(k string, v dockercfg.AuthConfig) { + go func(k string, v dockerconfig.AuthConfig) { defer wg.Done() ac := registry.AuthConfig{ @@ -258,25 +258,3 @@ func getDockerAuthConfigs() (map[string]registry.AuthConfig, error) { return cfgs, nil } - -// getDockerConfig returns the docker config file. It will internally check, in this particular order: -// 1. the DOCKER_AUTH_CONFIG environment variable, unmarshalling it into a dockercfg.Config -// 2. the DOCKER_CONFIG environment variable, as the path to the config file -// 3. else it will load the default config file, which is ~/.docker/config.json -func getDockerConfig() (*dockercfg.Config, error) { - if env := os.Getenv("DOCKER_AUTH_CONFIG"); env != "" { - var cfg dockercfg.Config - if err := json.Unmarshal([]byte(env), &cfg); err != nil { - return nil, fmt.Errorf("unmarshal DOCKER_AUTH_CONFIG: %w", err) - } - - return &cfg, nil - } - - cfg, err := dockercfg.LoadDefaultConfig() - if err != nil { - return nil, fmt.Errorf("load default config: %w", err) - } - - return &cfg, nil -} diff --git a/docker_auth_test.go b/docker_auth_test.go index 17d7d0f505..5bcffd1efa 100644 --- a/docker_auth_test.go +++ b/docker_auth_test.go @@ -7,95 +7,20 @@ import ( "fmt" "net" "os" - "path/filepath" "testing" - "github.com/cpuguy83/dockercfg" "github.com/docker/docker/api/types/image" - "github.com/docker/docker/api/types/registry" "github.com/docker/docker/client" "github.com/stretchr/testify/require" - "github.com/testcontainers/testcontainers-go/internal/core" + dockerconfig "github.com/testcontainers/testcontainers-go/internal/docker/config" "github.com/testcontainers/testcontainers-go/wait" ) const ( - exampleAuth = "https://example-auth.com" - privateRegistry = "https://my.private.registry" - exampleRegistry = "https://example.com" + exampleAuth = "https://example-auth.com" ) -func Test_getDockerConfig(t *testing.T) { - expectedConfig := &dockercfg.Config{ - AuthConfigs: map[string]dockercfg.AuthConfig{ - core.IndexDockerIO: {}, - exampleRegistry: {}, - privateRegistry: {}, - }, - CredentialsStore: "desktop", - } - t.Run("HOME/valid", func(t *testing.T) { - testDockerConfigHome(t, "testdata") - - cfg, err := getDockerConfig() - require.NoError(t, err) - require.Equal(t, expectedConfig, cfg) - }) - - t.Run("HOME/not-found", func(t *testing.T) { - testDockerConfigHome(t, "testdata", "not-found") - - cfg, err := getDockerConfig() - require.ErrorIs(t, err, os.ErrNotExist) - require.Nil(t, cfg) - }) - - t.Run("HOME/invalid-config", func(t *testing.T) { - testDockerConfigHome(t, "testdata", "invalid-config") - - cfg, err := getDockerConfig() - require.ErrorContains(t, err, "json: cannot unmarshal array") - require.Nil(t, cfg) - }) - - t.Run("DOCKER_AUTH_CONFIG/valid", func(t *testing.T) { - testDockerConfigHome(t, "testdata", "not-found") - t.Setenv("DOCKER_AUTH_CONFIG", dockerConfig) - - cfg, err := getDockerConfig() - require.NoError(t, err) - require.Equal(t, expectedConfig, cfg) - }) - - t.Run("DOCKER_AUTH_CONFIG/invalid-config", func(t *testing.T) { - testDockerConfigHome(t, "testdata", "not-found") - t.Setenv("DOCKER_AUTH_CONFIG", `{"auths": []}`) - - cfg, err := getDockerConfig() - require.ErrorContains(t, err, "json: cannot unmarshal array") - require.Nil(t, cfg) - }) - - t.Run("DOCKER_CONFIG/valid", func(t *testing.T) { - testDockerConfigHome(t, "testdata", "not-found") - t.Setenv("DOCKER_CONFIG", filepath.Join("testdata", ".docker")) - - cfg, err := getDockerConfig() - require.NoError(t, err) - require.Equal(t, expectedConfig, cfg) - }) - - t.Run("DOCKER_CONFIG/invalid-config", func(t *testing.T) { - testDockerConfigHome(t, "testdata", "not-found") - t.Setenv("DOCKER_CONFIG", filepath.Join("testdata", "invalid-config", ".docker")) - - cfg, err := getDockerConfig() - require.ErrorContains(t, err, "json: cannot unmarshal array") - require.Nil(t, cfg) - }) -} - func TestDockerImageAuth(t *testing.T) { t.Run("retrieve auth with DOCKER_AUTH_CONFIG env var", func(t *testing.T) { username, password := "gopher", "secret" @@ -130,7 +55,7 @@ func TestDockerImageAuth(t *testing.T) { setAuthConfig(t, invalidRegistryURL, "gopher", "secret") registry, cfg, err := DockerImageAuth(context.Background(), imageReg+imagePath) - require.ErrorIs(t, err, dockercfg.ErrCredentialsNotFound) + require.ErrorIs(t, err, dockerconfig.ErrCredentialsNotFound) require.Empty(t, cfg) require.Equal(t, imageReg, registry) }) @@ -150,7 +75,7 @@ func TestDockerImageAuth(t *testing.T) { setAuthConfig(t, "example-auth.com", "gopher", "secret") registry, cfg, err := DockerImageAuth(context.Background(), imageReg+imagePath) - require.ErrorIs(t, err, dockercfg.ErrCredentialsNotFound) + require.ErrorIs(t, err, dockerconfig.ErrCredentialsNotFound) require.Empty(t, cfg) require.Equal(t, imageReg, registry) }) @@ -378,141 +303,3 @@ func localAddress(t *testing.T) string { return localAddr.IP.String() } - -//go:embed testdata/.docker/config.json -var dockerConfig string - -// reset resets the credentials cache. -func (c *credentialsCache) reset() { - c.mtx.Lock() - defer c.mtx.Unlock() - c.entries = make(map[string]credentials) -} - -func Test_getDockerAuthConfigs(t *testing.T) { - t.Run("HOME/valid", func(t *testing.T) { - testDockerConfigHome(t, "testdata") - - requireValidAuthConfig(t) - }) - - t.Run("HOME/not-found", func(t *testing.T) { - testDockerConfigHome(t, "testdata", "not-exist") - - authConfigs, err := getDockerAuthConfigs() - require.NoError(t, err) - require.NotNil(t, authConfigs) - require.Empty(t, authConfigs) - }) - - t.Run("HOME/invalid-config", func(t *testing.T) { - testDockerConfigHome(t, "testdata", "invalid-config") - - authConfigs, err := getDockerAuthConfigs() - require.ErrorContains(t, err, "json: cannot unmarshal array") - require.Nil(t, authConfigs) - }) - - t.Run("DOCKER_AUTH_CONFIG/valid", func(t *testing.T) { - testDockerConfigHome(t, "testdata", "not-exist") - t.Setenv("DOCKER_AUTH_CONFIG", dockerConfig) - - requireValidAuthConfig(t) - }) - - t.Run("DOCKER_AUTH_CONFIG/invalid-config", func(t *testing.T) { - testDockerConfigHome(t, "testdata", "not-exist") - t.Setenv("DOCKER_AUTH_CONFIG", `{"auths": []}`) - - authConfigs, err := getDockerAuthConfigs() - require.ErrorContains(t, err, "json: cannot unmarshal array") - require.Nil(t, authConfigs) - }) - - t.Run("DOCKER_AUTH_CONFIG/identity-token", func(t *testing.T) { - testDockerConfigHome(t, "testdata", "not-exist") - - // Reset the credentials cache to ensure our mocked method is called. - creds.reset() - - // Mock getRegistryCredentials to return identity-token for index.docker.io. - old := getRegistryCredentials - t.Cleanup(func() { - getRegistryCredentials = old - creds.reset() // Ensure our mocked results aren't cached. - }) - getRegistryCredentials = func(hostname string) (string, string, error) { - switch hostname { - case core.IndexDockerIO: - return "", "identity-token", nil - default: - return "username", "password", nil - } - } - t.Setenv("DOCKER_AUTH_CONFIG", dockerConfig) - - authConfigs, err := getDockerAuthConfigs() - require.NoError(t, err) - require.Equal(t, map[string]registry.AuthConfig{ - core.IndexDockerIO: { - IdentityToken: "identity-token", - }, - privateRegistry: { - Username: "username", - Password: "password", - }, - exampleRegistry: { - Username: "username", - Password: "password", - }, - }, authConfigs) - }) - - t.Run("DOCKER_CONFIG/valid", func(t *testing.T) { - testDockerConfigHome(t, "testdata", "not-found") - t.Setenv("DOCKER_CONFIG", filepath.Join("testdata", ".docker")) - - requireValidAuthConfig(t) - }) - - t.Run("DOCKER_CONFIG/invalid-config", func(t *testing.T) { - testDockerConfigHome(t, "testdata", "not-found") - t.Setenv("DOCKER_CONFIG", filepath.Join("testdata", "invalid-config", ".docker")) - - cfg, err := getDockerConfig() - require.ErrorContains(t, err, "json: cannot unmarshal array") - require.Nil(t, cfg) - }) -} - -// requireValidAuthConfig checks that the given authConfigs map contains the expected keys. -func requireValidAuthConfig(t *testing.T) { - t.Helper() - - authConfigs, err := getDockerAuthConfigs() - require.NoError(t, err) - - // We can only check the keys as the values are not deterministic as they depend - // on user's environment. - expected := map[string]registry.AuthConfig{ - core.IndexDockerIO: {}, - exampleRegistry: {}, - privateRegistry: {}, - } - for k := range authConfigs { - authConfigs[k] = registry.AuthConfig{} - } - require.Equal(t, expected, authConfigs) -} - -// testDockerConfigHome sets the user's home directory to the given path -// and unsets the DOCKER_CONFIG and DOCKER_AUTH_CONFIG environment variables. -func testDockerConfigHome(t *testing.T, dirs ...string) { - t.Helper() - - dir := filepath.Join(dirs...) - t.Setenv("DOCKER_AUTH_CONFIG", "") - t.Setenv("DOCKER_CONFIG", "") - t.Setenv("HOME", dir) - t.Setenv("USERPROFILE", dir) // Windows -} diff --git a/docs/features/docker_auth.md b/docs/features/docker_auth.md index 6893759b64..a03603fec0 100644 --- a/docs/features/docker_auth.md +++ b/docs/features/docker_auth.md @@ -10,9 +10,6 @@ and retrieve the authentication for a given registry. To achieve it, _Testcontai To understand how the Docker credential helpers work, please refer to the [official documentation](https://docs.docker.com/engine/reference/commandline/login/#credential-helpers). -!!! info - _Testcontainers for Go_ uses [https://github.com/cpuguy83/dockercfg](https://github.com/cpuguy83/dockercfg) to retrieve the authentication from the credential helpers. - _Testcontainers for Go_ will automatically discover the credentials for a given Docker image from the Docker config, as described above. For that, it will extract the Docker registry from the image name, and for that registry will try to locate the authentication in the Docker config, returning an empty string if the registry is not found. As a consequence, all the fields to pass credentials to the container request will be deprecated. ```go diff --git a/generic.go b/generic.go index a081b52268..e9bc2f39c3 100644 --- a/generic.go +++ b/generic.go @@ -8,6 +8,7 @@ import ( "sync" "github.com/testcontainers/testcontainers-go/internal/core" + dockerconfig "github.com/testcontainers/testcontainers-go/internal/docker/config" "github.com/testcontainers/testcontainers-go/log" ) @@ -80,7 +81,7 @@ func GenericContainer(ctx context.Context, req GenericContainerRequest) (Contain // TODO: Remove this debugging. if strings.Contains(err.Error(), "toomanyrequests") { // Debugging information for rate limiting. - cfg, err := getDockerConfig() + cfg, err := dockerconfig.Load() if err == nil { fmt.Printf("XXX: too many requests: %+v", cfg) } diff --git a/go.mod b/go.mod index f62c512ff9..8ac61df43c 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,6 @@ require ( dario.cat/mergo v1.0.1 github.com/cenkalti/backoff/v4 v4.2.1 github.com/containerd/platforms v0.2.1 - github.com/cpuguy83/dockercfg v0.3.2 github.com/docker/docker v28.0.1+incompatible github.com/docker/go-connections v0.5.0 github.com/google/uuid v1.6.0 diff --git a/go.sum b/go.sum index d1eabd6a76..6f5a1dee0d 100644 --- a/go.sum +++ b/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/testdata/.docker/config.json b/testdata/.docker/config.json deleted file mode 100644 index af4b84ef1c..0000000000 --- a/testdata/.docker/config.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "auths": { - "https://index.docker.io/v1/": {}, - "https://example.com": {}, - "https://my.private.registry": {} - }, - "credsStore": "desktop" -} \ No newline at end of file diff --git a/testdata/invalid-config/.docker/config.json b/testdata/invalid-config/.docker/config.json deleted file mode 100644 index f0f444f355..0000000000 --- a/testdata/invalid-config/.docker/config.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "auths": [] -} From 81ec71303c5efa3de8e113e207cdf2029f9cf8d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 8 Apr 2025 13:55:46 +0200 Subject: [PATCH 4/9] chore: run mod tidy --- examples/nginx/go.mod | 1 - examples/nginx/go.sum | 2 -- examples/toxiproxy/go.mod | 1 - examples/toxiproxy/go.sum | 2 -- modules/arangodb/go.mod | 1 - modules/arangodb/go.sum | 2 -- modules/artemis/go.mod | 1 - modules/artemis/go.sum | 2 -- modules/azure/go.mod | 1 - modules/azure/go.sum | 2 -- modules/azurite/go.mod | 1 - modules/azurite/go.sum | 2 -- modules/cassandra/go.mod | 1 - modules/cassandra/go.sum | 2 -- modules/chroma/go.mod | 1 - modules/chroma/go.sum | 2 -- modules/clickhouse/go.mod | 1 - modules/clickhouse/go.sum | 2 -- modules/cockroachdb/go.mod | 1 - modules/cockroachdb/go.sum | 2 -- modules/compose/go.mod | 1 - modules/compose/go.sum | 2 -- modules/consul/go.mod | 1 - modules/consul/go.sum | 2 -- modules/couchbase/go.mod | 1 - modules/couchbase/go.sum | 2 -- modules/databend/go.mod | 1 - modules/databend/go.sum | 2 -- modules/dind/go.mod | 1 - modules/dind/go.sum | 2 -- modules/dolt/go.mod | 1 - modules/dolt/go.sum | 2 -- modules/dynamodb/go.mod | 1 - modules/dynamodb/go.sum | 2 -- modules/elasticsearch/go.mod | 1 - modules/elasticsearch/go.sum | 2 -- modules/etcd/go.mod | 1 - modules/etcd/go.sum | 2 -- modules/gcloud/go.mod | 1 - modules/gcloud/go.sum | 2 -- modules/grafana-lgtm/go.mod | 1 - modules/grafana-lgtm/go.sum | 2 -- modules/inbucket/go.mod | 1 - modules/inbucket/go.sum | 2 -- modules/influxdb/go.mod | 1 - modules/influxdb/go.sum | 2 -- modules/k3s/go.mod | 1 - modules/k3s/go.sum | 2 -- modules/k6/go.mod | 1 - modules/k6/go.sum | 2 -- modules/kafka/go.mod | 1 - modules/kafka/go.sum | 2 -- modules/localstack/go.mod | 1 - modules/localstack/go.sum | 2 -- modules/mariadb/go.mod | 1 - modules/mariadb/go.sum | 2 -- modules/meilisearch/go.mod | 1 - modules/meilisearch/go.sum | 2 -- modules/milvus/go.mod | 1 - modules/milvus/go.sum | 2 -- modules/minio/go.mod | 1 - modules/minio/go.sum | 2 -- modules/mockserver/go.mod | 1 - modules/mockserver/go.sum | 2 -- modules/mongodb/go.mod | 1 - modules/mongodb/go.sum | 2 -- modules/mssql/go.mod | 1 - modules/mssql/go.sum | 2 -- modules/mysql/go.mod | 1 - modules/mysql/go.sum | 2 -- modules/nats/go.mod | 1 - modules/nats/go.sum | 2 -- modules/neo4j/go.mod | 1 - modules/neo4j/go.sum | 2 -- modules/ollama/go.mod | 1 - modules/ollama/go.sum | 2 -- modules/openfga/go.mod | 1 - modules/openfga/go.sum | 2 -- modules/openldap/go.mod | 1 - modules/openldap/go.sum | 2 -- modules/opensearch/go.mod | 1 - modules/opensearch/go.sum | 2 -- modules/pinecone/go.mod | 1 - modules/pinecone/go.sum | 2 -- modules/postgres/go.mod | 1 - modules/postgres/go.sum | 2 -- modules/pulsar/go.mod | 1 - modules/pulsar/go.sum | 2 -- modules/qdrant/go.mod | 1 - modules/qdrant/go.sum | 2 -- modules/rabbitmq/go.mod | 1 - modules/rabbitmq/go.sum | 2 -- modules/redis/go.mod | 1 - modules/redis/go.sum | 2 -- modules/redpanda/go.mod | 1 - modules/redpanda/go.sum | 2 -- modules/scylladb/go.mod | 1 - modules/scylladb/go.sum | 2 -- modules/socat/go.mod | 1 - modules/socat/go.sum | 2 -- modules/surrealdb/go.mod | 1 - modules/surrealdb/go.sum | 2 -- modules/valkey/go.mod | 1 - modules/valkey/go.sum | 2 -- modules/vault/go.mod | 1 - modules/vault/go.sum | 2 -- modules/vearch/go.mod | 1 - modules/vearch/go.sum | 2 -- modules/weaviate/go.mod | 1 - modules/weaviate/go.sum | 2 -- modules/yugabytedb/go.mod | 1 - modules/yugabytedb/go.sum | 2 -- 112 files changed, 168 deletions(-) diff --git a/examples/nginx/go.mod b/examples/nginx/go.mod index cbd3ca11f4..da645e1afb 100644 --- a/examples/nginx/go.mod +++ b/examples/nginx/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/examples/nginx/go.sum b/examples/nginx/go.sum index cef0709e7c..a71011faed 100644 --- a/examples/nginx/go.sum +++ b/examples/nginx/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/examples/toxiproxy/go.mod b/examples/toxiproxy/go.mod index 1522e0ba03..f4e2916c50 100644 --- a/examples/toxiproxy/go.mod +++ b/examples/toxiproxy/go.mod @@ -20,7 +20,6 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/distribution/reference v0.6.0 // indirect diff --git a/examples/toxiproxy/go.sum b/examples/toxiproxy/go.sum index e9ccf15216..758fb83b23 100644 --- a/examples/toxiproxy/go.sum +++ b/examples/toxiproxy/go.sum @@ -16,8 +16,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/arangodb/go.mod b/modules/arangodb/go.mod index 62024a7c46..dbf7a31762 100644 --- a/modules/arangodb/go.mod +++ b/modules/arangodb/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dchest/siphash v1.2.3 // indirect github.com/distribution/reference v0.6.0 // indirect diff --git a/modules/arangodb/go.sum b/modules/arangodb/go.sum index 2bb202d545..6896cf3ab9 100644 --- a/modules/arangodb/go.sum +++ b/modules/arangodb/go.sum @@ -17,8 +17,6 @@ github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3 github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/artemis/go.mod b/modules/artemis/go.mod index b02ded3c86..447b9e83bf 100644 --- a/modules/artemis/go.mod +++ b/modules/artemis/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/artemis/go.sum b/modules/artemis/go.sum index 265314ec88..d758829bca 100644 --- a/modules/artemis/go.sum +++ b/modules/artemis/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/azure/go.mod b/modules/azure/go.mod index 4123a59b65..b9719fc7d5 100644 --- a/modules/azure/go.mod +++ b/modules/azure/go.mod @@ -25,7 +25,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/azure/go.sum b/modules/azure/go.sum index ef125c9706..87424b3113 100644 --- a/modules/azure/go.sum +++ b/modules/azure/go.sum @@ -38,8 +38,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/azurite/go.mod b/modules/azurite/go.mod index fc4dc4adfa..64d8fce1db 100644 --- a/modules/azurite/go.mod +++ b/modules/azurite/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/azurite/go.sum b/modules/azurite/go.sum index 1954921365..e8a4925878 100644 --- a/modules/azurite/go.sum +++ b/modules/azurite/go.sum @@ -22,8 +22,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/cassandra/go.mod b/modules/cassandra/go.mod index c465b89c3e..dc556d70bd 100644 --- a/modules/cassandra/go.mod +++ b/modules/cassandra/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/cassandra/go.sum b/modules/cassandra/go.sum index 73e8a10f15..ae7b1e8a8e 100644 --- a/modules/cassandra/go.sum +++ b/modules/cassandra/go.sum @@ -16,8 +16,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/chroma/go.mod b/modules/chroma/go.mod index 8a25d95100..58e32abc0d 100644 --- a/modules/chroma/go.mod +++ b/modules/chroma/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/chroma/go.sum b/modules/chroma/go.sum index b7f9ec3bf9..7bf5daa1b0 100644 --- a/modules/chroma/go.sum +++ b/modules/chroma/go.sum @@ -16,8 +16,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/clickhouse/go.mod b/modules/clickhouse/go.mod index b9fa0d8b6e..59a8b1995f 100644 --- a/modules/clickhouse/go.mod +++ b/modules/clickhouse/go.mod @@ -20,7 +20,6 @@ require ( github.com/andybalholm/brotli v1.1.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/clickhouse/go.sum b/modules/clickhouse/go.sum index 7ea9d235bb..d18d90089b 100644 --- a/modules/clickhouse/go.sum +++ b/modules/clickhouse/go.sum @@ -18,8 +18,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/cockroachdb/go.mod b/modules/cockroachdb/go.mod index eb62f442cc..520d18ee75 100644 --- a/modules/cockroachdb/go.mod +++ b/modules/cockroachdb/go.mod @@ -24,7 +24,6 @@ require ( github.com/Microsoft/go-winio v0.6.2 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/cockroachdb/go.sum b/modules/cockroachdb/go.sum index a40020f525..c751f312b2 100644 --- a/modules/cockroachdb/go.sum +++ b/modules/cockroachdb/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/compose/go.mod b/modules/compose/go.mod index 6cbb928ac8..69d66635cc 100644 --- a/modules/compose/go.mod +++ b/modules/compose/go.mod @@ -53,7 +53,6 @@ require ( github.com/containerd/platforms v1.0.0-rc.1 // indirect github.com/containerd/ttrpc v1.2.7 // indirect github.com/containerd/typeurl/v2 v2.2.3 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/buildx v0.21.3 // indirect diff --git a/modules/compose/go.sum b/modules/compose/go.sum index a2197ec27c..23cefc2ed8 100644 --- a/modules/compose/go.sum +++ b/modules/compose/go.sum @@ -116,8 +116,6 @@ github.com/containerd/ttrpc v1.2.7 h1:qIrroQvuOL9HQ1X6KHe2ohc7p+HP/0VE6XPU7elJRq github.com/containerd/ttrpc v1.2.7/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o= 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/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= diff --git a/modules/consul/go.mod b/modules/consul/go.mod index 9cdcf90b9e..93d22c3213 100644 --- a/modules/consul/go.mod +++ b/modules/consul/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/consul/go.sum b/modules/consul/go.sum index 33e0376dd2..265bacea95 100644 --- a/modules/consul/go.sum +++ b/modules/consul/go.sum @@ -30,8 +30,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/couchbase/go.mod b/modules/couchbase/go.mod index 78710e2fcb..27d27476ab 100644 --- a/modules/couchbase/go.mod +++ b/modules/couchbase/go.mod @@ -23,7 +23,6 @@ require ( github.com/couchbase/gocbcoreps v0.1.2 // indirect github.com/couchbase/goprotostellar v1.0.2 // indirect github.com/couchbaselabs/gocbconnstr/v2 v2.0.0-20230515165046-68b522a21131 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/couchbase/go.sum b/modules/couchbase/go.sum index ee1a510ed7..94131c4b19 100644 --- a/modules/couchbase/go.sum +++ b/modules/couchbase/go.sum @@ -31,8 +31,6 @@ github.com/couchbaselabs/gocaves/client v0.0.0-20230404095311-05e3ba4f0259 h1:2T github.com/couchbaselabs/gocaves/client v0.0.0-20230404095311-05e3ba4f0259/go.mod h1:AVekAZwIY2stsJOMWLAS/0uA/+qdp7pjO8EHnl61QkY= github.com/couchbaselabs/gocbconnstr/v2 v2.0.0-20230515165046-68b522a21131 h1:2EAfFswAfgYn3a05DVcegiw6DgMgn1Mv5eGz6IHt1Cw= github.com/couchbaselabs/gocbconnstr/v2 v2.0.0-20230515165046-68b522a21131/go.mod h1:o7T431UOfFVHDNvMBUmUxpHnhivwv7BziUao/nMl81E= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/databend/go.mod b/modules/databend/go.mod index 26358f02bb..b73e2e5ab8 100644 --- a/modules/databend/go.mod +++ b/modules/databend/go.mod @@ -19,7 +19,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/databend/go.sum b/modules/databend/go.sum index bebee51564..fe72ed88b7 100644 --- a/modules/databend/go.sum +++ b/modules/databend/go.sum @@ -16,8 +16,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/datafuselabs/databend-go v0.7.0 h1:wPND9I8r/FfcY/nAPo8yeZbh5PMga3ICSDIaq8/eP3o= diff --git a/modules/dind/go.mod b/modules/dind/go.mod index 6a04c25a8d..4319d1d648 100644 --- a/modules/dind/go.mod +++ b/modules/dind/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/go-connections v0.5.0 // indirect diff --git a/modules/dind/go.sum b/modules/dind/go.sum index 866a86bbea..10591affe5 100644 --- a/modules/dind/go.sum +++ b/modules/dind/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/dolt/go.mod b/modules/dolt/go.mod index 65e5fd902c..431199e6da 100644 --- a/modules/dolt/go.mod +++ b/modules/dolt/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/dolt/go.sum b/modules/dolt/go.sum index 9155e762ca..c9ca7c9b7c 100644 --- a/modules/dolt/go.sum +++ b/modules/dolt/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/dynamodb/go.mod b/modules/dynamodb/go.mod index 7400a9b68a..d34122aaaf 100644 --- a/modules/dynamodb/go.mod +++ b/modules/dynamodb/go.mod @@ -31,7 +31,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/dynamodb/go.sum b/modules/dynamodb/go.sum index 04f0ae2c0f..fd7f81886c 100644 --- a/modules/dynamodb/go.sum +++ b/modules/dynamodb/go.sum @@ -42,8 +42,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/elasticsearch/go.mod b/modules/elasticsearch/go.mod index e50bf9b9b0..f2de51a69f 100644 --- a/modules/elasticsearch/go.mod +++ b/modules/elasticsearch/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/elasticsearch/go.sum b/modules/elasticsearch/go.sum index f6ac9ed238..4ee68cf812 100644 --- a/modules/elasticsearch/go.sum +++ b/modules/elasticsearch/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/etcd/go.mod b/modules/etcd/go.mod index cf6079d777..5701b60267 100644 --- a/modules/etcd/go.mod +++ b/modules/etcd/go.mod @@ -20,7 +20,6 @@ require ( github.com/containerd/platforms v0.2.1 // indirect github.com/coreos/go-semver v0.3.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/go-connections v0.5.0 // indirect diff --git a/modules/etcd/go.sum b/modules/etcd/go.sum index 58e86874ea..873b1db691 100644 --- a/modules/etcd/go.sum +++ b/modules/etcd/go.sum @@ -16,8 +16,6 @@ github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmf github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/gcloud/go.mod b/modules/gcloud/go.mod index fc3f9941aa..898e2b71c2 100644 --- a/modules/gcloud/go.mod +++ b/modules/gcloud/go.mod @@ -34,7 +34,6 @@ require ( github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/gcloud/go.sum b/modules/gcloud/go.sum index 0d570a0927..b6fe6dfc47 100644 --- a/modules/gcloud/go.sum +++ b/modules/gcloud/go.sum @@ -53,8 +53,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/grafana-lgtm/go.mod b/modules/grafana-lgtm/go.mod index 518006b8da..8c7525f596 100644 --- a/modules/grafana-lgtm/go.mod +++ b/modules/grafana-lgtm/go.mod @@ -33,7 +33,6 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/grafana-lgtm/go.sum b/modules/grafana-lgtm/go.sum index f3fa4c9cae..78273b2232 100644 --- a/modules/grafana-lgtm/go.sum +++ b/modules/grafana-lgtm/go.sum @@ -16,8 +16,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/inbucket/go.mod b/modules/inbucket/go.mod index 8037b72394..12f4e3b7fd 100644 --- a/modules/inbucket/go.mod +++ b/modules/inbucket/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/inbucket/go.sum b/modules/inbucket/go.sum index ea063fc144..452cb5b51e 100644 --- a/modules/inbucket/go.sum +++ b/modules/inbucket/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/influxdb/go.mod b/modules/influxdb/go.mod index 1c5884b1c0..3041e7f43a 100644 --- a/modules/influxdb/go.mod +++ b/modules/influxdb/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/influxdb/go.sum b/modules/influxdb/go.sum index 03e568c225..5f5d4c32a8 100644 --- a/modules/influxdb/go.sum +++ b/modules/influxdb/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/k3s/go.mod b/modules/k3s/go.mod index 1da5bb3f64..5e1e87f4eb 100644 --- a/modules/k3s/go.mod +++ b/modules/k3s/go.mod @@ -22,7 +22,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect diff --git a/modules/k3s/go.sum b/modules/k3s/go.sum index 2663f853ef..8d839f9424 100644 --- a/modules/k3s/go.sum +++ b/modules/k3s/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= diff --git a/modules/k6/go.mod b/modules/k6/go.mod index 1d21daf5f5..f9804f9f95 100644 --- a/modules/k6/go.mod +++ b/modules/k6/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/go-connections v0.5.0 // indirect diff --git a/modules/k6/go.sum b/modules/k6/go.sum index cef0709e7c..a71011faed 100644 --- a/modules/k6/go.sum +++ b/modules/k6/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/kafka/go.mod b/modules/kafka/go.mod index 3f0db2faec..2ed1775f8d 100644 --- a/modules/kafka/go.mod +++ b/modules/kafka/go.mod @@ -19,7 +19,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/kafka/go.sum b/modules/kafka/go.sum index b0f8d7057f..ef18db660d 100644 --- a/modules/kafka/go.sum +++ b/modules/kafka/go.sum @@ -14,8 +14,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/localstack/go.mod b/modules/localstack/go.mod index 34bdbf8e00..b157fcb11a 100644 --- a/modules/localstack/go.mod +++ b/modules/localstack/go.mod @@ -38,7 +38,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect diff --git a/modules/localstack/go.sum b/modules/localstack/go.sum index 4613d7bc7e..270c3c2337 100644 --- a/modules/localstack/go.sum +++ b/modules/localstack/go.sum @@ -50,8 +50,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/mariadb/go.mod b/modules/mariadb/go.mod index 3bf28cfd58..e905027395 100644 --- a/modules/mariadb/go.mod +++ b/modules/mariadb/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/mariadb/go.sum b/modules/mariadb/go.sum index 9155e762ca..c9ca7c9b7c 100644 --- a/modules/mariadb/go.sum +++ b/modules/mariadb/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/meilisearch/go.mod b/modules/meilisearch/go.mod index ebe028d31a..5137a7c935 100644 --- a/modules/meilisearch/go.mod +++ b/modules/meilisearch/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/meilisearch/go.sum b/modules/meilisearch/go.sum index 91ce8ed100..3331782252 100644 --- a/modules/meilisearch/go.sum +++ b/modules/meilisearch/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/milvus/go.mod b/modules/milvus/go.mod index 802c53ae02..b310efccf6 100644 --- a/modules/milvus/go.mod +++ b/modules/milvus/go.mod @@ -20,7 +20,6 @@ require ( github.com/cockroachdb/redact v1.1.3 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/milvus/go.sum b/modules/milvus/go.sum index 796e1321de..c35f6eb8de 100644 --- a/modules/milvus/go.sum +++ b/modules/milvus/go.sum @@ -37,8 +37,6 @@ github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7np github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= diff --git a/modules/minio/go.mod b/modules/minio/go.mod index ae33ea4ae0..90daa527fb 100644 --- a/modules/minio/go.mod +++ b/modules/minio/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/minio/go.sum b/modules/minio/go.sum index d2bec44fe2..b3f2e94f8b 100644 --- a/modules/minio/go.sum +++ b/modules/minio/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/mockserver/go.mod b/modules/mockserver/go.mod index fdfd1de7b1..100f77f47b 100644 --- a/modules/mockserver/go.mod +++ b/modules/mockserver/go.mod @@ -16,7 +16,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/mockserver/go.sum b/modules/mockserver/go.sum index 441671a3f6..fcec416a3d 100644 --- a/modules/mockserver/go.sum +++ b/modules/mockserver/go.sum @@ -14,8 +14,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/mongodb/go.mod b/modules/mongodb/go.mod index 2a22b780b2..27c4bef5f0 100644 --- a/modules/mongodb/go.mod +++ b/modules/mongodb/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/mongodb/go.sum b/modules/mongodb/go.sum index 0634505e66..e75ff13b30 100644 --- a/modules/mongodb/go.sum +++ b/modules/mongodb/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/mssql/go.mod b/modules/mssql/go.mod index e226f6a9c0..791d68b326 100644 --- a/modules/mssql/go.mod +++ b/modules/mssql/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/mssql/go.sum b/modules/mssql/go.sum index 6107bc828b..96bd107e30 100644 --- a/modules/mssql/go.sum +++ b/modules/mssql/go.sum @@ -24,8 +24,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/mysql/go.mod b/modules/mysql/go.mod index 24109e5b39..8c13b309bb 100644 --- a/modules/mysql/go.mod +++ b/modules/mysql/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/mysql/go.sum b/modules/mysql/go.sum index 9155e762ca..c9ca7c9b7c 100644 --- a/modules/mysql/go.sum +++ b/modules/mysql/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/nats/go.mod b/modules/nats/go.mod index e526323f16..9c49019d1e 100644 --- a/modules/nats/go.mod +++ b/modules/nats/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/nats/go.sum b/modules/nats/go.sum index ce2956c7f9..4c66a7b934 100644 --- a/modules/nats/go.sum +++ b/modules/nats/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/neo4j/go.mod b/modules/neo4j/go.mod index 09df152162..03eedd4cd0 100644 --- a/modules/neo4j/go.mod +++ b/modules/neo4j/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/neo4j/go.sum b/modules/neo4j/go.sum index d25cc74564..bf5af82e6c 100644 --- a/modules/neo4j/go.sum +++ b/modules/neo4j/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/ollama/go.mod b/modules/ollama/go.mod index 2492628b60..9cbd1aae12 100644 --- a/modules/ollama/go.mod +++ b/modules/ollama/go.mod @@ -21,7 +21,6 @@ require ( github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v1.0.0-rc.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/dlclark/regexp2 v1.8.1 // indirect diff --git a/modules/ollama/go.sum b/modules/ollama/go.sum index aae8356c49..397ea1722a 100644 --- a/modules/ollama/go.sum +++ b/modules/ollama/go.sum @@ -12,8 +12,6 @@ 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/platforms v1.0.0-rc.1 h1:83KIq4yy1erSRgOVHNk1HYdPvzdJ5CnsWaRoJX4C41E= github.com/containerd/platforms v1.0.0-rc.1/go.mod h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/openfga/go.mod b/modules/openfga/go.mod index 89cf87de15..a1e8f80f8f 100644 --- a/modules/openfga/go.mod +++ b/modules/openfga/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/openfga/go.sum b/modules/openfga/go.sum index 64fad079c2..b6284b3881 100644 --- a/modules/openfga/go.sum +++ b/modules/openfga/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/openldap/go.mod b/modules/openldap/go.mod index 3f9c3a658b..0469c655dd 100644 --- a/modules/openldap/go.mod +++ b/modules/openldap/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/openldap/go.sum b/modules/openldap/go.sum index 101f160cca..9dfd38b9e9 100644 --- a/modules/openldap/go.sum +++ b/modules/openldap/go.sum @@ -16,8 +16,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/opensearch/go.mod b/modules/opensearch/go.mod index f5a0113441..a325f7b458 100644 --- a/modules/opensearch/go.mod +++ b/modules/opensearch/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/go-connections v0.5.0 // indirect diff --git a/modules/opensearch/go.sum b/modules/opensearch/go.sum index cef0709e7c..a71011faed 100644 --- a/modules/opensearch/go.sum +++ b/modules/opensearch/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/pinecone/go.mod b/modules/pinecone/go.mod index 50c021c077..47e080e8c3 100644 --- a/modules/pinecone/go.mod +++ b/modules/pinecone/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/pinecone/go.sum b/modules/pinecone/go.sum index a6bb6eed58..e601315463 100644 --- a/modules/pinecone/go.sum +++ b/modules/pinecone/go.sum @@ -16,8 +16,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/postgres/go.mod b/modules/postgres/go.mod index 4ff3996816..431ab5892f 100644 --- a/modules/postgres/go.mod +++ b/modules/postgres/go.mod @@ -21,7 +21,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/postgres/go.sum b/modules/postgres/go.sum index ea30459126..b95cfdb8ce 100644 --- a/modules/postgres/go.sum +++ b/modules/postgres/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/pulsar/go.mod b/modules/pulsar/go.mod index dcfa2d872d..b312ed7b94 100644 --- a/modules/pulsar/go.mod +++ b/modules/pulsar/go.mod @@ -29,7 +29,6 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect diff --git a/modules/pulsar/go.sum b/modules/pulsar/go.sum index 531b5c226a..0f22faba07 100644 --- a/modules/pulsar/go.sum +++ b/modules/pulsar/go.sum @@ -82,8 +82,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= diff --git a/modules/qdrant/go.mod b/modules/qdrant/go.mod index 28fc73479f..85f9c2f186 100644 --- a/modules/qdrant/go.mod +++ b/modules/qdrant/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/qdrant/go.sum b/modules/qdrant/go.sum index 6f880f36db..c6d6489734 100644 --- a/modules/qdrant/go.sum +++ b/modules/qdrant/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/rabbitmq/go.mod b/modules/rabbitmq/go.mod index 671ccac156..613efa84f1 100644 --- a/modules/rabbitmq/go.mod +++ b/modules/rabbitmq/go.mod @@ -27,7 +27,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/rabbitmq/go.sum b/modules/rabbitmq/go.sum index 79d5df3262..f8e25d09d4 100644 --- a/modules/rabbitmq/go.sum +++ b/modules/rabbitmq/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/redis/go.mod b/modules/redis/go.mod index 58ccce59c7..130cf1424d 100644 --- a/modules/redis/go.mod +++ b/modules/redis/go.mod @@ -22,7 +22,6 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/distribution/reference v0.6.0 // indirect diff --git a/modules/redis/go.sum b/modules/redis/go.sum index bc91189750..37ad1044f8 100644 --- a/modules/redis/go.sum +++ b/modules/redis/go.sum @@ -14,8 +14,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/redpanda/go.mod b/modules/redpanda/go.mod index 6231317e91..c9fb866f3b 100644 --- a/modules/redpanda/go.mod +++ b/modules/redpanda/go.mod @@ -32,7 +32,6 @@ require ( github.com/Microsoft/go-winio v0.6.2 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/redpanda/go.sum b/modules/redpanda/go.sum index 9585c58220..6b52f29181 100644 --- a/modules/redpanda/go.sum +++ b/modules/redpanda/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/scylladb/go.mod b/modules/scylladb/go.mod index 8c3b2612b2..0a898ddbc1 100644 --- a/modules/scylladb/go.mod +++ b/modules/scylladb/go.mod @@ -32,7 +32,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/scylladb/go.sum b/modules/scylladb/go.sum index 64ddc36812..807368bf29 100644 --- a/modules/scylladb/go.sum +++ b/modules/scylladb/go.sum @@ -46,8 +46,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/socat/go.mod b/modules/socat/go.mod index 4a7aa724dc..ae55a352f5 100644 --- a/modules/socat/go.mod +++ b/modules/socat/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/socat/go.sum b/modules/socat/go.sum index 654cb31f4c..0c5aab9b91 100644 --- a/modules/socat/go.sum +++ b/modules/socat/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/surrealdb/go.mod b/modules/surrealdb/go.mod index 83e75f85f8..e5cb40ca75 100644 --- a/modules/surrealdb/go.mod +++ b/modules/surrealdb/go.mod @@ -17,7 +17,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/surrealdb/go.sum b/modules/surrealdb/go.sum index 74f3719392..d43b82d0f7 100644 --- a/modules/surrealdb/go.sum +++ b/modules/surrealdb/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/valkey/go.mod b/modules/valkey/go.mod index 3c5c08aa18..55ce6c10c8 100644 --- a/modules/valkey/go.mod +++ b/modules/valkey/go.mod @@ -20,7 +20,6 @@ require ( github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/valkey/go.sum b/modules/valkey/go.sum index 5608bf48d0..ae5eb24ce8 100644 --- a/modules/valkey/go.sum +++ b/modules/valkey/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/vault/go.mod b/modules/vault/go.mod index 1d6e1c6659..98d26bdeab 100644 --- a/modules/vault/go.mod +++ b/modules/vault/go.mod @@ -19,7 +19,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/go-connections v0.5.0 // indirect diff --git a/modules/vault/go.sum b/modules/vault/go.sum index c4af62fe02..262e99f83c 100644 --- a/modules/vault/go.sum +++ b/modules/vault/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/vearch/go.mod b/modules/vearch/go.mod index 83fd22e636..c08beca89f 100644 --- a/modules/vearch/go.mod +++ b/modules/vearch/go.mod @@ -16,7 +16,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/vearch/go.sum b/modules/vearch/go.sum index cef0709e7c..a71011faed 100644 --- a/modules/vearch/go.sum +++ b/modules/vearch/go.sum @@ -12,8 +12,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/modules/weaviate/go.mod b/modules/weaviate/go.mod index 8a1fb8b689..a5a8ada884 100644 --- a/modules/weaviate/go.mod +++ b/modules/weaviate/go.mod @@ -19,7 +19,6 @@ require ( github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/weaviate/go.sum b/modules/weaviate/go.sum index 54f8ed24bb..9b5534341b 100644 --- a/modules/weaviate/go.sum +++ b/modules/weaviate/go.sum @@ -19,8 +19,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= diff --git a/modules/yugabytedb/go.mod b/modules/yugabytedb/go.mod index 919c7e4699..9dd5115099 100644 --- a/modules/yugabytedb/go.mod +++ b/modules/yugabytedb/go.mod @@ -18,7 +18,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/yugabytedb/go.sum b/modules/yugabytedb/go.sum index 36f36792b7..f013ab11d8 100644 --- a/modules/yugabytedb/go.sum +++ b/modules/yugabytedb/go.sum @@ -16,8 +16,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= From 20a34a1146306075e9121765cb74723393e5d459 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 8 Apr 2025 13:58:33 +0200 Subject: [PATCH 5/9] chore: simplify --- internal/docker/config/load.go | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/internal/docker/config/load.go b/internal/docker/config/load.go index 041f8959a1..ae99e02897 100644 --- a/internal/docker/config/load.go +++ b/internal/docker/config/load.go @@ -83,20 +83,15 @@ func Load() (Config, error) { return cfg, fmt.Errorf("config path: %w", err) } - return cfg, LoadFromFilepath(p, &cfg) -} - -// LoadFromFilepath loads config from the specified path into cfg. -func LoadFromFilepath(configPath string, cfg *Config) error { - f, err := os.Open(configPath) + f, err := os.Open(p) if err != nil { - return fmt.Errorf("open config: %w", err) + return cfg, fmt.Errorf("open config: %w", err) } defer f.Close() if err = json.NewDecoder(f).Decode(&cfg); err != nil { - return fmt.Errorf("decode config: %w", err) + return cfg, fmt.Errorf("decode config: %w", err) } - return nil + return cfg, nil } From b1fd52beb1dde80ff3d11cc11c2cd3236866e707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 8 Apr 2025 16:57:35 +0200 Subject: [PATCH 6/9] fix: do not wrap, as it could be nil --- internal/docker/context/internal/context.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/docker/context/internal/context.go b/internal/docker/context/internal/context.go index 7612fcd25b..96982fa986 100644 --- a/internal/docker/context/internal/context.go +++ b/internal/docker/context/internal/context.go @@ -105,7 +105,7 @@ func (s *store) findMetadataDirs(root string) ([]string, error) { } return nil }) - return dirs, fmt.Errorf("walk metadata dirs: %w", err) + return dirs, err } func hasMetaFile(dir string) bool { From 6ebeeada0daddfef5f763a557e70fa211817058e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 8 Apr 2025 16:59:55 +0200 Subject: [PATCH 7/9] fix: test assertions --- internal/docker/context/internal/context_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/docker/context/internal/context_test.go b/internal/docker/context/internal/context_test.go index 9b6ebc46c2..26a386f494 100644 --- a/internal/docker/context/internal/context_test.go +++ b/internal/docker/context/internal/context_test.go @@ -88,7 +88,7 @@ func TestStore_load(t *testing.T) { nonExistentDir := filepath.Join(tmpDir, "does-not-exist") _, err := s.load(nonExistentDir) require.Error(t, err) - require.True(t, os.IsNotExist(err)) + require.ErrorIs(t, err, os.ErrNotExist) }) t.Run("meta-json-does-not-exist", func(t *testing.T) { @@ -100,7 +100,7 @@ func TestStore_load(t *testing.T) { _, err := s.load(contextDir) require.Error(t, err) - require.True(t, os.IsNotExist(err)) + require.ErrorIs(t, err, os.ErrNotExist) }) t.Run("invalid-json", func(t *testing.T) { From 205c6b38e8514ad29501561c3d62dbe73f171987 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Wed, 23 Apr 2025 02:40:25 +0200 Subject: [PATCH 8/9] docs: more correct function docs --- internal/docker/context/context.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/internal/docker/context/context.go b/internal/docker/context/context.go index f9042268cc..34afa3e52b 100644 --- a/internal/docker/context/context.go +++ b/internal/docker/context/context.go @@ -54,11 +54,15 @@ func getContextFromEnv() string { return "" } -// Current returns the current context name, based on -// environment variables and the cli configuration file. It does not -// validate if the given context exists or if it's valid. +// Current returns the current context name, based on environment variables +// and the cli configuration file. If no context is explicitly set, it returns +// the default context name. The function may return an error if the configuration +// file exists but cannot be loaded. // -// If the current context is not found, it returns the default context name. +// The context name is determined in the following order: +// 1. Environment variables +// 2. CLI configuration file's "currentContext" field +// 3. Default context name func Current() (string, error) { // Check env vars first (clearer precedence) if ctx := getContextFromEnv(); ctx != "" { From af32fd6bfa2b0bf46f08a855b4115d004f87b252 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Wed, 23 Apr 2025 10:23:45 +0200 Subject: [PATCH 9/9] chore: mod tidy aerospike --- modules/aerospike/go.mod | 1 - modules/aerospike/go.sum | 2 -- 2 files changed, 3 deletions(-) diff --git a/modules/aerospike/go.mod b/modules/aerospike/go.mod index cebd9b8c38..0b427a3356 100644 --- a/modules/aerospike/go.mod +++ b/modules/aerospike/go.mod @@ -15,7 +15,6 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.0.1+incompatible // indirect diff --git a/modules/aerospike/go.sum b/modules/aerospike/go.sum index 0a666ee8dc..6662dc434a 100644 --- a/modules/aerospike/go.sum +++ b/modules/aerospike/go.sum @@ -14,8 +14,6 @@ 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=