http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/bool.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/bool.go 
b/newt/vendor/github.com/spf13/pflag/bool.go
new file mode 100644
index 0000000..d272e40
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/bool.go
@@ -0,0 +1,97 @@
+package pflag
+
+import (
+       "fmt"
+       "strconv"
+)
+
+// optional interface to indicate boolean flags that can be
+// supplied without "=value" text
+type boolFlag interface {
+       Value
+       IsBoolFlag() bool
+}
+
+// -- bool Value
+type boolValue bool
+
+func newBoolValue(val bool, p *bool) *boolValue {
+       *p = val
+       return (*boolValue)(p)
+}
+
+func (b *boolValue) Set(s string) error {
+       v, err := strconv.ParseBool(s)
+       *b = boolValue(v)
+       return err
+}
+
+func (b *boolValue) Type() string {
+       return "bool"
+}
+
+func (b *boolValue) String() string { return fmt.Sprintf("%v", *b) }
+
+func (b *boolValue) IsBoolFlag() bool { return true }
+
+func boolConv(sval string) (interface{}, error) {
+       return strconv.ParseBool(sval)
+}
+
+// GetBool return the bool value of a flag with the given name
+func (f *FlagSet) GetBool(name string) (bool, error) {
+       val, err := f.getFlagType(name, "bool", boolConv)
+       if err != nil {
+               return false, err
+       }
+       return val.(bool), nil
+}
+
+// BoolVar defines a bool flag with specified name, default value, and usage 
string.
+// The argument p points to a bool variable in which to store the value of the 
flag.
+func (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string) {
+       f.BoolVarP(p, name, "", value, usage)
+}
+
+// BoolVarP is like BoolVar, but accepts a shorthand letter that can be used 
after a single dash.
+func (f *FlagSet) BoolVarP(p *bool, name, shorthand string, value bool, usage 
string) {
+       flag := f.VarPF(newBoolValue(value, p), name, shorthand, usage)
+       flag.NoOptDefVal = "true"
+}
+
+// BoolVar defines a bool flag with specified name, default value, and usage 
string.
+// The argument p points to a bool variable in which to store the value of the 
flag.
+func BoolVar(p *bool, name string, value bool, usage string) {
+       BoolVarP(p, name, "", value, usage)
+}
+
+// BoolVarP is like BoolVar, but accepts a shorthand letter that can be used 
after a single dash.
+func BoolVarP(p *bool, name, shorthand string, value bool, usage string) {
+       flag := CommandLine.VarPF(newBoolValue(value, p), name, shorthand, 
usage)
+       flag.NoOptDefVal = "true"
+}
+
+// Bool defines a bool flag with specified name, default value, and usage 
string.
+// The return value is the address of a bool variable that stores the value of 
the flag.
+func (f *FlagSet) Bool(name string, value bool, usage string) *bool {
+       return f.BoolP(name, "", value, usage)
+}
+
+// BoolP is like Bool, but accepts a shorthand letter that can be used after a 
single dash.
+func (f *FlagSet) BoolP(name, shorthand string, value bool, usage string) 
*bool {
+       p := new(bool)
+       f.BoolVarP(p, name, shorthand, value, usage)
+       return p
+}
+
+// Bool defines a bool flag with specified name, default value, and usage 
string.
+// The return value is the address of a bool variable that stores the value of 
the flag.
+func Bool(name string, value bool, usage string) *bool {
+       return BoolP(name, "", value, usage)
+}
+
+// BoolP is like Bool, but accepts a shorthand letter that can be used after a 
single dash.
+func BoolP(name, shorthand string, value bool, usage string) *bool {
+       b := CommandLine.BoolP(name, shorthand, value, usage)
+       return b
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/count.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/count.go 
b/newt/vendor/github.com/spf13/pflag/count.go
new file mode 100644
index 0000000..7b1f142
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/count.go
@@ -0,0 +1,97 @@
+package pflag
+
+import (
+       "fmt"
+       "strconv"
+)
+
+// -- count Value
+type countValue int
+
+func newCountValue(val int, p *int) *countValue {
+       *p = val
+       return (*countValue)(p)
+}
+
+func (i *countValue) Set(s string) error {
+       v, err := strconv.ParseInt(s, 0, 64)
+       // -1 means that no specific value was passed, so increment
+       if v == -1 {
+               *i = countValue(*i + 1)
+       } else {
+               *i = countValue(v)
+       }
+       return err
+}
+
+func (i *countValue) Type() string {
+       return "count"
+}
+
+func (i *countValue) String() string { return fmt.Sprintf("%v", *i) }
+
+func countConv(sval string) (interface{}, error) {
+       i, err := strconv.Atoi(sval)
+       if err != nil {
+               return nil, err
+       }
+       return i, nil
+}
+
+// GetCount return the int value of a flag with the given name
+func (f *FlagSet) GetCount(name string) (int, error) {
+       val, err := f.getFlagType(name, "count", countConv)
+       if err != nil {
+               return 0, err
+       }
+       return val.(int), nil
+}
+
+// CountVar defines a count flag with specified name, default value, and usage 
string.
+// The argument p points to an int variable in which to store the value of the 
flag.
+// A count flag will add 1 to its value evey time it is found on the command 
line
+func (f *FlagSet) CountVar(p *int, name string, usage string) {
+       f.CountVarP(p, name, "", usage)
+}
+
+// CountVarP is like CountVar only take a shorthand for the flag name.
+func (f *FlagSet) CountVarP(p *int, name, shorthand string, usage string) {
+       flag := f.VarPF(newCountValue(0, p), name, shorthand, usage)
+       flag.NoOptDefVal = "-1"
+}
+
+// CountVar like CountVar only the flag is placed on the CommandLine instead 
of a given flag set
+func CountVar(p *int, name string, usage string) {
+       CommandLine.CountVar(p, name, usage)
+}
+
+// CountVarP is like CountVar only take a shorthand for the flag name.
+func CountVarP(p *int, name, shorthand string, usage string) {
+       CommandLine.CountVarP(p, name, shorthand, usage)
+}
+
+// Count defines a count flag with specified name, default value, and usage 
string.
+// The return value is the address of an int variable that stores the value of 
the flag.
+// A count flag will add 1 to its value evey time it is found on the command 
line
+func (f *FlagSet) Count(name string, usage string) *int {
+       p := new(int)
+       f.CountVarP(p, name, "", usage)
+       return p
+}
+
+// CountP is like Count only takes a shorthand for the flag name.
+func (f *FlagSet) CountP(name, shorthand string, usage string) *int {
+       p := new(int)
+       f.CountVarP(p, name, shorthand, usage)
+       return p
+}
+
+// Count like Count only the flag is placed on the CommandLine isntead of a 
given flag set
+func Count(name string, usage string) *int {
+       return CommandLine.CountP(name, "", usage)
+}
+
+// CountP is like Count only takes a shorthand for the flag name.
+func CountP(name, shorthand string, usage string) *int {
+       return CommandLine.CountP(name, shorthand, usage)
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/duration.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/duration.go 
b/newt/vendor/github.com/spf13/pflag/duration.go
new file mode 100644
index 0000000..e9debef
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/duration.go
@@ -0,0 +1,86 @@
+package pflag
+
+import (
+       "time"
+)
+
+// -- time.Duration Value
+type durationValue time.Duration
+
+func newDurationValue(val time.Duration, p *time.Duration) *durationValue {
+       *p = val
+       return (*durationValue)(p)
+}
+
+func (d *durationValue) Set(s string) error {
+       v, err := time.ParseDuration(s)
+       *d = durationValue(v)
+       return err
+}
+
+func (d *durationValue) Type() string {
+       return "duration"
+}
+
+func (d *durationValue) String() string { return (*time.Duration)(d).String() }
+
+func durationConv(sval string) (interface{}, error) {
+       return time.ParseDuration(sval)
+}
+
+// GetDuration return the duration value of a flag with the given name
+func (f *FlagSet) GetDuration(name string) (time.Duration, error) {
+       val, err := f.getFlagType(name, "duration", durationConv)
+       if err != nil {
+               return 0, err
+       }
+       return val.(time.Duration), nil
+}
+
+// DurationVar defines a time.Duration flag with specified name, default 
value, and usage string.
+// The argument p points to a time.Duration variable in which to store the 
value of the flag.
+func (f *FlagSet) DurationVar(p *time.Duration, name string, value 
time.Duration, usage string) {
+       f.VarP(newDurationValue(value, p), name, "", usage)
+}
+
+// DurationVarP is like DurationVar, but accepts a shorthand letter that can 
be used after a single dash.
+func (f *FlagSet) DurationVarP(p *time.Duration, name, shorthand string, value 
time.Duration, usage string) {
+       f.VarP(newDurationValue(value, p), name, shorthand, usage)
+}
+
+// DurationVar defines a time.Duration flag with specified name, default 
value, and usage string.
+// The argument p points to a time.Duration variable in which to store the 
value of the flag.
+func DurationVar(p *time.Duration, name string, value time.Duration, usage 
string) {
+       CommandLine.VarP(newDurationValue(value, p), name, "", usage)
+}
+
+// DurationVarP is like DurationVar, but accepts a shorthand letter that can 
be used after a single dash.
+func DurationVarP(p *time.Duration, name, shorthand string, value 
time.Duration, usage string) {
+       CommandLine.VarP(newDurationValue(value, p), name, shorthand, usage)
+}
+
+// Duration defines a time.Duration flag with specified name, default value, 
and usage string.
+// The return value is the address of a time.Duration variable that stores the 
value of the flag.
+func (f *FlagSet) Duration(name string, value time.Duration, usage string) 
*time.Duration {
+       p := new(time.Duration)
+       f.DurationVarP(p, name, "", value, usage)
+       return p
+}
+
+// DurationP is like Duration, but accepts a shorthand letter that can be used 
after a single dash.
+func (f *FlagSet) DurationP(name, shorthand string, value time.Duration, usage 
string) *time.Duration {
+       p := new(time.Duration)
+       f.DurationVarP(p, name, shorthand, value, usage)
+       return p
+}
+
+// Duration defines a time.Duration flag with specified name, default value, 
and usage string.
+// The return value is the address of a time.Duration variable that stores the 
value of the flag.
+func Duration(name string, value time.Duration, usage string) *time.Duration {
+       return CommandLine.DurationP(name, "", value, usage)
+}
+
+// DurationP is like Duration, but accepts a shorthand letter that can be used 
after a single dash.
+func DurationP(name, shorthand string, value time.Duration, usage string) 
*time.Duration {
+       return CommandLine.DurationP(name, shorthand, value, usage)
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/flag.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/flag.go 
b/newt/vendor/github.com/spf13/pflag/flag.go
new file mode 100644
index 0000000..deac3af
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/flag.go
@@ -0,0 +1,920 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+/*
+Package pflag is a drop-in replacement for Go's flag package, implementing
+POSIX/GNU-style --flags.
+
+pflag is compatible with the GNU extensions to the POSIX recommendations
+for command-line options. See
+http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html
+
+Usage:
+
+pflag is a drop-in replacement of Go's native flag package. If you import
+pflag under the name "flag" then all code should continue to function
+with no changes.
+
+       import flag "github.com/ogier/pflag"
+
+       There is one exception to this: if you directly instantiate the Flag 
struct
+there is one more field "Shorthand" that you will need to set.
+Most code never instantiates this struct directly, and instead uses
+functions such as String(), BoolVar(), and Var(), and is therefore
+unaffected.
+
+Define flags using flag.String(), Bool(), Int(), etc.
+
+This declares an integer flag, -flagname, stored in the pointer ip, with type 
*int.
+       var ip = flag.Int("flagname", 1234, "help message for flagname")
+If you like, you can bind the flag to a variable using the Var() functions.
+       var flagvar int
+       func init() {
+               flag.IntVar(&flagvar, "flagname", 1234, "help message for 
flagname")
+       }
+Or you can create custom flags that satisfy the Value interface (with
+pointer receivers) and couple them to flag parsing by
+       flag.Var(&flagVal, "name", "help message for flagname")
+For such flags, the default value is just the initial value of the variable.
+
+After all flags are defined, call
+       flag.Parse()
+to parse the command line into the defined flags.
+
+Flags may then be used directly. If you're using the flags themselves,
+they are all pointers; if you bind to variables, they're values.
+       fmt.Println("ip has value ", *ip)
+       fmt.Println("flagvar has value ", flagvar)
+
+After parsing, the arguments after the flag are available as the
+slice flag.Args() or individually as flag.Arg(i).
+The arguments are indexed from 0 through flag.NArg()-1.
+
+The pflag package also defines some new functions that are not in flag,
+that give one-letter shorthands for flags. You can use these by appending
+'P' to the name of any function that defines a flag.
+       var ip = flag.IntP("flagname", "f", 1234, "help message")
+       var flagvar bool
+       func init() {
+               flag.BoolVarP("boolname", "b", true, "help message")
+       }
+       flag.VarP(&flagVar, "varname", "v", 1234, "help message")
+Shorthand letters can be used with single dashes on the command line.
+Boolean shorthand flags can be combined with other shorthand flags.
+
+Command line flag syntax:
+       --flag    // boolean flags only
+       --flag=x
+
+Unlike the flag package, a single dash before an option means something
+different than a double dash. Single dashes signify a series of shorthand
+letters for flags. All but the last shorthand letter must be boolean flags.
+       // boolean flags
+       -f
+       -abc
+       // non-boolean flags
+       -n 1234
+       -Ifile
+       // mixed
+       -abcs "hello"
+       -abcn1234
+
+Flag parsing stops after the terminator "--". Unlike the flag package,
+flags can be interspersed with arguments anywhere on the command line
+before this terminator.
+
+Integer flags accept 1234, 0664, 0x1234 and may be negative.
+Boolean flags (in their long form) accept 1, 0, t, f, true, false,
+TRUE, FALSE, True, False.
+Duration flags accept any input valid for time.ParseDuration.
+
+The default set of command-line flags is controlled by
+top-level functions.  The FlagSet type allows one to define
+independent sets of flags, such as to implement subcommands
+in a command-line interface. The methods of FlagSet are
+analogous to the top-level functions for the command-line
+flag set.
+*/
+package pflag
+
+import (
+       "bytes"
+       "errors"
+       "fmt"
+       "io"
+       "os"
+       "sort"
+       "strings"
+)
+
+// ErrHelp is the error returned if the flag -help is invoked but no such flag 
is defined.
+var ErrHelp = errors.New("pflag: help requested")
+
+// ErrorHandling defines how to handle flag parsing errors.
+type ErrorHandling int
+
+const (
+       // ContinueOnError will return an err from Parse() if an error is found
+       ContinueOnError ErrorHandling = iota
+       // ExitOnError will call os.Exit(2) if an error is found when parsing
+       ExitOnError
+       // PanicOnError will panic() if an error is found when parsing flags
+       PanicOnError
+)
+
+// NormalizedName is a flag name that has been normalized according to rules
+// for the FlagSet (e.g. making '-' and '_' equivalent).
+type NormalizedName string
+
+// A FlagSet represents a set of defined flags.
+type FlagSet struct {
+       // Usage is the function called when an error occurs while parsing 
flags.
+       // The field is a function (not a method) that may be changed to point 
to
+       // a custom error handler.
+       Usage func()
+
+       name              string
+       parsed            bool
+       actual            map[NormalizedName]*Flag
+       formal            map[NormalizedName]*Flag
+       shorthands        map[byte]*Flag
+       args              []string // arguments after flags
+       argsLenAtDash     int      // len(args) when a '--' was located when 
parsing, or -1 if no --
+       exitOnError       bool     // does the program exit if there's an error?
+       errorHandling     ErrorHandling
+       output            io.Writer // nil means stderr; use out() accessor
+       interspersed      bool      // allow interspersed option/non-option args
+       normalizeNameFunc func(f *FlagSet, name string) NormalizedName
+}
+
+// A Flag represents the state of a flag.
+type Flag struct {
+       Name                string              // name as it appears on 
command line
+       Shorthand           string              // one-letter abbreviated flag
+       Usage               string              // help message
+       Value               Value               // value as set
+       DefValue            string              // default value (as text); for 
usage message
+       Changed             bool                // If the user set the value 
(or if left to default)
+       NoOptDefVal         string              //default value (as text); if 
the flag is on the command line without any options
+       Deprecated          string              // If this flag is deprecated, 
this string is the new or now thing to use
+       Hidden              bool                // used by cobra.Command to 
allow flags to be hidden from help/usage text
+       ShorthandDeprecated string              // If the shorthand of this 
flag is deprecated, this string is the new or now thing to use
+       Annotations         map[string][]string // used by cobra.Command bash 
autocomple code
+}
+
+// Value is the interface to the dynamic value stored in a flag.
+// (The default value is represented as a string.)
+type Value interface {
+       String() string
+       Set(string) error
+       Type() string
+}
+
+// sortFlags returns the flags as a slice in lexicographical sorted order.
+func sortFlags(flags map[NormalizedName]*Flag) []*Flag {
+       list := make(sort.StringSlice, len(flags))
+       i := 0
+       for k := range flags {
+               list[i] = string(k)
+               i++
+       }
+       list.Sort()
+       result := make([]*Flag, len(list))
+       for i, name := range list {
+               result[i] = flags[NormalizedName(name)]
+       }
+       return result
+}
+
+// SetNormalizeFunc allows you to add a function which can translate flag 
names.
+// Flags added to the FlagSet will be translated and then when anything tries 
to
+// look up the flag that will also be translated. So it would be possible to 
create
+// a flag named "getURL" and have it translated to "geturl".  A user could 
then pass
+// "--getUrl" which may also be translated to "geturl" and everything will 
work.
+func (f *FlagSet) SetNormalizeFunc(n func(f *FlagSet, name string) 
NormalizedName) {
+       f.normalizeNameFunc = n
+       for k, v := range f.formal {
+               delete(f.formal, k)
+               nname := f.normalizeFlagName(string(k))
+               f.formal[nname] = v
+               v.Name = string(nname)
+       }
+}
+
+// GetNormalizeFunc returns the previously set NormalizeFunc of a function 
which
+// does no translation, if not set previously.
+func (f *FlagSet) GetNormalizeFunc() func(f *FlagSet, name string) 
NormalizedName {
+       if f.normalizeNameFunc != nil {
+               return f.normalizeNameFunc
+       }
+       return func(f *FlagSet, name string) NormalizedName { return 
NormalizedName(name) }
+}
+
+func (f *FlagSet) normalizeFlagName(name string) NormalizedName {
+       n := f.GetNormalizeFunc()
+       return n(f, name)
+}
+
+func (f *FlagSet) out() io.Writer {
+       if f.output == nil {
+               return os.Stderr
+       }
+       return f.output
+}
+
+// SetOutput sets the destination for usage and error messages.
+// If output is nil, os.Stderr is used.
+func (f *FlagSet) SetOutput(output io.Writer) {
+       f.output = output
+}
+
+// VisitAll visits the flags in lexicographical order, calling fn for each.
+// It visits all flags, even those not set.
+func (f *FlagSet) VisitAll(fn func(*Flag)) {
+       for _, flag := range sortFlags(f.formal) {
+               fn(flag)
+       }
+}
+
+// HasFlags returns a bool to indicate if the FlagSet has any flags definied.
+func (f *FlagSet) HasFlags() bool {
+       return len(f.formal) > 0
+}
+
+// VisitAll visits the command-line flags in lexicographical order, calling
+// fn for each.  It visits all flags, even those not set.
+func VisitAll(fn func(*Flag)) {
+       CommandLine.VisitAll(fn)
+}
+
+// Visit visits the flags in lexicographical order, calling fn for each.
+// It visits only those flags that have been set.
+func (f *FlagSet) Visit(fn func(*Flag)) {
+       for _, flag := range sortFlags(f.actual) {
+               fn(flag)
+       }
+}
+
+// Visit visits the command-line flags in lexicographical order, calling fn
+// for each.  It visits only those flags that have been set.
+func Visit(fn func(*Flag)) {
+       CommandLine.Visit(fn)
+}
+
+// Lookup returns the Flag structure of the named flag, returning nil if none 
exists.
+func (f *FlagSet) Lookup(name string) *Flag {
+       return f.lookup(f.normalizeFlagName(name))
+}
+
+// lookup returns the Flag structure of the named flag, returning nil if none 
exists.
+func (f *FlagSet) lookup(name NormalizedName) *Flag {
+       return f.formal[name]
+}
+
+// func to return a given type for a given flag name
+func (f *FlagSet) getFlagType(name string, ftype string, convFunc func(sval 
string) (interface{}, error)) (interface{}, error) {
+       flag := f.Lookup(name)
+       if flag == nil {
+               err := fmt.Errorf("flag accessed but not defined: %s", name)
+               return nil, err
+       }
+
+       if flag.Value.Type() != ftype {
+               err := fmt.Errorf("trying to get %s value of flag of type %s", 
ftype, flag.Value.Type())
+               return nil, err
+       }
+
+       sval := flag.Value.String()
+       result, err := convFunc(sval)
+       if err != nil {
+               return nil, err
+       }
+       return result, nil
+}
+
+// ArgsLenAtDash will return the length of f.Args at the moment when a -- was
+// found during arg parsing. This allows your program to know which args were
+// before the -- and which came after.
+func (f *FlagSet) ArgsLenAtDash() int {
+       return f.argsLenAtDash
+}
+
+// MarkDeprecated indicated that a flag is deprecated in your program. It will
+// continue to function but will not show up in help or usage messages. Using
+// this flag will also print the given usageMessage.
+func (f *FlagSet) MarkDeprecated(name string, usageMessage string) error {
+       flag := f.Lookup(name)
+       if flag == nil {
+               return fmt.Errorf("flag %q does not exist", name)
+       }
+       if len(usageMessage) == 0 {
+               return fmt.Errorf("deprecated message for flag %q must be set", 
name)
+       }
+       flag.Deprecated = usageMessage
+       return nil
+}
+
+// MarkShorthandDeprecated will mark the shorthand of a flag deprecated in your
+// program. It will continue to function but will not show up in help or usage
+// messages. Using this flag will also print the given usageMessage.
+func (f *FlagSet) MarkShorthandDeprecated(name string, usageMessage string) 
error {
+       flag := f.Lookup(name)
+       if flag == nil {
+               return fmt.Errorf("flag %q does not exist", name)
+       }
+       if len(usageMessage) == 0 {
+               return fmt.Errorf("deprecated message for flag %q must be set", 
name)
+       }
+       flag.ShorthandDeprecated = usageMessage
+       return nil
+}
+
+// MarkHidden sets a flag to 'hidden' in your program. It will continue to
+// function but will not show up in help or usage messages.
+func (f *FlagSet) MarkHidden(name string) error {
+       flag := f.Lookup(name)
+       if flag == nil {
+               return fmt.Errorf("flag %q does not exist", name)
+       }
+       flag.Hidden = true
+       return nil
+}
+
+// Lookup returns the Flag structure of the named command-line flag,
+// returning nil if none exists.
+func Lookup(name string) *Flag {
+       return CommandLine.Lookup(name)
+}
+
+// Set sets the value of the named flag.
+func (f *FlagSet) Set(name, value string) error {
+       normalName := f.normalizeFlagName(name)
+       flag, ok := f.formal[normalName]
+       if !ok {
+               return fmt.Errorf("no such flag -%v", name)
+       }
+       err := flag.Value.Set(value)
+       if err != nil {
+               return err
+       }
+       if f.actual == nil {
+               f.actual = make(map[NormalizedName]*Flag)
+       }
+       f.actual[normalName] = flag
+       flag.Changed = true
+       if len(flag.Deprecated) > 0 {
+               fmt.Fprintf(os.Stderr, "Flag --%s has been deprecated, %s\n", 
flag.Name, flag.Deprecated)
+       }
+       return nil
+}
+
+// SetAnnotation allows one to set arbitrary annotations on a flag in the 
FlagSet.
+// This is sometimes used by spf13/cobra programs which want to generate 
additional
+// bash completion information.
+func (f *FlagSet) SetAnnotation(name, key string, values []string) error {
+       normalName := f.normalizeFlagName(name)
+       flag, ok := f.formal[normalName]
+       if !ok {
+               return fmt.Errorf("no such flag -%v", name)
+       }
+       if flag.Annotations == nil {
+               flag.Annotations = map[string][]string{}
+       }
+       flag.Annotations[key] = values
+       return nil
+}
+
+// Changed returns true if the flag was explicitly set during Parse() and false
+// otherwise
+func (f *FlagSet) Changed(name string) bool {
+       flag := f.Lookup(name)
+       // If a flag doesn't exist, it wasn't changed....
+       if flag == nil {
+               return false
+       }
+       return flag.Changed
+}
+
+// Set sets the value of the named command-line flag.
+func Set(name, value string) error {
+       return CommandLine.Set(name, value)
+}
+
+// PrintDefaults prints, to standard error unless configured
+// otherwise, the default values of all defined flags in the set.
+func (f *FlagSet) PrintDefaults() {
+       usages := f.FlagUsages()
+       fmt.Fprintf(f.out(), "%s", usages)
+}
+
+// isZeroValue guesses whether the string represents the zero
+// value for a flag. It is not accurate but in practice works OK.
+func isZeroValue(value string) bool {
+       switch value {
+       case "false":
+               return true
+       case "<nil>":
+               return true
+       case "":
+               return true
+       case "0":
+               return true
+       }
+       return false
+}
+
+// UnquoteUsage extracts a back-quoted name from the usage
+// string for a flag and returns it and the un-quoted usage.
+// Given "a `name` to show" it returns ("name", "a name to show").
+// If there are no back quotes, the name is an educated guess of the
+// type of the flag's value, or the empty string if the flag is boolean.
+func UnquoteUsage(flag *Flag) (name string, usage string) {
+       // Look for a back-quoted name, but avoid the strings package.
+       usage = flag.Usage
+       for i := 0; i < len(usage); i++ {
+               if usage[i] == '`' {
+                       for j := i + 1; j < len(usage); j++ {
+                               if usage[j] == '`' {
+                                       name = usage[i+1 : j]
+                                       usage = usage[:i] + name + usage[j+1:]
+                                       return name, usage
+                               }
+                       }
+                       break // Only one back quote; use type name.
+               }
+       }
+       // No explicit name, so use type if we can find one.
+       name = "value"
+       switch flag.Value.(type) {
+       case boolFlag:
+               name = ""
+       case *durationValue:
+               name = "duration"
+       case *float64Value:
+               name = "float"
+       case *intValue, *int64Value:
+               name = "int"
+       case *stringValue:
+               name = "string"
+       case *uintValue, *uint64Value:
+               name = "uint"
+       }
+       return
+}
+
+// FlagUsages Returns a string containing the usage information for all flags 
in
+// the FlagSet
+func (f *FlagSet) FlagUsages() string {
+       x := new(bytes.Buffer)
+
+       lines := make([]string, 0, len(f.formal))
+
+       maxlen := 0
+       f.VisitAll(func(flag *Flag) {
+               if len(flag.Deprecated) > 0 || flag.Hidden {
+                       return
+               }
+
+               line := ""
+               if len(flag.Shorthand) > 0 && len(flag.ShorthandDeprecated) == 
0 {
+                       line = fmt.Sprintf("  -%s, --%s", flag.Shorthand, 
flag.Name)
+               } else {
+                       line = fmt.Sprintf("      --%s", flag.Name)
+               }
+
+               varname, usage := UnquoteUsage(flag)
+               if len(varname) > 0 {
+                       line += " " + varname
+               }
+               if len(flag.NoOptDefVal) > 0 {
+                       switch flag.Value.Type() {
+                       case "string":
+                               line += fmt.Sprintf("[=%q]", flag.NoOptDefVal)
+                       case "bool":
+                               if flag.NoOptDefVal != "true" {
+                                       line += fmt.Sprintf("[=%s]", 
flag.NoOptDefVal)
+                               }
+                       default:
+                               line += fmt.Sprintf("[=%s]", flag.NoOptDefVal)
+                       }
+               }
+
+               // This special character will be replaced with spacing once the
+               // correct alignment is calculated
+               line += "\x00"
+               if len(line) > maxlen {
+                       maxlen = len(line)
+               }
+
+               line += usage
+               if !isZeroValue(flag.DefValue) {
+                       if flag.Value.Type() == "string" {
+                               line += fmt.Sprintf(" (default %q)", 
flag.DefValue)
+                       } else {
+                               line += fmt.Sprintf(" (default %s)", 
flag.DefValue)
+                       }
+               }
+
+               lines = append(lines, line)
+       })
+
+       for _, line := range lines {
+               sidx := strings.Index(line, "\x00")
+               spacing := strings.Repeat(" ", maxlen-sidx)
+               fmt.Fprintln(x, line[:sidx], spacing, line[sidx+1:])
+       }
+
+       return x.String()
+}
+
+// PrintDefaults prints to standard error the default values of all defined 
command-line flags.
+func PrintDefaults() {
+       CommandLine.PrintDefaults()
+}
+
+// defaultUsage is the default function to print a usage message.
+func defaultUsage(f *FlagSet) {
+       fmt.Fprintf(f.out(), "Usage of %s:\n", f.name)
+       f.PrintDefaults()
+}
+
+// NOTE: Usage is not just defaultUsage(CommandLine)
+// because it serves (via godoc flag Usage) as the example
+// for how to write your own usage function.
+
+// Usage prints to standard error a usage message documenting all defined 
command-line flags.
+// The function is a variable that may be changed to point to a custom 
function.
+// By default it prints a simple header and calls PrintDefaults; for details 
about the
+// format of the output and how to control it, see the documentation for 
PrintDefaults.
+var Usage = func() {
+       fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
+       PrintDefaults()
+}
+
+// NFlag returns the number of flags that have been set.
+func (f *FlagSet) NFlag() int { return len(f.actual) }
+
+// NFlag returns the number of command-line flags that have been set.
+func NFlag() int { return len(CommandLine.actual) }
+
+// Arg returns the i'th argument.  Arg(0) is the first remaining argument
+// after flags have been processed.
+func (f *FlagSet) Arg(i int) string {
+       if i < 0 || i >= len(f.args) {
+               return ""
+       }
+       return f.args[i]
+}
+
+// Arg returns the i'th command-line argument.  Arg(0) is the first remaining 
argument
+// after flags have been processed.
+func Arg(i int) string {
+       return CommandLine.Arg(i)
+}
+
+// NArg is the number of arguments remaining after flags have been processed.
+func (f *FlagSet) NArg() int { return len(f.args) }
+
+// NArg is the number of arguments remaining after flags have been processed.
+func NArg() int { return len(CommandLine.args) }
+
+// Args returns the non-flag arguments.
+func (f *FlagSet) Args() []string { return f.args }
+
+// Args returns the non-flag command-line arguments.
+func Args() []string { return CommandLine.args }
+
+// Var defines a flag with the specified name and usage string. The type and
+// value of the flag are represented by the first argument, of type Value, 
which
+// typically holds a user-defined implementation of Value. For instance, the
+// caller could create a flag that turns a comma-separated string into a slice
+// of strings by giving the slice the methods of Value; in particular, Set 
would
+// decompose the comma-separated string into the slice.
+func (f *FlagSet) Var(value Value, name string, usage string) {
+       f.VarP(value, name, "", usage)
+}
+
+// VarPF is like VarP, but returns the flag created
+func (f *FlagSet) VarPF(value Value, name, shorthand, usage string) *Flag {
+       // Remember the default value as a string; it won't change.
+       flag := &Flag{
+               Name:      name,
+               Shorthand: shorthand,
+               Usage:     usage,
+               Value:     value,
+               DefValue:  value.String(),
+       }
+       f.AddFlag(flag)
+       return flag
+}
+
+// VarP is like Var, but accepts a shorthand letter that can be used after a 
single dash.
+func (f *FlagSet) VarP(value Value, name, shorthand, usage string) {
+       _ = f.VarPF(value, name, shorthand, usage)
+}
+
+// AddFlag will add the flag to the FlagSet
+func (f *FlagSet) AddFlag(flag *Flag) {
+       // Call normalizeFlagName function only once
+       normalizedFlagName := f.normalizeFlagName(flag.Name)
+
+       _, alreadythere := f.formal[normalizedFlagName]
+       if alreadythere {
+               msg := fmt.Sprintf("%s flag redefined: %s", f.name, flag.Name)
+               fmt.Fprintln(f.out(), msg)
+               panic(msg) // Happens only if flags are declared with identical 
names
+       }
+       if f.formal == nil {
+               f.formal = make(map[NormalizedName]*Flag)
+       }
+
+       flag.Name = string(normalizedFlagName)
+       f.formal[normalizedFlagName] = flag
+
+       if len(flag.Shorthand) == 0 {
+               return
+       }
+       if len(flag.Shorthand) > 1 {
+               fmt.Fprintf(f.out(), "%s shorthand more than ASCII character: 
%s\n", f.name, flag.Shorthand)
+               panic("shorthand is more than one character")
+       }
+       if f.shorthands == nil {
+               f.shorthands = make(map[byte]*Flag)
+       }
+       c := flag.Shorthand[0]
+       old, alreadythere := f.shorthands[c]
+       if alreadythere {
+               fmt.Fprintf(f.out(), "%s shorthand reused: %q for %s already 
used for %s\n", f.name, c, flag.Name, old.Name)
+               panic("shorthand redefinition")
+       }
+       f.shorthands[c] = flag
+}
+
+// AddFlagSet adds one FlagSet to another. If a flag is already present in f
+// the flag from newSet will be ignored
+func (f *FlagSet) AddFlagSet(newSet *FlagSet) {
+       if newSet == nil {
+               return
+       }
+       newSet.VisitAll(func(flag *Flag) {
+               if f.Lookup(flag.Name) == nil {
+                       f.AddFlag(flag)
+               }
+       })
+}
+
+// Var defines a flag with the specified name and usage string. The type and
+// value of the flag are represented by the first argument, of type Value, 
which
+// typically holds a user-defined implementation of Value. For instance, the
+// caller could create a flag that turns a comma-separated string into a slice
+// of strings by giving the slice the methods of Value; in particular, Set 
would
+// decompose the comma-separated string into the slice.
+func Var(value Value, name string, usage string) {
+       CommandLine.VarP(value, name, "", usage)
+}
+
+// VarP is like Var, but accepts a shorthand letter that can be used after a 
single dash.
+func VarP(value Value, name, shorthand, usage string) {
+       CommandLine.VarP(value, name, shorthand, usage)
+}
+
+// failf prints to standard error a formatted error and usage message and
+// returns the error.
+func (f *FlagSet) failf(format string, a ...interface{}) error {
+       err := fmt.Errorf(format, a...)
+       fmt.Fprintln(f.out(), err)
+       f.usage()
+       return err
+}
+
+// usage calls the Usage method for the flag set, or the usage function if
+// the flag set is CommandLine.
+func (f *FlagSet) usage() {
+       if f == CommandLine {
+               Usage()
+       } else if f.Usage == nil {
+               defaultUsage(f)
+       } else {
+               f.Usage()
+       }
+}
+
+func (f *FlagSet) setFlag(flag *Flag, value string, origArg string) error {
+       if err := flag.Value.Set(value); err != nil {
+               return f.failf("invalid argument %q for %s: %v", value, 
origArg, err)
+       }
+       // mark as visited for Visit()
+       if f.actual == nil {
+               f.actual = make(map[NormalizedName]*Flag)
+       }
+       f.actual[f.normalizeFlagName(flag.Name)] = flag
+       flag.Changed = true
+       if len(flag.Deprecated) > 0 {
+               fmt.Fprintf(os.Stderr, "Flag --%s has been deprecated, %s\n", 
flag.Name, flag.Deprecated)
+       }
+       if len(flag.ShorthandDeprecated) > 0 && containsShorthand(origArg, 
flag.Shorthand) {
+               fmt.Fprintf(os.Stderr, "Flag shorthand -%s has been deprecated, 
%s\n", flag.Shorthand, flag.ShorthandDeprecated)
+       }
+       return nil
+}
+
+func containsShorthand(arg, shorthand string) bool {
+       // filter out flags --<flag_name>
+       if strings.HasPrefix(arg, "-") {
+               return false
+       }
+       arg = strings.SplitN(arg, "=", 2)[0]
+       return strings.Contains(arg, shorthand)
+}
+
+func (f *FlagSet) parseLongArg(s string, args []string) (a []string, err 
error) {
+       a = args
+       name := s[2:]
+       if len(name) == 0 || name[0] == '-' || name[0] == '=' {
+               err = f.failf("bad flag syntax: %s", s)
+               return
+       }
+       split := strings.SplitN(name, "=", 2)
+       name = split[0]
+       flag, alreadythere := f.formal[f.normalizeFlagName(name)]
+       if !alreadythere {
+               if name == "help" { // special case for nice help message.
+                       f.usage()
+                       return a, ErrHelp
+               }
+               err = f.failf("unknown flag: --%s", name)
+               return
+       }
+       var value string
+       if len(split) == 2 {
+               // '--flag=arg'
+               value = split[1]
+       } else if len(flag.NoOptDefVal) > 0 {
+               // '--flag' (arg was optional)
+               value = flag.NoOptDefVal
+       } else if len(a) > 0 {
+               // '--flag arg'
+               value = a[0]
+               a = a[1:]
+       } else {
+               // '--flag' (arg was required)
+               err = f.failf("flag needs an argument: %s", s)
+               return
+       }
+       err = f.setFlag(flag, value, s)
+       return
+}
+
+func (f *FlagSet) parseSingleShortArg(shorthands string, args []string) 
(outShorts string, outArgs []string, err error) {
+       outArgs = args
+       outShorts = shorthands[1:]
+       c := shorthands[0]
+
+       flag, alreadythere := f.shorthands[c]
+       if !alreadythere {
+               if c == 'h' { // special case for nice help message.
+                       f.usage()
+                       err = ErrHelp
+                       return
+               }
+               //TODO continue on error
+               err = f.failf("unknown shorthand flag: %q in -%s", c, 
shorthands)
+               return
+       }
+       var value string
+       if len(shorthands) > 2 && shorthands[1] == '=' {
+               value = shorthands[2:]
+               outShorts = ""
+       } else if len(flag.NoOptDefVal) > 0 {
+               value = flag.NoOptDefVal
+       } else if len(shorthands) > 1 {
+               value = shorthands[1:]
+               outShorts = ""
+       } else if len(args) > 0 {
+               value = args[0]
+               outArgs = args[1:]
+       } else {
+               err = f.failf("flag needs an argument: %q in -%s", c, 
shorthands)
+               return
+       }
+       err = f.setFlag(flag, value, shorthands)
+       return
+}
+
+func (f *FlagSet) parseShortArg(s string, args []string) (a []string, err 
error) {
+       a = args
+       shorthands := s[1:]
+
+       for len(shorthands) > 0 {
+               shorthands, a, err = f.parseSingleShortArg(shorthands, args)
+               if err != nil {
+                       return
+               }
+       }
+
+       return
+}
+
+func (f *FlagSet) parseArgs(args []string) (err error) {
+       for len(args) > 0 {
+               s := args[0]
+               args = args[1:]
+               if len(s) == 0 || s[0] != '-' || len(s) == 1 {
+                       if !f.interspersed {
+                               f.args = append(f.args, s)
+                               f.args = append(f.args, args...)
+                               return nil
+                       }
+                       f.args = append(f.args, s)
+                       continue
+               }
+
+               if s[1] == '-' {
+                       if len(s) == 2 { // "--" terminates the flags
+                               f.argsLenAtDash = len(f.args)
+                               f.args = append(f.args, args...)
+                               break
+                       }
+                       args, err = f.parseLongArg(s, args)
+               } else {
+                       args, err = f.parseShortArg(s, args)
+               }
+               if err != nil {
+                       return
+               }
+       }
+       return
+}
+
+// Parse parses flag definitions from the argument list, which should not
+// include the command name.  Must be called after all flags in the FlagSet
+// are defined and before flags are accessed by the program.
+// The return value will be ErrHelp if -help was set but not defined.
+func (f *FlagSet) Parse(arguments []string) error {
+       f.parsed = true
+       f.args = make([]string, 0, len(arguments))
+       err := f.parseArgs(arguments)
+       if err != nil {
+               switch f.errorHandling {
+               case ContinueOnError:
+                       return err
+               case ExitOnError:
+                       os.Exit(2)
+               case PanicOnError:
+                       panic(err)
+               }
+       }
+       return nil
+}
+
+// Parsed reports whether f.Parse has been called.
+func (f *FlagSet) Parsed() bool {
+       return f.parsed
+}
+
+// Parse parses the command-line flags from os.Args[1:].  Must be called
+// after all flags are defined and before flags are accessed by the program.
+func Parse() {
+       // Ignore errors; CommandLine is set for ExitOnError.
+       CommandLine.Parse(os.Args[1:])
+}
+
+// SetInterspersed sets whether to support interspersed option/non-option 
arguments.
+func SetInterspersed(interspersed bool) {
+       CommandLine.SetInterspersed(interspersed)
+}
+
+// Parsed returns true if the command-line flags have been parsed.
+func Parsed() bool {
+       return CommandLine.Parsed()
+}
+
+// CommandLine is the default set of command-line flags, parsed from os.Args.
+var CommandLine = NewFlagSet(os.Args[0], ExitOnError)
+
+// NewFlagSet returns a new, empty flag set with the specified name and
+// error handling property.
+func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet {
+       f := &FlagSet{
+               name:          name,
+               errorHandling: errorHandling,
+               argsLenAtDash: -1,
+               interspersed:  true,
+       }
+       return f
+}
+
+// SetInterspersed sets whether to support interspersed option/non-option 
arguments.
+func (f *FlagSet) SetInterspersed(interspersed bool) {
+       f.interspersed = interspersed
+}
+
+// Init sets the name and error handling property for a flag set.
+// By default, the zero FlagSet uses an empty name and the
+// ContinueOnError error handling policy.
+func (f *FlagSet) Init(name string, errorHandling ErrorHandling) {
+       f.name = name
+       f.errorHandling = errorHandling
+       f.argsLenAtDash = -1
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/float32.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/float32.go 
b/newt/vendor/github.com/spf13/pflag/float32.go
new file mode 100644
index 0000000..7683fae
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/float32.go
@@ -0,0 +1,91 @@
+package pflag
+
+import (
+       "fmt"
+       "strconv"
+)
+
+// -- float32 Value
+type float32Value float32
+
+func newFloat32Value(val float32, p *float32) *float32Value {
+       *p = val
+       return (*float32Value)(p)
+}
+
+func (f *float32Value) Set(s string) error {
+       v, err := strconv.ParseFloat(s, 32)
+       *f = float32Value(v)
+       return err
+}
+
+func (f *float32Value) Type() string {
+       return "float32"
+}
+
+func (f *float32Value) String() string { return fmt.Sprintf("%v", *f) }
+
+func float32Conv(sval string) (interface{}, error) {
+       v, err := strconv.ParseFloat(sval, 32)
+       if err != nil {
+               return 0, err
+       }
+       return float32(v), nil
+}
+
+// GetFloat32 return the float32 value of a flag with the given name
+func (f *FlagSet) GetFloat32(name string) (float32, error) {
+       val, err := f.getFlagType(name, "float32", float32Conv)
+       if err != nil {
+               return 0, err
+       }
+       return val.(float32), nil
+}
+
+// Float32Var defines a float32 flag with specified name, default value, and 
usage string.
+// The argument p points to a float32 variable in which to store the value of 
the flag.
+func (f *FlagSet) Float32Var(p *float32, name string, value float32, usage 
string) {
+       f.VarP(newFloat32Value(value, p), name, "", usage)
+}
+
+// Float32VarP is like Float32Var, but accepts a shorthand letter that can be 
used after a single dash.
+func (f *FlagSet) Float32VarP(p *float32, name, shorthand string, value 
float32, usage string) {
+       f.VarP(newFloat32Value(value, p), name, shorthand, usage)
+}
+
+// Float32Var defines a float32 flag with specified name, default value, and 
usage string.
+// The argument p points to a float32 variable in which to store the value of 
the flag.
+func Float32Var(p *float32, name string, value float32, usage string) {
+       CommandLine.VarP(newFloat32Value(value, p), name, "", usage)
+}
+
+// Float32VarP is like Float32Var, but accepts a shorthand letter that can be 
used after a single dash.
+func Float32VarP(p *float32, name, shorthand string, value float32, usage 
string) {
+       CommandLine.VarP(newFloat32Value(value, p), name, shorthand, usage)
+}
+
+// Float32 defines a float32 flag with specified name, default value, and 
usage string.
+// The return value is the address of a float32 variable that stores the value 
of the flag.
+func (f *FlagSet) Float32(name string, value float32, usage string) *float32 {
+       p := new(float32)
+       f.Float32VarP(p, name, "", value, usage)
+       return p
+}
+
+// Float32P is like Float32, but accepts a shorthand letter that can be used 
after a single dash.
+func (f *FlagSet) Float32P(name, shorthand string, value float32, usage 
string) *float32 {
+       p := new(float32)
+       f.Float32VarP(p, name, shorthand, value, usage)
+       return p
+}
+
+// Float32 defines a float32 flag with specified name, default value, and 
usage string.
+// The return value is the address of a float32 variable that stores the value 
of the flag.
+func Float32(name string, value float32, usage string) *float32 {
+       return CommandLine.Float32P(name, "", value, usage)
+}
+
+// Float32P is like Float32, but accepts a shorthand letter that can be used 
after a single dash.
+func Float32P(name, shorthand string, value float32, usage string) *float32 {
+       return CommandLine.Float32P(name, shorthand, value, usage)
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/float64.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/float64.go 
b/newt/vendor/github.com/spf13/pflag/float64.go
new file mode 100644
index 0000000..50fbf8c
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/float64.go
@@ -0,0 +1,87 @@
+package pflag
+
+import (
+       "fmt"
+       "strconv"
+)
+
+// -- float64 Value
+type float64Value float64
+
+func newFloat64Value(val float64, p *float64) *float64Value {
+       *p = val
+       return (*float64Value)(p)
+}
+
+func (f *float64Value) Set(s string) error {
+       v, err := strconv.ParseFloat(s, 64)
+       *f = float64Value(v)
+       return err
+}
+
+func (f *float64Value) Type() string {
+       return "float64"
+}
+
+func (f *float64Value) String() string { return fmt.Sprintf("%v", *f) }
+
+func float64Conv(sval string) (interface{}, error) {
+       return strconv.ParseFloat(sval, 64)
+}
+
+// GetFloat64 return the float64 value of a flag with the given name
+func (f *FlagSet) GetFloat64(name string) (float64, error) {
+       val, err := f.getFlagType(name, "float64", float64Conv)
+       if err != nil {
+               return 0, err
+       }
+       return val.(float64), nil
+}
+
+// Float64Var defines a float64 flag with specified name, default value, and 
usage string.
+// The argument p points to a float64 variable in which to store the value of 
the flag.
+func (f *FlagSet) Float64Var(p *float64, name string, value float64, usage 
string) {
+       f.VarP(newFloat64Value(value, p), name, "", usage)
+}
+
+// Float64VarP is like Float64Var, but accepts a shorthand letter that can be 
used after a single dash.
+func (f *FlagSet) Float64VarP(p *float64, name, shorthand string, value 
float64, usage string) {
+       f.VarP(newFloat64Value(value, p), name, shorthand, usage)
+}
+
+// Float64Var defines a float64 flag with specified name, default value, and 
usage string.
+// The argument p points to a float64 variable in which to store the value of 
the flag.
+func Float64Var(p *float64, name string, value float64, usage string) {
+       CommandLine.VarP(newFloat64Value(value, p), name, "", usage)
+}
+
+// Float64VarP is like Float64Var, but accepts a shorthand letter that can be 
used after a single dash.
+func Float64VarP(p *float64, name, shorthand string, value float64, usage 
string) {
+       CommandLine.VarP(newFloat64Value(value, p), name, shorthand, usage)
+}
+
+// Float64 defines a float64 flag with specified name, default value, and 
usage string.
+// The return value is the address of a float64 variable that stores the value 
of the flag.
+func (f *FlagSet) Float64(name string, value float64, usage string) *float64 {
+       p := new(float64)
+       f.Float64VarP(p, name, "", value, usage)
+       return p
+}
+
+// Float64P is like Float64, but accepts a shorthand letter that can be used 
after a single dash.
+func (f *FlagSet) Float64P(name, shorthand string, value float64, usage 
string) *float64 {
+       p := new(float64)
+       f.Float64VarP(p, name, shorthand, value, usage)
+       return p
+}
+
+// Float64 defines a float64 flag with specified name, default value, and 
usage string.
+// The return value is the address of a float64 variable that stores the value 
of the flag.
+func Float64(name string, value float64, usage string) *float64 {
+       return CommandLine.Float64P(name, "", value, usage)
+}
+
+// Float64P is like Float64, but accepts a shorthand letter that can be used 
after a single dash.
+func Float64P(name, shorthand string, value float64, usage string) *float64 {
+       return CommandLine.Float64P(name, shorthand, value, usage)
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/golangflag.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/golangflag.go 
b/newt/vendor/github.com/spf13/pflag/golangflag.go
new file mode 100644
index 0000000..b056147
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/golangflag.go
@@ -0,0 +1,104 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package pflag
+
+import (
+       goflag "flag"
+       "fmt"
+       "reflect"
+       "strings"
+)
+
+var _ = fmt.Print
+
+// flagValueWrapper implements pflag.Value around a flag.Value.  The main
+// difference here is the addition of the Type method that returns a string
+// name of the type.  As this is generally unknown, we approximate that with
+// reflection.
+type flagValueWrapper struct {
+       inner    goflag.Value
+       flagType string
+}
+
+// We are just copying the boolFlag interface out of goflag as that is what
+// they use to decide if a flag should get "true" when no arg is given.
+type goBoolFlag interface {
+       goflag.Value
+       IsBoolFlag() bool
+}
+
+func wrapFlagValue(v goflag.Value) Value {
+       // If the flag.Value happens to also be a pflag.Value, just use it 
directly.
+       if pv, ok := v.(Value); ok {
+               return pv
+       }
+
+       pv := &flagValueWrapper{
+               inner: v,
+       }
+
+       t := reflect.TypeOf(v)
+       if t.Kind() == reflect.Interface || t.Kind() == reflect.Ptr {
+               t = t.Elem()
+       }
+
+       pv.flagType = strings.TrimSuffix(t.Name(), "Value")
+       return pv
+}
+
+func (v *flagValueWrapper) String() string {
+       return v.inner.String()
+}
+
+func (v *flagValueWrapper) Set(s string) error {
+       return v.inner.Set(s)
+}
+
+func (v *flagValueWrapper) Type() string {
+       return v.flagType
+}
+
+// PFlagFromGoFlag will return a *pflag.Flag given a *flag.Flag
+// If the *flag.Flag.Name was a single character (ex: `v`) it will be 
accessiblei
+// with both `-v` and `--v` in flags. If the golang flag was more than a single
+// character (ex: `verbose`) it will only be accessible via `--verbose`
+func PFlagFromGoFlag(goflag *goflag.Flag) *Flag {
+       // Remember the default value as a string; it won't change.
+       flag := &Flag{
+               Name:  goflag.Name,
+               Usage: goflag.Usage,
+               Value: wrapFlagValue(goflag.Value),
+               // Looks like golang flags don't set DefValue correctly  :-(
+               //DefValue: goflag.DefValue,
+               DefValue: goflag.Value.String(),
+       }
+       // Ex: if the golang flag was -v, allow both -v and --v to work
+       if len(flag.Name) == 1 {
+               flag.Shorthand = flag.Name
+       }
+       if fv, ok := goflag.Value.(goBoolFlag); ok && fv.IsBoolFlag() {
+               flag.NoOptDefVal = "true"
+       }
+       return flag
+}
+
+// AddGoFlag will add the given *flag.Flag to the pflag.FlagSet
+func (f *FlagSet) AddGoFlag(goflag *goflag.Flag) {
+       if f.Lookup(goflag.Name) != nil {
+               return
+       }
+       newflag := PFlagFromGoFlag(goflag)
+       f.AddFlag(newflag)
+}
+
+// AddGoFlagSet will add the given *flag.FlagSet to the pflag.FlagSet
+func (f *FlagSet) AddGoFlagSet(newSet *goflag.FlagSet) {
+       if newSet == nil {
+               return
+       }
+       newSet.VisitAll(func(goflag *goflag.Flag) {
+               f.AddGoFlag(goflag)
+       })
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/int.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/int.go 
b/newt/vendor/github.com/spf13/pflag/int.go
new file mode 100644
index 0000000..b656036
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/int.go
@@ -0,0 +1,87 @@
+package pflag
+
+import (
+       "fmt"
+       "strconv"
+)
+
+// -- int Value
+type intValue int
+
+func newIntValue(val int, p *int) *intValue {
+       *p = val
+       return (*intValue)(p)
+}
+
+func (i *intValue) Set(s string) error {
+       v, err := strconv.ParseInt(s, 0, 64)
+       *i = intValue(v)
+       return err
+}
+
+func (i *intValue) Type() string {
+       return "int"
+}
+
+func (i *intValue) String() string { return fmt.Sprintf("%v", *i) }
+
+func intConv(sval string) (interface{}, error) {
+       return strconv.Atoi(sval)
+}
+
+// GetInt return the int value of a flag with the given name
+func (f *FlagSet) GetInt(name string) (int, error) {
+       val, err := f.getFlagType(name, "int", intConv)
+       if err != nil {
+               return 0, err
+       }
+       return val.(int), nil
+}
+
+// IntVar defines an int flag with specified name, default value, and usage 
string.
+// The argument p points to an int variable in which to store the value of the 
flag.
+func (f *FlagSet) IntVar(p *int, name string, value int, usage string) {
+       f.VarP(newIntValue(value, p), name, "", usage)
+}
+
+// IntVarP is like IntVar, but accepts a shorthand letter that can be used 
after a single dash.
+func (f *FlagSet) IntVarP(p *int, name, shorthand string, value int, usage 
string) {
+       f.VarP(newIntValue(value, p), name, shorthand, usage)
+}
+
+// IntVar defines an int flag with specified name, default value, and usage 
string.
+// The argument p points to an int variable in which to store the value of the 
flag.
+func IntVar(p *int, name string, value int, usage string) {
+       CommandLine.VarP(newIntValue(value, p), name, "", usage)
+}
+
+// IntVarP is like IntVar, but accepts a shorthand letter that can be used 
after a single dash.
+func IntVarP(p *int, name, shorthand string, value int, usage string) {
+       CommandLine.VarP(newIntValue(value, p), name, shorthand, usage)
+}
+
+// Int defines an int flag with specified name, default value, and usage 
string.
+// The return value is the address of an int variable that stores the value of 
the flag.
+func (f *FlagSet) Int(name string, value int, usage string) *int {
+       p := new(int)
+       f.IntVarP(p, name, "", value, usage)
+       return p
+}
+
+// IntP is like Int, but accepts a shorthand letter that can be used after a 
single dash.
+func (f *FlagSet) IntP(name, shorthand string, value int, usage string) *int {
+       p := new(int)
+       f.IntVarP(p, name, shorthand, value, usage)
+       return p
+}
+
+// Int defines an int flag with specified name, default value, and usage 
string.
+// The return value is the address of an int variable that stores the value of 
the flag.
+func Int(name string, value int, usage string) *int {
+       return CommandLine.IntP(name, "", value, usage)
+}
+
+// IntP is like Int, but accepts a shorthand letter that can be used after a 
single dash.
+func IntP(name, shorthand string, value int, usage string) *int {
+       return CommandLine.IntP(name, shorthand, value, usage)
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/int32.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/int32.go 
b/newt/vendor/github.com/spf13/pflag/int32.go
new file mode 100644
index 0000000..41659a9
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/int32.go
@@ -0,0 +1,91 @@
+package pflag
+
+import (
+       "fmt"
+       "strconv"
+)
+
+// -- int32 Value
+type int32Value int32
+
+func newInt32Value(val int32, p *int32) *int32Value {
+       *p = val
+       return (*int32Value)(p)
+}
+
+func (i *int32Value) Set(s string) error {
+       v, err := strconv.ParseInt(s, 0, 32)
+       *i = int32Value(v)
+       return err
+}
+
+func (i *int32Value) Type() string {
+       return "int32"
+}
+
+func (i *int32Value) String() string { return fmt.Sprintf("%v", *i) }
+
+func int32Conv(sval string) (interface{}, error) {
+       v, err := strconv.ParseInt(sval, 0, 32)
+       if err != nil {
+               return 0, err
+       }
+       return int32(v), nil
+}
+
+// GetInt32 return the int32 value of a flag with the given name
+func (f *FlagSet) GetInt32(name string) (int32, error) {
+       val, err := f.getFlagType(name, "int32", int32Conv)
+       if err != nil {
+               return 0, err
+       }
+       return val.(int32), nil
+}
+
+// Int32Var defines an int32 flag with specified name, default value, and 
usage string.
+// The argument p points to an int32 variable in which to store the value of 
the flag.
+func (f *FlagSet) Int32Var(p *int32, name string, value int32, usage string) {
+       f.VarP(newInt32Value(value, p), name, "", usage)
+}
+
+// Int32VarP is like Int32Var, but accepts a shorthand letter that can be used 
after a single dash.
+func (f *FlagSet) Int32VarP(p *int32, name, shorthand string, value int32, 
usage string) {
+       f.VarP(newInt32Value(value, p), name, shorthand, usage)
+}
+
+// Int32Var defines an int32 flag with specified name, default value, and 
usage string.
+// The argument p points to an int32 variable in which to store the value of 
the flag.
+func Int32Var(p *int32, name string, value int32, usage string) {
+       CommandLine.VarP(newInt32Value(value, p), name, "", usage)
+}
+
+// Int32VarP is like Int32Var, but accepts a shorthand letter that can be used 
after a single dash.
+func Int32VarP(p *int32, name, shorthand string, value int32, usage string) {
+       CommandLine.VarP(newInt32Value(value, p), name, shorthand, usage)
+}
+
+// Int32 defines an int32 flag with specified name, default value, and usage 
string.
+// The return value is the address of an int32 variable that stores the value 
of the flag.
+func (f *FlagSet) Int32(name string, value int32, usage string) *int32 {
+       p := new(int32)
+       f.Int32VarP(p, name, "", value, usage)
+       return p
+}
+
+// Int32P is like Int32, but accepts a shorthand letter that can be used after 
a single dash.
+func (f *FlagSet) Int32P(name, shorthand string, value int32, usage string) 
*int32 {
+       p := new(int32)
+       f.Int32VarP(p, name, shorthand, value, usage)
+       return p
+}
+
+// Int32 defines an int32 flag with specified name, default value, and usage 
string.
+// The return value is the address of an int32 variable that stores the value 
of the flag.
+func Int32(name string, value int32, usage string) *int32 {
+       return CommandLine.Int32P(name, "", value, usage)
+}
+
+// Int32P is like Int32, but accepts a shorthand letter that can be used after 
a single dash.
+func Int32P(name, shorthand string, value int32, usage string) *int32 {
+       return CommandLine.Int32P(name, shorthand, value, usage)
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/int64.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/int64.go 
b/newt/vendor/github.com/spf13/pflag/int64.go
new file mode 100644
index 0000000..6e67e38
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/int64.go
@@ -0,0 +1,87 @@
+package pflag
+
+import (
+       "fmt"
+       "strconv"
+)
+
+// -- int64 Value
+type int64Value int64
+
+func newInt64Value(val int64, p *int64) *int64Value {
+       *p = val
+       return (*int64Value)(p)
+}
+
+func (i *int64Value) Set(s string) error {
+       v, err := strconv.ParseInt(s, 0, 64)
+       *i = int64Value(v)
+       return err
+}
+
+func (i *int64Value) Type() string {
+       return "int64"
+}
+
+func (i *int64Value) String() string { return fmt.Sprintf("%v", *i) }
+
+func int64Conv(sval string) (interface{}, error) {
+       return strconv.ParseInt(sval, 0, 64)
+}
+
+// GetInt64 return the int64 value of a flag with the given name
+func (f *FlagSet) GetInt64(name string) (int64, error) {
+       val, err := f.getFlagType(name, "int64", int64Conv)
+       if err != nil {
+               return 0, err
+       }
+       return val.(int64), nil
+}
+
+// Int64Var defines an int64 flag with specified name, default value, and 
usage string.
+// The argument p points to an int64 variable in which to store the value of 
the flag.
+func (f *FlagSet) Int64Var(p *int64, name string, value int64, usage string) {
+       f.VarP(newInt64Value(value, p), name, "", usage)
+}
+
+// Int64VarP is like Int64Var, but accepts a shorthand letter that can be used 
after a single dash.
+func (f *FlagSet) Int64VarP(p *int64, name, shorthand string, value int64, 
usage string) {
+       f.VarP(newInt64Value(value, p), name, shorthand, usage)
+}
+
+// Int64Var defines an int64 flag with specified name, default value, and 
usage string.
+// The argument p points to an int64 variable in which to store the value of 
the flag.
+func Int64Var(p *int64, name string, value int64, usage string) {
+       CommandLine.VarP(newInt64Value(value, p), name, "", usage)
+}
+
+// Int64VarP is like Int64Var, but accepts a shorthand letter that can be used 
after a single dash.
+func Int64VarP(p *int64, name, shorthand string, value int64, usage string) {
+       CommandLine.VarP(newInt64Value(value, p), name, shorthand, usage)
+}
+
+// Int64 defines an int64 flag with specified name, default value, and usage 
string.
+// The return value is the address of an int64 variable that stores the value 
of the flag.
+func (f *FlagSet) Int64(name string, value int64, usage string) *int64 {
+       p := new(int64)
+       f.Int64VarP(p, name, "", value, usage)
+       return p
+}
+
+// Int64P is like Int64, but accepts a shorthand letter that can be used after 
a single dash.
+func (f *FlagSet) Int64P(name, shorthand string, value int64, usage string) 
*int64 {
+       p := new(int64)
+       f.Int64VarP(p, name, shorthand, value, usage)
+       return p
+}
+
+// Int64 defines an int64 flag with specified name, default value, and usage 
string.
+// The return value is the address of an int64 variable that stores the value 
of the flag.
+func Int64(name string, value int64, usage string) *int64 {
+       return CommandLine.Int64P(name, "", value, usage)
+}
+
+// Int64P is like Int64, but accepts a shorthand letter that can be used after 
a single dash.
+func Int64P(name, shorthand string, value int64, usage string) *int64 {
+       return CommandLine.Int64P(name, shorthand, value, usage)
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/int8.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/int8.go 
b/newt/vendor/github.com/spf13/pflag/int8.go
new file mode 100644
index 0000000..400db21
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/int8.go
@@ -0,0 +1,91 @@
+package pflag
+
+import (
+       "fmt"
+       "strconv"
+)
+
+// -- int8 Value
+type int8Value int8
+
+func newInt8Value(val int8, p *int8) *int8Value {
+       *p = val
+       return (*int8Value)(p)
+}
+
+func (i *int8Value) Set(s string) error {
+       v, err := strconv.ParseInt(s, 0, 8)
+       *i = int8Value(v)
+       return err
+}
+
+func (i *int8Value) Type() string {
+       return "int8"
+}
+
+func (i *int8Value) String() string { return fmt.Sprintf("%v", *i) }
+
+func int8Conv(sval string) (interface{}, error) {
+       v, err := strconv.ParseInt(sval, 0, 8)
+       if err != nil {
+               return 0, err
+       }
+       return int8(v), nil
+}
+
+// GetInt8 return the int8 value of a flag with the given name
+func (f *FlagSet) GetInt8(name string) (int8, error) {
+       val, err := f.getFlagType(name, "int8", int8Conv)
+       if err != nil {
+               return 0, err
+       }
+       return val.(int8), nil
+}
+
+// Int8Var defines an int8 flag with specified name, default value, and usage 
string.
+// The argument p points to an int8 variable in which to store the value of 
the flag.
+func (f *FlagSet) Int8Var(p *int8, name string, value int8, usage string) {
+       f.VarP(newInt8Value(value, p), name, "", usage)
+}
+
+// Int8VarP is like Int8Var, but accepts a shorthand letter that can be used 
after a single dash.
+func (f *FlagSet) Int8VarP(p *int8, name, shorthand string, value int8, usage 
string) {
+       f.VarP(newInt8Value(value, p), name, shorthand, usage)
+}
+
+// Int8Var defines an int8 flag with specified name, default value, and usage 
string.
+// The argument p points to an int8 variable in which to store the value of 
the flag.
+func Int8Var(p *int8, name string, value int8, usage string) {
+       CommandLine.VarP(newInt8Value(value, p), name, "", usage)
+}
+
+// Int8VarP is like Int8Var, but accepts a shorthand letter that can be used 
after a single dash.
+func Int8VarP(p *int8, name, shorthand string, value int8, usage string) {
+       CommandLine.VarP(newInt8Value(value, p), name, shorthand, usage)
+}
+
+// Int8 defines an int8 flag with specified name, default value, and usage 
string.
+// The return value is the address of an int8 variable that stores the value 
of the flag.
+func (f *FlagSet) Int8(name string, value int8, usage string) *int8 {
+       p := new(int8)
+       f.Int8VarP(p, name, "", value, usage)
+       return p
+}
+
+// Int8P is like Int8, but accepts a shorthand letter that can be used after a 
single dash.
+func (f *FlagSet) Int8P(name, shorthand string, value int8, usage string) 
*int8 {
+       p := new(int8)
+       f.Int8VarP(p, name, shorthand, value, usage)
+       return p
+}
+
+// Int8 defines an int8 flag with specified name, default value, and usage 
string.
+// The return value is the address of an int8 variable that stores the value 
of the flag.
+func Int8(name string, value int8, usage string) *int8 {
+       return CommandLine.Int8P(name, "", value, usage)
+}
+
+// Int8P is like Int8, but accepts a shorthand letter that can be used after a 
single dash.
+func Int8P(name, shorthand string, value int8, usage string) *int8 {
+       return CommandLine.Int8P(name, shorthand, value, usage)
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/int_slice.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/int_slice.go 
b/newt/vendor/github.com/spf13/pflag/int_slice.go
new file mode 100644
index 0000000..1e7c9ed
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/int_slice.go
@@ -0,0 +1,128 @@
+package pflag
+
+import (
+       "fmt"
+       "strconv"
+       "strings"
+)
+
+// -- intSlice Value
+type intSliceValue struct {
+       value   *[]int
+       changed bool
+}
+
+func newIntSliceValue(val []int, p *[]int) *intSliceValue {
+       isv := new(intSliceValue)
+       isv.value = p
+       *isv.value = val
+       return isv
+}
+
+func (s *intSliceValue) Set(val string) error {
+       ss := strings.Split(val, ",")
+       out := make([]int, len(ss))
+       for i, d := range ss {
+               var err error
+               out[i], err = strconv.Atoi(d)
+               if err != nil {
+                       return err
+               }
+
+       }
+       if !s.changed {
+               *s.value = out
+       } else {
+               *s.value = append(*s.value, out...)
+       }
+       s.changed = true
+       return nil
+}
+
+func (s *intSliceValue) Type() string {
+       return "intSlice"
+}
+
+func (s *intSliceValue) String() string {
+       out := make([]string, len(*s.value))
+       for i, d := range *s.value {
+               out[i] = fmt.Sprintf("%d", d)
+       }
+       return "[" + strings.Join(out, ",") + "]"
+}
+
+func intSliceConv(val string) (interface{}, error) {
+       val = strings.Trim(val, "[]")
+       // Empty string would cause a slice with one (empty) entry
+       if len(val) == 0 {
+               return []int{}, nil
+       }
+       ss := strings.Split(val, ",")
+       out := make([]int, len(ss))
+       for i, d := range ss {
+               var err error
+               out[i], err = strconv.Atoi(d)
+               if err != nil {
+                       return nil, err
+               }
+
+       }
+       return out, nil
+}
+
+// GetIntSlice return the []int value of a flag with the given name
+func (f *FlagSet) GetIntSlice(name string) ([]int, error) {
+       val, err := f.getFlagType(name, "intSlice", intSliceConv)
+       if err != nil {
+               return []int{}, err
+       }
+       return val.([]int), nil
+}
+
+// IntSliceVar defines a intSlice flag with specified name, default value, and 
usage string.
+// The argument p points to a []int variable in which to store the value of 
the flag.
+func (f *FlagSet) IntSliceVar(p *[]int, name string, value []int, usage 
string) {
+       f.VarP(newIntSliceValue(value, p), name, "", usage)
+}
+
+// IntSliceVarP is like IntSliceVar, but accepts a shorthand letter that can 
be used after a single dash.
+func (f *FlagSet) IntSliceVarP(p *[]int, name, shorthand string, value []int, 
usage string) {
+       f.VarP(newIntSliceValue(value, p), name, shorthand, usage)
+}
+
+// IntSliceVar defines a int[] flag with specified name, default value, and 
usage string.
+// The argument p points to a int[] variable in which to store the value of 
the flag.
+func IntSliceVar(p *[]int, name string, value []int, usage string) {
+       CommandLine.VarP(newIntSliceValue(value, p), name, "", usage)
+}
+
+// IntSliceVarP is like IntSliceVar, but accepts a shorthand letter that can 
be used after a single dash.
+func IntSliceVarP(p *[]int, name, shorthand string, value []int, usage string) 
{
+       CommandLine.VarP(newIntSliceValue(value, p), name, shorthand, usage)
+}
+
+// IntSlice defines a []int flag with specified name, default value, and usage 
string.
+// The return value is the address of a []int variable that stores the value 
of the flag.
+func (f *FlagSet) IntSlice(name string, value []int, usage string) *[]int {
+       p := []int{}
+       f.IntSliceVarP(&p, name, "", value, usage)
+       return &p
+}
+
+// IntSliceP is like IntSlice, but accepts a shorthand letter that can be used 
after a single dash.
+func (f *FlagSet) IntSliceP(name, shorthand string, value []int, usage string) 
*[]int {
+       p := []int{}
+       f.IntSliceVarP(&p, name, shorthand, value, usage)
+       return &p
+}
+
+// IntSlice defines a []int flag with specified name, default value, and usage 
string.
+// The return value is the address of a []int variable that stores the value 
of the flag.
+func IntSlice(name string, value []int, usage string) *[]int {
+       return CommandLine.IntSliceP(name, "", value, usage)
+}
+
+// IntSliceP is like IntSlice, but accepts a shorthand letter that can be used 
after a single dash.
+func IntSliceP(name, shorthand string, value []int, usage string) *[]int {
+       return CommandLine.IntSliceP(name, shorthand, value, usage)
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/ip.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/ip.go 
b/newt/vendor/github.com/spf13/pflag/ip.go
new file mode 100644
index 0000000..88a1743
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/ip.go
@@ -0,0 +1,96 @@
+package pflag
+
+import (
+       "fmt"
+       "net"
+       "strings"
+)
+
+var _ = strings.TrimSpace
+
+// -- net.IP value
+type ipValue net.IP
+
+func newIPValue(val net.IP, p *net.IP) *ipValue {
+       *p = val
+       return (*ipValue)(p)
+}
+
+func (i *ipValue) String() string { return net.IP(*i).String() }
+func (i *ipValue) Set(s string) error {
+       ip := net.ParseIP(strings.TrimSpace(s))
+       if ip == nil {
+               return fmt.Errorf("failed to parse IP: %q", s)
+       }
+       *i = ipValue(ip)
+       return nil
+}
+
+func (i *ipValue) Type() string {
+       return "ip"
+}
+
+func ipConv(sval string) (interface{}, error) {
+       ip := net.ParseIP(sval)
+       if ip != nil {
+               return ip, nil
+       }
+       return nil, fmt.Errorf("invalid string being converted to IP address: 
%s", sval)
+}
+
+// GetIP return the net.IP value of a flag with the given name
+func (f *FlagSet) GetIP(name string) (net.IP, error) {
+       val, err := f.getFlagType(name, "ip", ipConv)
+       if err != nil {
+               return nil, err
+       }
+       return val.(net.IP), nil
+}
+
+// IPVar defines an net.IP flag with specified name, default value, and usage 
string.
+// The argument p points to an net.IP variable in which to store the value of 
the flag.
+func (f *FlagSet) IPVar(p *net.IP, name string, value net.IP, usage string) {
+       f.VarP(newIPValue(value, p), name, "", usage)
+}
+
+// IPVarP is like IPVar, but accepts a shorthand letter that can be used after 
a single dash.
+func (f *FlagSet) IPVarP(p *net.IP, name, shorthand string, value net.IP, 
usage string) {
+       f.VarP(newIPValue(value, p), name, shorthand, usage)
+}
+
+// IPVar defines an net.IP flag with specified name, default value, and usage 
string.
+// The argument p points to an net.IP variable in which to store the value of 
the flag.
+func IPVar(p *net.IP, name string, value net.IP, usage string) {
+       CommandLine.VarP(newIPValue(value, p), name, "", usage)
+}
+
+// IPVarP is like IPVar, but accepts a shorthand letter that can be used after 
a single dash.
+func IPVarP(p *net.IP, name, shorthand string, value net.IP, usage string) {
+       CommandLine.VarP(newIPValue(value, p), name, shorthand, usage)
+}
+
+// IP defines an net.IP flag with specified name, default value, and usage 
string.
+// The return value is the address of an net.IP variable that stores the value 
of the flag.
+func (f *FlagSet) IP(name string, value net.IP, usage string) *net.IP {
+       p := new(net.IP)
+       f.IPVarP(p, name, "", value, usage)
+       return p
+}
+
+// IPP is like IP, but accepts a shorthand letter that can be used after a 
single dash.
+func (f *FlagSet) IPP(name, shorthand string, value net.IP, usage string) 
*net.IP {
+       p := new(net.IP)
+       f.IPVarP(p, name, shorthand, value, usage)
+       return p
+}
+
+// IP defines an net.IP flag with specified name, default value, and usage 
string.
+// The return value is the address of an net.IP variable that stores the value 
of the flag.
+func IP(name string, value net.IP, usage string) *net.IP {
+       return CommandLine.IPP(name, "", value, usage)
+}
+
+// IPP is like IP, but accepts a shorthand letter that can be used after a 
single dash.
+func IPP(name, shorthand string, value net.IP, usage string) *net.IP {
+       return CommandLine.IPP(name, shorthand, value, usage)
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/ipmask.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/ipmask.go 
b/newt/vendor/github.com/spf13/pflag/ipmask.go
new file mode 100644
index 0000000..5bd44bd
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/ipmask.go
@@ -0,0 +1,122 @@
+package pflag
+
+import (
+       "fmt"
+       "net"
+       "strconv"
+)
+
+// -- net.IPMask value
+type ipMaskValue net.IPMask
+
+func newIPMaskValue(val net.IPMask, p *net.IPMask) *ipMaskValue {
+       *p = val
+       return (*ipMaskValue)(p)
+}
+
+func (i *ipMaskValue) String() string { return net.IPMask(*i).String() }
+func (i *ipMaskValue) Set(s string) error {
+       ip := ParseIPv4Mask(s)
+       if ip == nil {
+               return fmt.Errorf("failed to parse IP mask: %q", s)
+       }
+       *i = ipMaskValue(ip)
+       return nil
+}
+
+func (i *ipMaskValue) Type() string {
+       return "ipMask"
+}
+
+// ParseIPv4Mask written in IP form (e.g. 255.255.255.0).
+// This function should really belong to the net package.
+func ParseIPv4Mask(s string) net.IPMask {
+       mask := net.ParseIP(s)
+       if mask == nil {
+               if len(s) != 8 {
+                       return nil
+               }
+               // net.IPMask.String() actually outputs things like ffffff00
+               // so write a horrible parser for that as well  :-(
+               m := []int{}
+               for i := 0; i < 4; i++ {
+                       b := "0x" + s[2*i:2*i+2]
+                       d, err := strconv.ParseInt(b, 0, 0)
+                       if err != nil {
+                               return nil
+                       }
+                       m = append(m, int(d))
+               }
+               s := fmt.Sprintf("%d.%d.%d.%d", m[0], m[1], m[2], m[3])
+               mask = net.ParseIP(s)
+               if mask == nil {
+                       return nil
+               }
+       }
+       return net.IPv4Mask(mask[12], mask[13], mask[14], mask[15])
+}
+
+func parseIPv4Mask(sval string) (interface{}, error) {
+       mask := ParseIPv4Mask(sval)
+       if mask == nil {
+               return nil, fmt.Errorf("unable to parse %s as net.IPMask", sval)
+       }
+       return mask, nil
+}
+
+// GetIPv4Mask return the net.IPv4Mask value of a flag with the given name
+func (f *FlagSet) GetIPv4Mask(name string) (net.IPMask, error) {
+       val, err := f.getFlagType(name, "ipMask", parseIPv4Mask)
+       if err != nil {
+               return nil, err
+       }
+       return val.(net.IPMask), nil
+}
+
+// IPMaskVar defines an net.IPMask flag with specified name, default value, 
and usage string.
+// The argument p points to an net.IPMask variable in which to store the value 
of the flag.
+func (f *FlagSet) IPMaskVar(p *net.IPMask, name string, value net.IPMask, 
usage string) {
+       f.VarP(newIPMaskValue(value, p), name, "", usage)
+}
+
+// IPMaskVarP is like IPMaskVar, but accepts a shorthand letter that can be 
used after a single dash.
+func (f *FlagSet) IPMaskVarP(p *net.IPMask, name, shorthand string, value 
net.IPMask, usage string) {
+       f.VarP(newIPMaskValue(value, p), name, shorthand, usage)
+}
+
+// IPMaskVar defines an net.IPMask flag with specified name, default value, 
and usage string.
+// The argument p points to an net.IPMask variable in which to store the value 
of the flag.
+func IPMaskVar(p *net.IPMask, name string, value net.IPMask, usage string) {
+       CommandLine.VarP(newIPMaskValue(value, p), name, "", usage)
+}
+
+// IPMaskVarP is like IPMaskVar, but accepts a shorthand letter that can be 
used after a single dash.
+func IPMaskVarP(p *net.IPMask, name, shorthand string, value net.IPMask, usage 
string) {
+       CommandLine.VarP(newIPMaskValue(value, p), name, shorthand, usage)
+}
+
+// IPMask defines an net.IPMask flag with specified name, default value, and 
usage string.
+// The return value is the address of an net.IPMask variable that stores the 
value of the flag.
+func (f *FlagSet) IPMask(name string, value net.IPMask, usage string) 
*net.IPMask {
+       p := new(net.IPMask)
+       f.IPMaskVarP(p, name, "", value, usage)
+       return p
+}
+
+// IPMaskP is like IPMask, but accepts a shorthand letter that can be used 
after a single dash.
+func (f *FlagSet) IPMaskP(name, shorthand string, value net.IPMask, usage 
string) *net.IPMask {
+       p := new(net.IPMask)
+       f.IPMaskVarP(p, name, shorthand, value, usage)
+       return p
+}
+
+// IPMask defines an net.IPMask flag with specified name, default value, and 
usage string.
+// The return value is the address of an net.IPMask variable that stores the 
value of the flag.
+func IPMask(name string, value net.IPMask, usage string) *net.IPMask {
+       return CommandLine.IPMaskP(name, "", value, usage)
+}
+
+// IPMaskP is like IP, but accepts a shorthand letter that can be used after a 
single dash.
+func IPMaskP(name, shorthand string, value net.IPMask, usage string) 
*net.IPMask {
+       return CommandLine.IPMaskP(name, shorthand, value, usage)
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/ipnet.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/ipnet.go 
b/newt/vendor/github.com/spf13/pflag/ipnet.go
new file mode 100644
index 0000000..149b764
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/ipnet.go
@@ -0,0 +1,100 @@
+package pflag
+
+import (
+       "fmt"
+       "net"
+       "strings"
+)
+
+// IPNet adapts net.IPNet for use as a flag.
+type ipNetValue net.IPNet
+
+func (ipnet ipNetValue) String() string {
+       n := net.IPNet(ipnet)
+       return n.String()
+}
+
+func (ipnet *ipNetValue) Set(value string) error {
+       _, n, err := net.ParseCIDR(strings.TrimSpace(value))
+       if err != nil {
+               return err
+       }
+       *ipnet = ipNetValue(*n)
+       return nil
+}
+
+func (*ipNetValue) Type() string {
+       return "ipNet"
+}
+
+var _ = strings.TrimSpace
+
+func newIPNetValue(val net.IPNet, p *net.IPNet) *ipNetValue {
+       *p = val
+       return (*ipNetValue)(p)
+}
+
+func ipNetConv(sval string) (interface{}, error) {
+       _, n, err := net.ParseCIDR(strings.TrimSpace(sval))
+       if err == nil {
+               return *n, nil
+       }
+       return nil, fmt.Errorf("invalid string being converted to IPNet: %s", 
sval)
+}
+
+// GetIPNet return the net.IPNet value of a flag with the given name
+func (f *FlagSet) GetIPNet(name string) (net.IPNet, error) {
+       val, err := f.getFlagType(name, "ipNet", ipNetConv)
+       if err != nil {
+               return net.IPNet{}, err
+       }
+       return val.(net.IPNet), nil
+}
+
+// IPNetVar defines an net.IPNet flag with specified name, default value, and 
usage string.
+// The argument p points to an net.IPNet variable in which to store the value 
of the flag.
+func (f *FlagSet) IPNetVar(p *net.IPNet, name string, value net.IPNet, usage 
string) {
+       f.VarP(newIPNetValue(value, p), name, "", usage)
+}
+
+// IPNetVarP is like IPNetVar, but accepts a shorthand letter that can be used 
after a single dash.
+func (f *FlagSet) IPNetVarP(p *net.IPNet, name, shorthand string, value 
net.IPNet, usage string) {
+       f.VarP(newIPNetValue(value, p), name, shorthand, usage)
+}
+
+// IPNetVar defines an net.IPNet flag with specified name, default value, and 
usage string.
+// The argument p points to an net.IPNet variable in which to store the value 
of the flag.
+func IPNetVar(p *net.IPNet, name string, value net.IPNet, usage string) {
+       CommandLine.VarP(newIPNetValue(value, p), name, "", usage)
+}
+
+// IPNetVarP is like IPNetVar, but accepts a shorthand letter that can be used 
after a single dash.
+func IPNetVarP(p *net.IPNet, name, shorthand string, value net.IPNet, usage 
string) {
+       CommandLine.VarP(newIPNetValue(value, p), name, shorthand, usage)
+}
+
+// IPNet defines an net.IPNet flag with specified name, default value, and 
usage string.
+// The return value is the address of an net.IPNet variable that stores the 
value of the flag.
+func (f *FlagSet) IPNet(name string, value net.IPNet, usage string) *net.IPNet 
{
+       p := new(net.IPNet)
+       f.IPNetVarP(p, name, "", value, usage)
+       return p
+}
+
+// IPNetP is like IPNet, but accepts a shorthand letter that can be used after 
a single dash.
+func (f *FlagSet) IPNetP(name, shorthand string, value net.IPNet, usage 
string) *net.IPNet {
+       p := new(net.IPNet)
+       f.IPNetVarP(p, name, shorthand, value, usage)
+       return p
+}
+
+// IPNet defines an net.IPNet flag with specified name, default value, and 
usage string.
+// The return value is the address of an net.IPNet variable that stores the 
value of the flag.
+func IPNet(name string, value net.IPNet, usage string) *net.IPNet {
+       return CommandLine.IPNetP(name, "", value, usage)
+}
+
+// IPNetP is like IPNet, but accepts a shorthand letter that can be used after 
a single dash.
+func IPNetP(name, shorthand string, value net.IPNet, usage string) *net.IPNet {
+       return CommandLine.IPNetP(name, shorthand, value, usage)
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/string.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/string.go 
b/newt/vendor/github.com/spf13/pflag/string.go
new file mode 100644
index 0000000..e296136
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/string.go
@@ -0,0 +1,82 @@
+package pflag
+
+import "fmt"
+
+// -- string Value
+type stringValue string
+
+func newStringValue(val string, p *string) *stringValue {
+       *p = val
+       return (*stringValue)(p)
+}
+
+func (s *stringValue) Set(val string) error {
+       *s = stringValue(val)
+       return nil
+}
+func (s *stringValue) Type() string {
+       return "string"
+}
+
+func (s *stringValue) String() string { return fmt.Sprintf("%s", *s) }
+
+func stringConv(sval string) (interface{}, error) {
+       return sval, nil
+}
+
+// GetString return the string value of a flag with the given name
+func (f *FlagSet) GetString(name string) (string, error) {
+       val, err := f.getFlagType(name, "string", stringConv)
+       if err != nil {
+               return "", err
+       }
+       return val.(string), nil
+}
+
+// StringVar defines a string flag with specified name, default value, and 
usage string.
+// The argument p points to a string variable in which to store the value of 
the flag.
+func (f *FlagSet) StringVar(p *string, name string, value string, usage 
string) {
+       f.VarP(newStringValue(value, p), name, "", usage)
+}
+
+// StringVarP is like StringVar, but accepts a shorthand letter that can be 
used after a single dash.
+func (f *FlagSet) StringVarP(p *string, name, shorthand string, value string, 
usage string) {
+       f.VarP(newStringValue(value, p), name, shorthand, usage)
+}
+
+// StringVar defines a string flag with specified name, default value, and 
usage string.
+// The argument p points to a string variable in which to store the value of 
the flag.
+func StringVar(p *string, name string, value string, usage string) {
+       CommandLine.VarP(newStringValue(value, p), name, "", usage)
+}
+
+// StringVarP is like StringVar, but accepts a shorthand letter that can be 
used after a single dash.
+func StringVarP(p *string, name, shorthand string, value string, usage string) 
{
+       CommandLine.VarP(newStringValue(value, p), name, shorthand, usage)
+}
+
+// String defines a string flag with specified name, default value, and usage 
string.
+// The return value is the address of a string variable that stores the value 
of the flag.
+func (f *FlagSet) String(name string, value string, usage string) *string {
+       p := new(string)
+       f.StringVarP(p, name, "", value, usage)
+       return p
+}
+
+// StringP is like String, but accepts a shorthand letter that can be used 
after a single dash.
+func (f *FlagSet) StringP(name, shorthand string, value string, usage string) 
*string {
+       p := new(string)
+       f.StringVarP(p, name, shorthand, value, usage)
+       return p
+}
+
+// String defines a string flag with specified name, default value, and usage 
string.
+// The return value is the address of a string variable that stores the value 
of the flag.
+func String(name string, value string, usage string) *string {
+       return CommandLine.StringP(name, "", value, usage)
+}
+
+// StringP is like String, but accepts a shorthand letter that can be used 
after a single dash.
+func StringP(name, shorthand string, value string, usage string) *string {
+       return CommandLine.StringP(name, shorthand, value, usage)
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b002dd0c/newt/vendor/github.com/spf13/pflag/string_slice.go
----------------------------------------------------------------------
diff --git a/newt/vendor/github.com/spf13/pflag/string_slice.go 
b/newt/vendor/github.com/spf13/pflag/string_slice.go
new file mode 100644
index 0000000..b53648b
--- /dev/null
+++ b/newt/vendor/github.com/spf13/pflag/string_slice.go
@@ -0,0 +1,111 @@
+package pflag
+
+import (
+       "encoding/csv"
+       "fmt"
+       "strings"
+)
+
+var _ = fmt.Fprint
+
+// -- stringSlice Value
+type stringSliceValue struct {
+       value   *[]string
+       changed bool
+}
+
+func newStringSliceValue(val []string, p *[]string) *stringSliceValue {
+       ssv := new(stringSliceValue)
+       ssv.value = p
+       *ssv.value = val
+       return ssv
+}
+
+func (s *stringSliceValue) Set(val string) error {
+       stringReader := strings.NewReader(val)
+       csvReader := csv.NewReader(stringReader)
+       v, err := csvReader.Read()
+       if err != nil {
+               return err
+       }
+       if !s.changed {
+               *s.value = v
+       } else {
+               *s.value = append(*s.value, v...)
+       }
+       s.changed = true
+       return nil
+}
+
+func (s *stringSliceValue) Type() string {
+       return "stringSlice"
+}
+
+func (s *stringSliceValue) String() string { return "[" + 
strings.Join(*s.value, ",") + "]" }
+
+func stringSliceConv(sval string) (interface{}, error) {
+       sval = strings.Trim(sval, "[]")
+       // An empty string would cause a slice with one (empty) string
+       if len(sval) == 0 {
+               return []string{}, nil
+       }
+       v := strings.Split(sval, ",")
+       return v, nil
+}
+
+// GetStringSlice return the []string value of a flag with the given name
+func (f *FlagSet) GetStringSlice(name string) ([]string, error) {
+       val, err := f.getFlagType(name, "stringSlice", stringSliceConv)
+       if err != nil {
+               return []string{}, err
+       }
+       return val.([]string), nil
+}
+
+// StringSliceVar defines a string flag with specified name, default value, 
and usage string.
+// The argument p points to a []string variable in which to store the value of 
the flag.
+func (f *FlagSet) StringSliceVar(p *[]string, name string, value []string, 
usage string) {
+       f.VarP(newStringSliceValue(value, p), name, "", usage)
+}
+
+// StringSliceVarP is like StringSliceVar, but accepts a shorthand letter that 
can be used after a single dash.
+func (f *FlagSet) StringSliceVarP(p *[]string, name, shorthand string, value 
[]string, usage string) {
+       f.VarP(newStringSliceValue(value, p), name, shorthand, usage)
+}
+
+// StringSliceVar defines a string flag with specified name, default value, 
and usage string.
+// The argument p points to a []string variable in which to store the value of 
the flag.
+func StringSliceVar(p *[]string, name string, value []string, usage string) {
+       CommandLine.VarP(newStringSliceValue(value, p), name, "", usage)
+}
+
+// StringSliceVarP is like StringSliceVar, but accepts a shorthand letter that 
can be used after a single dash.
+func StringSliceVarP(p *[]string, name, shorthand string, value []string, 
usage string) {
+       CommandLine.VarP(newStringSliceValue(value, p), name, shorthand, usage)
+}
+
+// StringSlice defines a string flag with specified name, default value, and 
usage string.
+// The return value is the address of a []string variable that stores the 
value of the flag.
+func (f *FlagSet) StringSlice(name string, value []string, usage string) 
*[]string {
+       p := []string{}
+       f.StringSliceVarP(&p, name, "", value, usage)
+       return &p
+}
+
+// StringSliceP is like StringSlice, but accepts a shorthand letter that can 
be used after a single dash.
+func (f *FlagSet) StringSliceP(name, shorthand string, value []string, usage 
string) *[]string {
+       p := []string{}
+       f.StringSliceVarP(&p, name, shorthand, value, usage)
+       return &p
+}
+
+// StringSlice defines a string flag with specified name, default value, and 
usage string.
+// The return value is the address of a []string variable that stores the 
value of the flag.
+func StringSlice(name string, value []string, usage string) *[]string {
+       return CommandLine.StringSliceP(name, "", value, usage)
+}
+
+// StringSliceP is like StringSlice, but accepts a shorthand letter that can 
be used after a single dash.
+func StringSliceP(name, shorthand string, value []string, usage string) 
*[]string {
+       return CommandLine.StringSliceP(name, shorthand, value, usage)
+}


Reply via email to