...

Source file src/golang.conradwood.net/go-easyops/utils/flags.go

Documentation: golang.conradwood.net/go-easyops/utils

     1  package utils
     2  
     3  import (
     4  	"flag"
     5  	"fmt"
     6  	"sort"
     7  	"strings"
     8  )
     9  
    10  // very weird string flag thing
    11  func FlagStrings(name, help string, values map[string]string) *flag_string_t {
    12  	t := &flag_string_t{name: name, help: help, values: values}
    13  	var vals []string
    14  	for k, _ := range values {
    15  		vals = append(vals, k)
    16  	}
    17  	sort.Slice(vals, func(i, j int) bool {
    18  		return vals[i] < vals[j]
    19  	})
    20  	s := " [" + strings.Join(vals, "|") + "]"
    21  	flag.Var(t, name, help+s)
    22  	return t
    23  }
    24  
    25  type flag_string_t struct {
    26  	name   string
    27  	help   string
    28  	values map[string]string
    29  	value  string
    30  }
    31  
    32  func (f *flag_string_t) Set(s string) error {
    33  	for k, _ := range f.values {
    34  		if k == s {
    35  			f.value = s
    36  			return nil
    37  		}
    38  	}
    39  	return fmt.Errorf("not a valid flag value \"%s\" for -%s.", s, f.name)
    40  }
    41  func (f *flag_string_t) String() string {
    42  	return f.name
    43  }
    44  

View as plain text