mirror of https://github.com/docker/cli.git
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
|
package genericresource
|
||
|
|
||
|
import (
|
||
|
"strconv"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/docker/swarmkit/api"
|
||
|
)
|
||
|
|
||
|
func discreteToString(d *api.GenericResource_DiscreteResourceSpec) string {
|
||
|
return strconv.FormatInt(d.DiscreteResourceSpec.Value, 10)
|
||
|
}
|
||
|
|
||
|
// Kind returns the kind key as a string
|
||
|
func Kind(res *api.GenericResource) string {
|
||
|
switch r := res.Resource.(type) {
|
||
|
case *api.GenericResource_DiscreteResourceSpec:
|
||
|
return r.DiscreteResourceSpec.Kind
|
||
|
case *api.GenericResource_NamedResourceSpec:
|
||
|
return r.NamedResourceSpec.Kind
|
||
|
}
|
||
|
|
||
|
return ""
|
||
|
}
|
||
|
|
||
|
// Value returns the value key as a string
|
||
|
func Value(res *api.GenericResource) string {
|
||
|
switch res := res.Resource.(type) {
|
||
|
case *api.GenericResource_DiscreteResourceSpec:
|
||
|
return discreteToString(res)
|
||
|
case *api.GenericResource_NamedResourceSpec:
|
||
|
return res.NamedResourceSpec.Value
|
||
|
}
|
||
|
|
||
|
return ""
|
||
|
}
|
||
|
|
||
|
// EnvFormat returns the environment string version of the resource
|
||
|
func EnvFormat(res []*api.GenericResource, prefix string) []string {
|
||
|
envs := make(map[string][]string)
|
||
|
for _, v := range res {
|
||
|
key := Kind(v)
|
||
|
val := Value(v)
|
||
|
envs[key] = append(envs[key], val)
|
||
|
}
|
||
|
|
||
|
env := make([]string, 0, len(res))
|
||
|
for k, v := range envs {
|
||
|
k = strings.ToUpper(prefix + "_" + k)
|
||
|
env = append(env, k+"="+strings.Join(v, ","))
|
||
|
}
|
||
|
|
||
|
return env
|
||
|
}
|