mirror of https://github.com/docker/docs.git
70 lines
1.5 KiB
Go
70 lines
1.5 KiB
Go
package cluster
|
|
|
|
import (
|
|
"net"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// DriverOpts are key=values options
|
|
type DriverOpts []string
|
|
|
|
// String returns a string from the driver options
|
|
func (do DriverOpts) String(key, env string) (string, bool) {
|
|
for _, opt := range do {
|
|
kv := strings.SplitN(opt, "=", 2)
|
|
if kv[0] == key {
|
|
return kv[1], true
|
|
}
|
|
}
|
|
if env := os.Getenv(env); env != "" {
|
|
return env, true
|
|
}
|
|
return "", false
|
|
}
|
|
|
|
// Int returns an int64 from the driver options
|
|
func (do DriverOpts) Int(key, env string) (int64, bool) {
|
|
if value, ok := do.String(key, env); ok {
|
|
v, _ := strconv.ParseInt(value, 0, 64)
|
|
return v, true
|
|
}
|
|
return 0, false
|
|
}
|
|
|
|
// Uint returns an int64 from the driver options
|
|
func (do DriverOpts) Uint(key, env string) (uint64, bool) {
|
|
if value, ok := do.String(key, env); ok {
|
|
v, _ := strconv.ParseUint(value, 0, 64)
|
|
return v, true
|
|
}
|
|
return 0, false
|
|
}
|
|
|
|
// Float returns a float64 from the driver options
|
|
func (do DriverOpts) Float(key, env string) (float64, bool) {
|
|
if value, ok := do.String(key, env); ok {
|
|
v, _ := strconv.ParseFloat(value, 64)
|
|
return v, true
|
|
}
|
|
return 0.0, false
|
|
}
|
|
|
|
// IP returns an IP address from the driver options
|
|
func (do DriverOpts) IP(key, env string) (net.IP, bool) {
|
|
if value, ok := do.String(key, env); ok {
|
|
return net.ParseIP(value), true
|
|
}
|
|
return nil, false
|
|
}
|
|
|
|
// Bool returns a boolean from the driver options
|
|
func (do DriverOpts) Bool(key, env string) (bool, bool) {
|
|
if value, ok := do.String(key, env); ok {
|
|
b, _ := strconv.ParseBool(value)
|
|
return b, true
|
|
}
|
|
return false, false
|
|
}
|