summaryrefslogtreecommitdiff
path: root/vendor/github.com/pborman/getopt/list.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pborman/getopt/list.go')
-rw-r--r--vendor/github.com/pborman/getopt/list.go69
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
+}