package genericresource import ( "strconv" "strings" "github.com/moby/swarmkit/v2/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 }