mirror of
https://github.com/mayflower/docker-ls.git
synced 2025-11-26 12:03:12 +03:00
76 lines
1.7 KiB
Go
76 lines
1.7 KiB
Go
package lib
|
|
|
|
import (
|
|
"flag"
|
|
"net/url"
|
|
|
|
"git.mayflower.de/vaillant-team/docker-ls/lib/auth"
|
|
)
|
|
|
|
var DEFAULT_REGISTRY_URL url.URL
|
|
|
|
func init() {
|
|
parsed, _ := url.Parse("https://index.docker.io")
|
|
|
|
DEFAULT_REGISTRY_URL = *parsed
|
|
}
|
|
|
|
type urlValue url.URL
|
|
|
|
func (u *urlValue) Set(value string) (err error) {
|
|
var parsedUrl *url.URL
|
|
parsedUrl, err = url.Parse(value)
|
|
|
|
if err == nil {
|
|
*(*url.URL)(u) = *parsedUrl
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
type Config struct {
|
|
registryUrl url.URL
|
|
credentials RegistryCredentials
|
|
pageSize uint
|
|
maxConcurrentRequests uint
|
|
basicAuth bool
|
|
allowInsecure bool
|
|
}
|
|
|
|
func (u *urlValue) String() string {
|
|
return (*url.URL)(u).String()
|
|
}
|
|
|
|
func (c *Config) BindToFlags(flags *flag.FlagSet) {
|
|
c.registryUrl = DEFAULT_REGISTRY_URL
|
|
|
|
flags.Var((*urlValue)(&c.registryUrl), "registry", "registry URL")
|
|
flags.UintVar(&c.pageSize, "page-size", c.pageSize, "page size for paginated requests")
|
|
flags.UintVar(&c.maxConcurrentRequests, "max-requests", c.maxConcurrentRequests, "concurrent API request limit")
|
|
flags.BoolVar(&c.basicAuth, "basic-auth", c.basicAuth, "use basic auth instead of token auth")
|
|
flags.BoolVar(&c.allowInsecure, "allow-insecure", c.allowInsecure, "ignore SSL certificate validation errors")
|
|
|
|
c.credentials.BindToFlags(flags)
|
|
}
|
|
|
|
func (c *Config) MaxConcurrentRequests() uint {
|
|
return c.maxConcurrentRequests
|
|
}
|
|
|
|
func (c *Config) Credentials() auth.RegistryCredentials {
|
|
return &c.credentials
|
|
}
|
|
|
|
func (c *Config) AllowInsecure() bool {
|
|
return c.allowInsecure
|
|
}
|
|
|
|
func NewConfig() Config {
|
|
return Config{
|
|
registryUrl: DEFAULT_REGISTRY_URL,
|
|
pageSize: 100,
|
|
maxConcurrentRequests: 5,
|
|
basicAuth: false,
|
|
}
|
|
}
|