diff options
Diffstat (limited to 'vendor/github.com/pborman/getopt/var.go')
-rw-r--r-- | vendor/github.com/pborman/getopt/var.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/vendor/github.com/pborman/getopt/var.go b/vendor/github.com/pborman/getopt/var.go new file mode 100644 index 0000000..fd816b9 --- /dev/null +++ b/vendor/github.com/pborman/getopt/var.go @@ -0,0 +1,63 @@ +// 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 ( + "fmt" + "runtime" +) + +// Value is the interface to the dynamic value stored in a flag. (The default +// value is represented as a string.) Set is passed the string to set the +// value to as well as the Option that is being processed. +type Value interface { + Set(string, Option) error + String() string +} + +// Var creates an option of the specified name. The type and value of the option +// are represented by the first argument, of type Value, which typically holds a +// user-defined implementation of Value. All options are ultimately created +// as a Var. +func Var(p Value, name rune, helpvalue ...string) Option { + return CommandLine.VarLong(p, "", name, helpvalue...) +} + +func VarLong(p Value, name string, short rune, helpvalue ...string) Option { + return CommandLine.VarLong(p, name, short, helpvalue...) +} + +func (s *Set) Var(p Value, name rune, helpvalue ...string) Option { + return s.VarLong(p, "", name, helpvalue...) +} + +func (s *Set) VarLong(p Value, name string, short rune, helpvalue ...string) Option { + opt := &option{ + short: short, + long: name, + value: p, + defval: p.String(), + } + + switch len(helpvalue) { + case 2: + opt.name = helpvalue[1] + fallthrough + case 1: + opt.help = helpvalue[0] + case 0: + default: + panic("Too many strings for String helpvalue") + } + if _, file, line, ok := runtime.Caller(1); ok { + opt.where = fmt.Sprintf("%s:%d", file, line) + } + if opt.short == 0 && opt.long == "" { + fmt.Fprintf(stderr, opt.where+": no short or long option given") + exit(1) + } + s.AddOption(opt) + return opt +} |