Tizen_4.0 base
[platform/upstream/docker-engine.git] / vendor / github.com / docker / swarmkit / api / genericresource / string.go
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_Discrete) string {
11         return strconv.FormatInt(d.Discrete.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_Discrete:
18                 return r.Discrete.Kind
19         case *api.GenericResource_Str:
20                 return r.Str.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_Discrete:
30                 return discreteToString(res)
31         case *api.GenericResource_Str:
32                 return res.Str.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 }