From 117dbb62f441dac358109f59c9018974b6a4e584 Mon Sep 17 00:00:00 2001 From: yusing Date: Sat, 3 Jan 2026 20:06:31 +0800 Subject: [PATCH] refactor(docker): accept unix and ssh scheme for providers --- internal/types/docker_provider_config.go | 6 ++++-- internal/types/docker_provider_config_test.go | 7 ++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/internal/types/docker_provider_config.go b/internal/types/docker_provider_config.go index 9118084f..e5117809 100644 --- a/internal/types/docker_provider_config.go +++ b/internal/types/docker_provider_config.go @@ -20,7 +20,7 @@ type DockerProviderConfig struct { } // @name DockerProviderConfig type DockerProviderConfigDetailed struct { - Scheme string `json:"scheme,omitempty" validate:"required,oneof=http https tcp tls"` + Scheme string `json:"scheme,omitempty" validate:"required,oneof=http https tcp tls unix ssh"` Host string `json:"host,omitempty" validate:"required,hostname|ip"` Port int `json:"port,omitempty" validate:"required,min=1,max=65535"` TLS *DockerTLSConfig `json:"tls" validate:"omitempty"` @@ -49,11 +49,13 @@ func (cfg *DockerProviderConfig) Parse(value string) error { switch u.Scheme { case "http", "https", "tcp", "tls": + cfg.URL = u.String() + case "unix", "ssh": + cfg.URL = value default: return fmt.Errorf("invalid scheme: %s", u.Scheme) } - cfg.URL = u.String() return nil } diff --git a/internal/types/docker_provider_config_test.go b/internal/types/docker_provider_config_test.go index c74f377c..3339556a 100644 --- a/internal/types/docker_provider_config_test.go +++ b/internal/types/docker_provider_config_test.go @@ -38,7 +38,12 @@ func TestDockerProviderConfigValidation(t *testing.T) { yamlStr string wantErr bool }{ - {name: "valid url", yamlStr: "test: http://localhost:2375", wantErr: false}, + {name: "valid url (http)", yamlStr: "test: http://localhost:2375", wantErr: false}, + {name: "valid url (https)", yamlStr: "test: https://localhost:2375", wantErr: false}, + {name: "valid url (tcp)", yamlStr: "test: tcp://localhost:2375", wantErr: false}, + {name: "valid url (tls)", yamlStr: "test: tls://localhost:2375", wantErr: false}, + {name: "valid url (unix)", yamlStr: "test: unix:///var/run/docker.sock", wantErr: false}, + {name: "valid url (ssh)", yamlStr: "test: ssh://localhost:2375", wantErr: false}, {name: "invalid url", yamlStr: "test: ftp://localhost/2375", wantErr: true}, {name: "valid scheme", yamlStr: ` test: