1
0
mirror of https://github.com/mayflower/docker-ls.git synced 2025-11-26 12:03:12 +03:00
Files
docker-ls/lib/config.go
2016-02-26 13:46:27 +01:00

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,
}
}