diff options
Diffstat (limited to 'vendor/github.com/pborman/getopt/list.go')
-rw-r--r-- | vendor/github.com/pborman/getopt/list.go | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/vendor/github.com/pborman/getopt/list.go b/vendor/github.com/pborman/getopt/list.go new file mode 100644 index 0000000..b9d4267 --- /dev/null +++ b/vendor/github.com/pborman/getopt/list.go @@ -0,0 +1,69 @@ +// Copyright 2013 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package getopt + +import "strings" + +type listValue []string + +func (s *listValue) Set(value string, opt Option) error { + a := strings.Split(value, ",") + // If this is the first time we are seen then nil out the + // default value. + if opt.Count() <= 1 { + *s = nil + } + *s = append(*s, a...) + return nil +} + +func (s *listValue) String() string { + return strings.Join([]string(*s), ",") +} + +// List creates an option that returns a slice of strings. The parameters +// passed are converted from a comma seperated value list into a slice. +// Subsequent occurrences append to the list. +func List(name rune, helpvalue ...string) *[]string { + return CommandLine.List(name, helpvalue...) +} + +func (s *Set) List(name rune, helpvalue ...string) *[]string { + p := []string{} + s.ListVar(&p, name, helpvalue...) + return &p +} + +func ListLong(name string, short rune, helpvalue ...string) *[]string { + return CommandLine.ListLong(name, short, helpvalue...) +} + +func (s *Set) ListLong(name string, short rune, helpvalue ...string) *[]string { + p := []string{} + s.ListVarLong(&p, name, short, helpvalue...) + return &p +} + +// ListVar creats a list option and places the values in p. If p is pointing +// to a list of values then those are considered the default values. The first +// time name is seen in the options the list will be set to list specified by +// the parameter to the option. Subsequent instances of the option will append +// to the list. +func ListVar(p *[]string, name rune, helpvalue ...string) Option { + return CommandLine.ListVar(p, name, helpvalue...) +} + +func (s *Set) ListVar(p *[]string, name rune, helpvalue ...string) Option { + return s.ListVarLong(p, "", name, helpvalue...) +} + +func ListVarLong(p *[]string, name string, short rune, helpvalue ...string) Option { + return CommandLine.ListVarLong(p, name, short, helpvalue...) +} + +func (s *Set) ListVarLong(p *[]string, name string, short rune, helpvalue ...string) Option { + opt := s.VarLong((*listValue)(p), name, short, helpvalue...) + return opt +} |