github.com/kaisenlinux/docker@v0.0.0-20230510090727-ea55db55fac7/swarmkit/api/genericresource/string.go (about) 1 package genericresource 2 3 import ( 4 "strconv" 5 "strings" 6 7 "github.com/docker/swarmkit/api" 8 ) 9 10 func discreteToString(d *api.GenericResource_DiscreteResourceSpec) string { 11 return strconv.FormatInt(d.DiscreteResourceSpec.Value, 10) 12 } 13 14 // Kind returns the kind key as a string 15 func Kind(res *api.GenericResource) string { 16 switch r := res.Resource.(type) { 17 case *api.GenericResource_DiscreteResourceSpec: 18 return r.DiscreteResourceSpec.Kind 19 case *api.GenericResource_NamedResourceSpec: 20 return r.NamedResourceSpec.Kind 21 } 22 23 return "" 24 } 25 26 // Value returns the value key as a string 27 func Value(res *api.GenericResource) string { 28 switch res := res.Resource.(type) { 29 case *api.GenericResource_DiscreteResourceSpec: 30 return discreteToString(res) 31 case *api.GenericResource_NamedResourceSpec: 32 return res.NamedResourceSpec.Value 33 } 34 35 return "" 36 } 37 38 // EnvFormat returns the environment string version of the resource 39 func EnvFormat(res []*api.GenericResource, prefix string) []string { 40 envs := make(map[string][]string) 41 for _, v := range res { 42 key := Kind(v) 43 val := Value(v) 44 envs[key] = append(envs[key], val) 45 } 46 47 env := make([]string, 0, len(res)) 48 for k, v := range envs { 49 k = strings.ToUpper(prefix + "_" + k) 50 env = append(env, k+"="+strings.Join(v, ",")) 51 } 52 53 return env 54 }