123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package opts // import "github.com/docker/docker/opts"
- import (
- "fmt"
- "strings"
- "github.com/docker/docker/api/types/system"
- )
- // RuntimeOpt defines a map of Runtimes
- type RuntimeOpt struct {
- name string
- stockRuntimeName string
- values *map[string]system.Runtime
- }
- // NewNamedRuntimeOpt creates a new RuntimeOpt
- func NewNamedRuntimeOpt(name string, ref *map[string]system.Runtime, stockRuntime string) *RuntimeOpt {
- if ref == nil {
- ref = &map[string]system.Runtime{}
- }
- return &RuntimeOpt{name: name, values: ref, stockRuntimeName: stockRuntime}
- }
- // 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 {
- k, v, ok := strings.Cut(val, "=")
- if !ok {
- return fmt.Errorf("invalid runtime argument: %s", val)
- }
- // TODO(thaJeztah): this should not accept spaces.
- k = strings.TrimSpace(k)
- v = strings.TrimSpace(v)
- if k == "" || v == "" {
- return fmt.Errorf("invalid runtime argument: %s", val)
- }
- // TODO(thaJeztah): this should not be case-insensitive.
- k = strings.ToLower(k)
- if k == o.stockRuntimeName {
- return fmt.Errorf("runtime name '%s' is reserved", o.stockRuntimeName)
- }
- if _, ok := (*o.values)[k]; ok {
- return fmt.Errorf("runtime '%s' was already defined", k)
- }
- (*o.values)[k] = system.Runtime{Path: v}
- 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]system.Runtime {
- if o.values != nil {
- return *o.values
- }
- return map[string]system.Runtime{}
- }
- // Type returns the type of the option
- func (o *RuntimeOpt) Type() string {
- return "runtime"
- }
|