opts/runtime.go
7b2e5216
 package opts
 
 import (
 	"fmt"
 	"strings"
 
91e197d6
 	"github.com/docker/docker/api/types"
7b2e5216
 )
 
 // RuntimeOpt defines a map of Runtimes
 type RuntimeOpt struct {
69af7d0d
 	name             string
 	stockRuntimeName string
 	values           *map[string]types.Runtime
7b2e5216
 }
 
 // NewNamedRuntimeOpt creates a new RuntimeOpt
69af7d0d
 func NewNamedRuntimeOpt(name string, ref *map[string]types.Runtime, stockRuntime string) *RuntimeOpt {
7b2e5216
 	if ref == nil {
 		ref = &map[string]types.Runtime{}
 	}
69af7d0d
 	return &RuntimeOpt{name: name, values: ref, stockRuntimeName: stockRuntime}
7b2e5216
 }
 
 // Name returns the name of the NamedListOpts in the configuration.
 func (o *RuntimeOpt) Name() string {
 	return o.name
 }
 
 // Set validates and updates the list of Runtimes
 func (o *RuntimeOpt) Set(val string) error {
 	parts := strings.SplitN(val, "=", 2)
 	if len(parts) != 2 {
 		return fmt.Errorf("invalid runtime argument: %s", val)
 	}
 
 	parts[0] = strings.TrimSpace(parts[0])
 	parts[1] = strings.TrimSpace(parts[1])
 	if parts[0] == "" || parts[1] == "" {
 		return fmt.Errorf("invalid runtime argument: %s", val)
 	}
 
 	parts[0] = strings.ToLower(parts[0])
69af7d0d
 	if parts[0] == o.stockRuntimeName {
 		return fmt.Errorf("runtime name '%s' is reserved", o.stockRuntimeName)
7b2e5216
 	}
 
 	if _, ok := (*o.values)[parts[0]]; ok {
 		return fmt.Errorf("runtime '%s' was already defined", parts[0])
 	}
 
 	(*o.values)[parts[0]] = types.Runtime{Path: parts[1]}
 
 	return nil
 }
 
 // String returns Runtime values as a string.
 func (o *RuntimeOpt) String() string {
 	var out []string
 	for k := range *o.values {
 		out = append(out, k)
 	}
 
 	return fmt.Sprintf("%v", out)
 }
 
 // GetMap returns a map of Runtimes (name: path)
 func (o *RuntimeOpt) GetMap() map[string]types.Runtime {
 	if o.values != nil {
 		return *o.values
 	}
 
 	return map[string]types.Runtime{}
 }
fb833947
 
 // Type returns the type of the option
 func (o *RuntimeOpt) Type() string {
 	return "runtime"
 }