Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
db65bed2
Commit
db65bed2
authored
Feb 21, 2017
by
xilabao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
godep update github.com/spf13/pflag
parent
e40b55f8
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
568 additions
and
40 deletions
+568
-40
Godeps.json
Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/apimachinery/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/apiserver/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/client-go/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/kube-aggregator/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/sample-apiserver/Godeps/Godeps.json
+1
-1
BUILD
vendor/BUILD
+3
-0
.gitignore
vendor/github.com/spf13/pflag/.gitignore
+2
-0
README.md
vendor/github.com/spf13/pflag/README.md
+4
-2
bool_slice.go
vendor/github.com/spf13/pflag/bool_slice.go
+147
-0
flag.go
vendor/github.com/spf13/pflag/flag.go
+131
-15
golangflag.go
vendor/github.com/spf13/pflag/golangflag.go
+0
-3
ip.go
vendor/github.com/spf13/pflag/ip.go
+0
-2
ip_slice.go
vendor/github.com/spf13/pflag/ip_slice.go
+148
-0
ipnet.go
vendor/github.com/spf13/pflag/ipnet.go
+0
-2
string_array.go
vendor/github.com/spf13/pflag/string_array.go
+0
-6
string_slice.go
vendor/github.com/spf13/pflag/string_slice.go
+1
-4
uint_slice.go
vendor/github.com/spf13/pflag/uint_slice.go
+126
-0
No files found.
Godeps/Godeps.json
View file @
db65bed2
...
@@ -2227,7 +2227,7 @@
...
@@ -2227,7 +2227,7 @@
},
},
{
{
"ImportPath"
:
"github.com/spf13/pflag"
,
"ImportPath"
:
"github.com/spf13/pflag"
,
"Rev"
:
"
5ccb023bc27df288a957c5e994cd44fd19619465
"
"Rev"
:
"
9ff6c6923cfffbcd502984b8e0c80539a94968b7
"
},
},
{
{
"ImportPath"
:
"github.com/spf13/viper"
,
"ImportPath"
:
"github.com/spf13/viper"
,
...
...
staging/src/k8s.io/apimachinery/Godeps/Godeps.json
View file @
db65bed2
...
@@ -106,7 +106,7 @@
...
@@ -106,7 +106,7 @@
},
},
{
{
"ImportPath"
:
"github.com/spf13/pflag"
,
"ImportPath"
:
"github.com/spf13/pflag"
,
"Rev"
:
"
5ccb023bc27df288a957c5e994cd44fd19619465
"
"Rev"
:
"
9ff6c6923cfffbcd502984b8e0c80539a94968b7
"
},
},
{
{
"ImportPath"
:
"github.com/ugorji/go/codec"
,
"ImportPath"
:
"github.com/ugorji/go/codec"
,
...
...
staging/src/k8s.io/apiserver/Godeps/Godeps.json
View file @
db65bed2
...
@@ -551,7 +551,7 @@
...
@@ -551,7 +551,7 @@
},
},
{
{
"ImportPath"
:
"github.com/spf13/pflag"
,
"ImportPath"
:
"github.com/spf13/pflag"
,
"Rev"
:
"
5ccb023bc27df288a957c5e994cd44fd19619465
"
"Rev"
:
"
9ff6c6923cfffbcd502984b8e0c80539a94968b7
"
},
},
{
{
"ImportPath"
:
"github.com/stretchr/testify/assert"
,
"ImportPath"
:
"github.com/stretchr/testify/assert"
,
...
...
staging/src/k8s.io/client-go/Godeps/Godeps.json
View file @
db65bed2
...
@@ -170,7 +170,7 @@
...
@@ -170,7 +170,7 @@
},
},
{
{
"ImportPath"
:
"github.com/spf13/pflag"
,
"ImportPath"
:
"github.com/spf13/pflag"
,
"Rev"
:
"
5ccb023bc27df288a957c5e994cd44fd19619465
"
"Rev"
:
"
9ff6c6923cfffbcd502984b8e0c80539a94968b7
"
},
},
{
{
"ImportPath"
:
"github.com/stretchr/testify/assert"
,
"ImportPath"
:
"github.com/stretchr/testify/assert"
,
...
...
staging/src/k8s.io/kube-aggregator/Godeps/Godeps.json
View file @
db65bed2
...
@@ -278,7 +278,7 @@
...
@@ -278,7 +278,7 @@
},
},
{
{
"ImportPath"
:
"github.com/spf13/pflag"
,
"ImportPath"
:
"github.com/spf13/pflag"
,
"Rev"
:
"
5ccb023bc27df288a957c5e994cd44fd19619465
"
"Rev"
:
"
9ff6c6923cfffbcd502984b8e0c80539a94968b7
"
},
},
{
{
"ImportPath"
:
"github.com/ugorji/go/codec"
,
"ImportPath"
:
"github.com/ugorji/go/codec"
,
...
...
staging/src/k8s.io/sample-apiserver/Godeps/Godeps.json
View file @
db65bed2
...
@@ -266,7 +266,7 @@
...
@@ -266,7 +266,7 @@
},
},
{
{
"ImportPath"
:
"github.com/spf13/pflag"
,
"ImportPath"
:
"github.com/spf13/pflag"
,
"Rev"
:
"
5ccb023bc27df288a957c5e994cd44fd19619465
"
"Rev"
:
"
9ff6c6923cfffbcd502984b8e0c80539a94968b7
"
},
},
{
{
"ImportPath"
:
"github.com/ugorji/go/codec"
,
"ImportPath"
:
"github.com/ugorji/go/codec"
,
...
...
vendor/BUILD
View file @
db65bed2
...
@@ -6483,6 +6483,7 @@ go_library(
...
@@ -6483,6 +6483,7 @@ go_library(
name = "github.com/spf13/pflag",
name = "github.com/spf13/pflag",
srcs = [
srcs = [
"github.com/spf13/pflag/bool.go",
"github.com/spf13/pflag/bool.go",
"github.com/spf13/pflag/bool_slice.go",
"github.com/spf13/pflag/count.go",
"github.com/spf13/pflag/count.go",
"github.com/spf13/pflag/duration.go",
"github.com/spf13/pflag/duration.go",
"github.com/spf13/pflag/flag.go",
"github.com/spf13/pflag/flag.go",
...
@@ -6495,6 +6496,7 @@ go_library(
...
@@ -6495,6 +6496,7 @@ go_library(
"github.com/spf13/pflag/int8.go",
"github.com/spf13/pflag/int8.go",
"github.com/spf13/pflag/int_slice.go",
"github.com/spf13/pflag/int_slice.go",
"github.com/spf13/pflag/ip.go",
"github.com/spf13/pflag/ip.go",
"github.com/spf13/pflag/ip_slice.go",
"github.com/spf13/pflag/ipmask.go",
"github.com/spf13/pflag/ipmask.go",
"github.com/spf13/pflag/ipnet.go",
"github.com/spf13/pflag/ipnet.go",
"github.com/spf13/pflag/string.go",
"github.com/spf13/pflag/string.go",
...
@@ -6505,6 +6507,7 @@ go_library(
...
@@ -6505,6 +6507,7 @@ go_library(
"github.com/spf13/pflag/uint32.go",
"github.com/spf13/pflag/uint32.go",
"github.com/spf13/pflag/uint64.go",
"github.com/spf13/pflag/uint64.go",
"github.com/spf13/pflag/uint8.go",
"github.com/spf13/pflag/uint8.go",
"github.com/spf13/pflag/uint_slice.go",
],
],
tags = ["automanaged"],
tags = ["automanaged"],
)
)
...
...
vendor/github.com/spf13/pflag/.gitignore
0 → 100644
View file @
db65bed2
.idea/*
vendor/github.com/spf13/pflag/README.md
View file @
db65bed2
[

](https://travis-ci.org/spf13/pflag)
[

](https://travis-ci.org/spf13/pflag)
[

](https://goreportcard.com/report/github.com/spf13/pflag)
[

](https://godoc.org/github.com/spf13/pflag)
## Description
## Description
...
@@ -106,9 +108,9 @@ that give one-letter shorthands for flags. You can use these by appending
...
@@ -106,9 +108,9 @@ that give one-letter shorthands for flags. You can use these by appending
var
ip
=
flag
.
IntP
(
"flagname"
,
"f"
,
1234
,
"help message"
)
var
ip
=
flag
.
IntP
(
"flagname"
,
"f"
,
1234
,
"help message"
)
var
flagvar
bool
var
flagvar
bool
func
init
()
{
func
init
()
{
flag
.
BoolVarP
(
"boolname"
,
"b"
,
true
,
"help message"
)
flag
.
BoolVarP
(
&
flagvar
,
"boolname"
,
"b"
,
true
,
"help message"
)
}
}
flag
.
VarP
(
&
flagVa
r
,
"varname"
,
"v"
,
1234
,
"help message"
)
flag
.
VarP
(
&
flagVa
l
,
"varname"
,
"v"
,
"help message"
)
```
```
Shorthand letters can be used with single dashes on the command line.
Shorthand letters can be used with single dashes on the command line.
...
...
vendor/github.com/spf13/pflag/bool_slice.go
0 → 100644
View file @
db65bed2
package
pflag
import
(
"io"
"strconv"
"strings"
)
// -- boolSlice Value
type
boolSliceValue
struct
{
value
*
[]
bool
changed
bool
}
func
newBoolSliceValue
(
val
[]
bool
,
p
*
[]
bool
)
*
boolSliceValue
{
bsv
:=
new
(
boolSliceValue
)
bsv
.
value
=
p
*
bsv
.
value
=
val
return
bsv
}
// Set converts, and assigns, the comma-separated boolean argument string representation as the []bool value of this flag.
// If Set is called on a flag that already has a []bool assigned, the newly converted values will be appended.
func
(
s
*
boolSliceValue
)
Set
(
val
string
)
error
{
// remove all quote characters
rmQuote
:=
strings
.
NewReplacer
(
`"`
,
""
,
`'`
,
""
,
"`"
,
""
)
// read flag arguments with CSV parser
boolStrSlice
,
err
:=
readAsCSV
(
rmQuote
.
Replace
(
val
))
if
err
!=
nil
&&
err
!=
io
.
EOF
{
return
err
}
// parse boolean values into slice
out
:=
make
([]
bool
,
0
,
len
(
boolStrSlice
))
for
_
,
boolStr
:=
range
boolStrSlice
{
b
,
err
:=
strconv
.
ParseBool
(
strings
.
TrimSpace
(
boolStr
))
if
err
!=
nil
{
return
err
}
out
=
append
(
out
,
b
)
}
if
!
s
.
changed
{
*
s
.
value
=
out
}
else
{
*
s
.
value
=
append
(
*
s
.
value
,
out
...
)
}
s
.
changed
=
true
return
nil
}
// Type returns a string that uniquely represents this flag's type.
func
(
s
*
boolSliceValue
)
Type
()
string
{
return
"boolSlice"
}
// String defines a "native" format for this boolean slice flag value.
func
(
s
*
boolSliceValue
)
String
()
string
{
boolStrSlice
:=
make
([]
string
,
len
(
*
s
.
value
))
for
i
,
b
:=
range
*
s
.
value
{
boolStrSlice
[
i
]
=
strconv
.
FormatBool
(
b
)
}
out
,
_
:=
writeAsCSV
(
boolStrSlice
)
return
"["
+
out
+
"]"
}
func
boolSliceConv
(
val
string
)
(
interface
{},
error
)
{
val
=
strings
.
Trim
(
val
,
"[]"
)
// Empty string would cause a slice with one (empty) entry
if
len
(
val
)
==
0
{
return
[]
bool
{},
nil
}
ss
:=
strings
.
Split
(
val
,
","
)
out
:=
make
([]
bool
,
len
(
ss
))
for
i
,
t
:=
range
ss
{
var
err
error
out
[
i
],
err
=
strconv
.
ParseBool
(
t
)
if
err
!=
nil
{
return
nil
,
err
}
}
return
out
,
nil
}
// GetBoolSlice returns the []bool value of a flag with the given name.
func
(
f
*
FlagSet
)
GetBoolSlice
(
name
string
)
([]
bool
,
error
)
{
val
,
err
:=
f
.
getFlagType
(
name
,
"boolSlice"
,
boolSliceConv
)
if
err
!=
nil
{
return
[]
bool
{},
err
}
return
val
.
([]
bool
),
nil
}
// BoolSliceVar defines a boolSlice 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
)
BoolSliceVar
(
p
*
[]
bool
,
name
string
,
value
[]
bool
,
usage
string
)
{
f
.
VarP
(
newBoolSliceValue
(
value
,
p
),
name
,
""
,
usage
)
}
// BoolSliceVarP is like BoolSliceVar, but accepts a shorthand letter that can be used after a single dash.
func
(
f
*
FlagSet
)
BoolSliceVarP
(
p
*
[]
bool
,
name
,
shorthand
string
,
value
[]
bool
,
usage
string
)
{
f
.
VarP
(
newBoolSliceValue
(
value
,
p
),
name
,
shorthand
,
usage
)
}
// BoolSliceVar 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
BoolSliceVar
(
p
*
[]
bool
,
name
string
,
value
[]
bool
,
usage
string
)
{
CommandLine
.
VarP
(
newBoolSliceValue
(
value
,
p
),
name
,
""
,
usage
)
}
// BoolSliceVarP is like BoolSliceVar, but accepts a shorthand letter that can be used after a single dash.
func
BoolSliceVarP
(
p
*
[]
bool
,
name
,
shorthand
string
,
value
[]
bool
,
usage
string
)
{
CommandLine
.
VarP
(
newBoolSliceValue
(
value
,
p
),
name
,
shorthand
,
usage
)
}
// BoolSlice 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
)
BoolSlice
(
name
string
,
value
[]
bool
,
usage
string
)
*
[]
bool
{
p
:=
[]
bool
{}
f
.
BoolSliceVarP
(
&
p
,
name
,
""
,
value
,
usage
)
return
&
p
}
// BoolSliceP is like BoolSlice, but accepts a shorthand letter that can be used after a single dash.
func
(
f
*
FlagSet
)
BoolSliceP
(
name
,
shorthand
string
,
value
[]
bool
,
usage
string
)
*
[]
bool
{
p
:=
[]
bool
{}
f
.
BoolSliceVarP
(
&
p
,
name
,
shorthand
,
value
,
usage
)
return
&
p
}
// BoolSlice 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
BoolSlice
(
name
string
,
value
[]
bool
,
usage
string
)
*
[]
bool
{
return
CommandLine
.
BoolSliceP
(
name
,
""
,
value
,
usage
)
}
// BoolSliceP is like BoolSlice, but accepts a shorthand letter that can be used after a single dash.
func
BoolSliceP
(
name
,
shorthand
string
,
value
[]
bool
,
usage
string
)
*
[]
bool
{
return
CommandLine
.
BoolSliceP
(
name
,
shorthand
,
value
,
usage
)
}
vendor/github.com/spf13/pflag/flag.go
View file @
db65bed2
...
@@ -487,9 +487,76 @@ func UnquoteUsage(flag *Flag) (name string, usage string) {
...
@@ -487,9 +487,76 @@ func UnquoteUsage(flag *Flag) (name string, usage string) {
return
return
}
}
// FlagUsages Returns a string containing the usage information for all flags in
// Splits the string `s` on whitespace into an initial substring up to
// the FlagSet
// `i` runes in length and the remainder. Will go `slop` over `i` if
func
(
f
*
FlagSet
)
FlagUsages
()
string
{
// that encompasses the entire string (which allows the caller to
// avoid short orphan words on the final line).
func
wrapN
(
i
,
slop
int
,
s
string
)
(
string
,
string
)
{
if
i
+
slop
>
len
(
s
)
{
return
s
,
""
}
w
:=
strings
.
LastIndexAny
(
s
[
:
i
],
"
\t
"
)
if
w
<=
0
{
return
s
,
""
}
return
s
[
:
w
],
s
[
w
+
1
:
]
}
// Wraps the string `s` to a maximum width `w` with leading indent
// `i`. The first line is not indented (this is assumed to be done by
// caller). Pass `w` == 0 to do no wrapping
func
wrap
(
i
,
w
int
,
s
string
)
string
{
if
w
==
0
{
return
s
}
// space between indent i and end of line width w into which
// we should wrap the text.
wrap
:=
w
-
i
var
r
,
l
string
// Not enough space for sensible wrapping. Wrap as a block on
// the next line instead.
if
wrap
<
24
{
i
=
16
wrap
=
w
-
i
r
+=
"
\n
"
+
strings
.
Repeat
(
" "
,
i
)
}
// If still not enough space then don't even try to wrap.
if
wrap
<
24
{
return
s
}
// Try to avoid short orphan words on the final line, by
// allowing wrapN to go a bit over if that would fit in the
// remainder of the line.
slop
:=
5
wrap
=
wrap
-
slop
// Handle first line, which is indented by the caller (or the
// special case above)
l
,
s
=
wrapN
(
wrap
,
slop
,
s
)
r
=
r
+
l
// Now wrap the rest
for
s
!=
""
{
var
t
string
t
,
s
=
wrapN
(
wrap
,
slop
,
s
)
r
=
r
+
"
\n
"
+
strings
.
Repeat
(
" "
,
i
)
+
t
}
return
r
}
// FlagUsagesWrapped returns a string containing the usage information
// for all flags in the FlagSet. Wrapped to `cols` columns (0 for no
// wrapping)
func
(
f
*
FlagSet
)
FlagUsagesWrapped
(
cols
int
)
string
{
x
:=
new
(
bytes
.
Buffer
)
x
:=
new
(
bytes
.
Buffer
)
lines
:=
make
([]
string
,
0
,
len
(
f
.
formal
))
lines
:=
make
([]
string
,
0
,
len
(
f
.
formal
))
...
@@ -546,12 +613,19 @@ func (f *FlagSet) FlagUsages() string {
...
@@ -546,12 +613,19 @@ func (f *FlagSet) FlagUsages() string {
for
_
,
line
:=
range
lines
{
for
_
,
line
:=
range
lines
{
sidx
:=
strings
.
Index
(
line
,
"
\x00
"
)
sidx
:=
strings
.
Index
(
line
,
"
\x00
"
)
spacing
:=
strings
.
Repeat
(
" "
,
maxlen
-
sidx
)
spacing
:=
strings
.
Repeat
(
" "
,
maxlen
-
sidx
)
fmt
.
Fprintln
(
x
,
line
[
:
sidx
],
spacing
,
line
[
sidx
+
1
:
])
// maxlen + 2 comes from + 1 for the \x00 and + 1 for the (deliberate) off-by-one in maxlen-sidx
fmt
.
Fprintln
(
x
,
line
[
:
sidx
],
spacing
,
wrap
(
maxlen
+
2
,
cols
,
line
[
sidx
+
1
:
]))
}
}
return
x
.
String
()
return
x
.
String
()
}
}
// FlagUsages returns a string containing the usage information for all flags in
// the FlagSet
func
(
f
*
FlagSet
)
FlagUsages
()
string
{
return
f
.
FlagUsagesWrapped
(
0
)
}
// PrintDefaults prints to standard error the default values of all defined command-line flags.
// PrintDefaults prints to standard error the default values of all defined command-line flags.
func
PrintDefaults
()
{
func
PrintDefaults
()
{
CommandLine
.
PrintDefaults
()
CommandLine
.
PrintDefaults
()
...
@@ -635,7 +709,7 @@ func (f *FlagSet) VarPF(value Value, name, shorthand, usage string) *Flag {
...
@@ -635,7 +709,7 @@ func (f *FlagSet) VarPF(value Value, name, shorthand, usage string) *Flag {
// VarP is like Var, but accepts a shorthand letter that can be used after a single dash.
// 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
)
{
func
(
f
*
FlagSet
)
VarP
(
value
Value
,
name
,
shorthand
,
usage
string
)
{
_
=
f
.
VarPF
(
value
,
name
,
shorthand
,
usage
)
f
.
VarPF
(
value
,
name
,
shorthand
,
usage
)
}
}
// AddFlag will add the flag to the FlagSet
// AddFlag will add the flag to the FlagSet
...
@@ -752,7 +826,7 @@ func containsShorthand(arg, shorthand string) bool {
...
@@ -752,7 +826,7 @@ func containsShorthand(arg, shorthand string) bool {
return
strings
.
Contains
(
arg
,
shorthand
)
return
strings
.
Contains
(
arg
,
shorthand
)
}
}
func
(
f
*
FlagSet
)
parseLongArg
(
s
string
,
args
[]
string
)
(
a
[]
string
,
err
error
)
{
func
(
f
*
FlagSet
)
parseLongArg
(
s
string
,
args
[]
string
,
fn
parseFunc
)
(
a
[]
string
,
err
error
)
{
a
=
args
a
=
args
name
:=
s
[
2
:
]
name
:=
s
[
2
:
]
if
len
(
name
)
==
0
||
name
[
0
]
==
'-'
||
name
[
0
]
==
'='
{
if
len
(
name
)
==
0
||
name
[
0
]
==
'-'
||
name
[
0
]
==
'='
{
...
@@ -786,11 +860,11 @@ func (f *FlagSet) parseLongArg(s string, args []string) (a []string, err error)
...
@@ -786,11 +860,11 @@ func (f *FlagSet) parseLongArg(s string, args []string) (a []string, err error)
err
=
f
.
failf
(
"flag needs an argument: %s"
,
s
)
err
=
f
.
failf
(
"flag needs an argument: %s"
,
s
)
return
return
}
}
err
=
f
.
setFlag
(
flag
,
value
,
s
)
err
=
f
n
(
flag
,
value
,
s
)
return
return
}
}
func
(
f
*
FlagSet
)
parseSingleShortArg
(
shorthands
string
,
args
[]
string
)
(
outShorts
string
,
outArgs
[]
string
,
err
error
)
{
func
(
f
*
FlagSet
)
parseSingleShortArg
(
shorthands
string
,
args
[]
string
,
fn
parseFunc
)
(
outShorts
string
,
outArgs
[]
string
,
err
error
)
{
if
strings
.
HasPrefix
(
shorthands
,
"test."
)
{
if
strings
.
HasPrefix
(
shorthands
,
"test."
)
{
return
return
}
}
...
@@ -825,16 +899,16 @@ func (f *FlagSet) parseSingleShortArg(shorthands string, args []string) (outShor
...
@@ -825,16 +899,16 @@ func (f *FlagSet) parseSingleShortArg(shorthands string, args []string) (outShor
err
=
f
.
failf
(
"flag needs an argument: %q in -%s"
,
c
,
shorthands
)
err
=
f
.
failf
(
"flag needs an argument: %q in -%s"
,
c
,
shorthands
)
return
return
}
}
err
=
f
.
setFlag
(
flag
,
value
,
shorthands
)
err
=
f
n
(
flag
,
value
,
shorthands
)
return
return
}
}
func
(
f
*
FlagSet
)
parseShortArg
(
s
string
,
args
[]
string
)
(
a
[]
string
,
err
error
)
{
func
(
f
*
FlagSet
)
parseShortArg
(
s
string
,
args
[]
string
,
fn
parseFunc
)
(
a
[]
string
,
err
error
)
{
a
=
args
a
=
args
shorthands
:=
s
[
1
:
]
shorthands
:=
s
[
1
:
]
for
len
(
shorthands
)
>
0
{
for
len
(
shorthands
)
>
0
{
shorthands
,
a
,
err
=
f
.
parseSingleShortArg
(
shorthands
,
args
)
shorthands
,
a
,
err
=
f
.
parseSingleShortArg
(
shorthands
,
args
,
fn
)
if
err
!=
nil
{
if
err
!=
nil
{
return
return
}
}
...
@@ -843,7 +917,7 @@ func (f *FlagSet) parseShortArg(s string, args []string) (a []string, err error)
...
@@ -843,7 +917,7 @@ func (f *FlagSet) parseShortArg(s string, args []string) (a []string, err error)
return
return
}
}
func
(
f
*
FlagSet
)
parseArgs
(
args
[]
string
)
(
err
error
)
{
func
(
f
*
FlagSet
)
parseArgs
(
args
[]
string
,
fn
parseFunc
)
(
err
error
)
{
for
len
(
args
)
>
0
{
for
len
(
args
)
>
0
{
s
:=
args
[
0
]
s
:=
args
[
0
]
args
=
args
[
1
:
]
args
=
args
[
1
:
]
...
@@ -863,9 +937,9 @@ func (f *FlagSet) parseArgs(args []string) (err error) {
...
@@ -863,9 +937,9 @@ func (f *FlagSet) parseArgs(args []string) (err error) {
f
.
args
=
append
(
f
.
args
,
args
...
)
f
.
args
=
append
(
f
.
args
,
args
...
)
break
break
}
}
args
,
err
=
f
.
parseLongArg
(
s
,
args
)
args
,
err
=
f
.
parseLongArg
(
s
,
args
,
fn
)
}
else
{
}
else
{
args
,
err
=
f
.
parseShortArg
(
s
,
args
)
args
,
err
=
f
.
parseShortArg
(
s
,
args
,
fn
)
}
}
if
err
!=
nil
{
if
err
!=
nil
{
return
return
...
@@ -881,7 +955,41 @@ func (f *FlagSet) parseArgs(args []string) (err error) {
...
@@ -881,7 +955,41 @@ func (f *FlagSet) parseArgs(args []string) (err error) {
func
(
f
*
FlagSet
)
Parse
(
arguments
[]
string
)
error
{
func
(
f
*
FlagSet
)
Parse
(
arguments
[]
string
)
error
{
f
.
parsed
=
true
f
.
parsed
=
true
f
.
args
=
make
([]
string
,
0
,
len
(
arguments
))
f
.
args
=
make
([]
string
,
0
,
len
(
arguments
))
err
:=
f
.
parseArgs
(
arguments
)
assign
:=
func
(
flag
*
Flag
,
value
,
origArg
string
)
error
{
return
f
.
setFlag
(
flag
,
value
,
origArg
)
}
err
:=
f
.
parseArgs
(
arguments
,
assign
)
if
err
!=
nil
{
switch
f
.
errorHandling
{
case
ContinueOnError
:
return
err
case
ExitOnError
:
os
.
Exit
(
2
)
case
PanicOnError
:
panic
(
err
)
}
}
return
nil
}
type
parseFunc
func
(
flag
*
Flag
,
value
,
origArg
string
)
error
// ParseAll parses flag definitions from the argument list, which should not
// include the command name. The arguments for fn are flag and value. 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
)
ParseAll
(
arguments
[]
string
,
fn
func
(
flag
*
Flag
,
value
string
)
error
)
error
{
f
.
parsed
=
true
f
.
args
=
make
([]
string
,
0
,
len
(
arguments
))
assign
:=
func
(
flag
*
Flag
,
value
,
origArg
string
)
error
{
return
fn
(
flag
,
value
)
}
err
:=
f
.
parseArgs
(
arguments
,
assign
)
if
err
!=
nil
{
if
err
!=
nil
{
switch
f
.
errorHandling
{
switch
f
.
errorHandling
{
case
ContinueOnError
:
case
ContinueOnError
:
...
@@ -907,6 +1015,14 @@ func Parse() {
...
@@ -907,6 +1015,14 @@ func Parse() {
CommandLine
.
Parse
(
os
.
Args
[
1
:
])
CommandLine
.
Parse
(
os
.
Args
[
1
:
])
}
}
// ParseAll parses the command-line flags from os.Args[1:] and called fn for each.
// The arguments for fn are flag and value. Must be called after all flags are
// defined and before flags are accessed by the program.
func
ParseAll
(
fn
func
(
flag
*
Flag
,
value
string
)
error
)
{
// Ignore errors; CommandLine is set for ExitOnError.
CommandLine
.
ParseAll
(
os
.
Args
[
1
:
],
fn
)
}
// SetInterspersed sets whether to support interspersed option/non-option arguments.
// SetInterspersed sets whether to support interspersed option/non-option arguments.
func
SetInterspersed
(
interspersed
bool
)
{
func
SetInterspersed
(
interspersed
bool
)
{
CommandLine
.
SetInterspersed
(
interspersed
)
CommandLine
.
SetInterspersed
(
interspersed
)
...
...
vendor/github.com/spf13/pflag/golangflag.go
View file @
db65bed2
...
@@ -6,13 +6,10 @@ package pflag
...
@@ -6,13 +6,10 @@ package pflag
import
(
import
(
goflag
"flag"
goflag
"flag"
"fmt"
"reflect"
"reflect"
"strings"
"strings"
)
)
var
_
=
fmt
.
Print
// flagValueWrapper implements pflag.Value around a flag.Value. The main
// flagValueWrapper implements pflag.Value around a flag.Value. The main
// difference here is the addition of the Type method that returns a string
// 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
// name of the type. As this is generally unknown, we approximate that with
...
...
vendor/github.com/spf13/pflag/ip.go
View file @
db65bed2
...
@@ -6,8 +6,6 @@ import (
...
@@ -6,8 +6,6 @@ import (
"strings"
"strings"
)
)
var
_
=
strings
.
TrimSpace
// -- net.IP value
// -- net.IP value
type
ipValue
net
.
IP
type
ipValue
net
.
IP
...
...
vendor/github.com/spf13/pflag/ip_slice.go
0 → 100644
View file @
db65bed2
package
pflag
import
(
"fmt"
"io"
"net"
"strings"
)
// -- ipSlice Value
type
ipSliceValue
struct
{
value
*
[]
net
.
IP
changed
bool
}
func
newIPSliceValue
(
val
[]
net
.
IP
,
p
*
[]
net
.
IP
)
*
ipSliceValue
{
ipsv
:=
new
(
ipSliceValue
)
ipsv
.
value
=
p
*
ipsv
.
value
=
val
return
ipsv
}
// Set converts, and assigns, the comma-separated IP argument string representation as the []net.IP value of this flag.
// If Set is called on a flag that already has a []net.IP assigned, the newly converted values will be appended.
func
(
s
*
ipSliceValue
)
Set
(
val
string
)
error
{
// remove all quote characters
rmQuote
:=
strings
.
NewReplacer
(
`"`
,
""
,
`'`
,
""
,
"`"
,
""
)
// read flag arguments with CSV parser
ipStrSlice
,
err
:=
readAsCSV
(
rmQuote
.
Replace
(
val
))
if
err
!=
nil
&&
err
!=
io
.
EOF
{
return
err
}
// parse ip values into slice
out
:=
make
([]
net
.
IP
,
0
,
len
(
ipStrSlice
))
for
_
,
ipStr
:=
range
ipStrSlice
{
ip
:=
net
.
ParseIP
(
strings
.
TrimSpace
(
ipStr
))
if
ip
==
nil
{
return
fmt
.
Errorf
(
"invalid string being converted to IP address: %s"
,
ipStr
)
}
out
=
append
(
out
,
ip
)
}
if
!
s
.
changed
{
*
s
.
value
=
out
}
else
{
*
s
.
value
=
append
(
*
s
.
value
,
out
...
)
}
s
.
changed
=
true
return
nil
}
// Type returns a string that uniquely represents this flag's type.
func
(
s
*
ipSliceValue
)
Type
()
string
{
return
"ipSlice"
}
// String defines a "native" format for this net.IP slice flag value.
func
(
s
*
ipSliceValue
)
String
()
string
{
ipStrSlice
:=
make
([]
string
,
len
(
*
s
.
value
))
for
i
,
ip
:=
range
*
s
.
value
{
ipStrSlice
[
i
]
=
ip
.
String
()
}
out
,
_
:=
writeAsCSV
(
ipStrSlice
)
return
"["
+
out
+
"]"
}
func
ipSliceConv
(
val
string
)
(
interface
{},
error
)
{
val
=
strings
.
Trim
(
val
,
"[]"
)
// Emtpy string would cause a slice with one (empty) entry
if
len
(
val
)
==
0
{
return
[]
net
.
IP
{},
nil
}
ss
:=
strings
.
Split
(
val
,
","
)
out
:=
make
([]
net
.
IP
,
len
(
ss
))
for
i
,
sval
:=
range
ss
{
ip
:=
net
.
ParseIP
(
strings
.
TrimSpace
(
sval
))
if
ip
==
nil
{
return
nil
,
fmt
.
Errorf
(
"invalid string being converted to IP address: %s"
,
sval
)
}
out
[
i
]
=
ip
}
return
out
,
nil
}
// GetIPSlice returns the []net.IP value of a flag with the given name
func
(
f
*
FlagSet
)
GetIPSlice
(
name
string
)
([]
net
.
IP
,
error
)
{
val
,
err
:=
f
.
getFlagType
(
name
,
"ipSlice"
,
ipSliceConv
)
if
err
!=
nil
{
return
[]
net
.
IP
{},
err
}
return
val
.
([]
net
.
IP
),
nil
}
// IPSliceVar defines a ipSlice flag with specified name, default value, and usage string.
// The argument p points to a []net.IP variable in which to store the value of the flag.
func
(
f
*
FlagSet
)
IPSliceVar
(
p
*
[]
net
.
IP
,
name
string
,
value
[]
net
.
IP
,
usage
string
)
{
f
.
VarP
(
newIPSliceValue
(
value
,
p
),
name
,
""
,
usage
)
}
// IPSliceVarP is like IPSliceVar, but accepts a shorthand letter that can be used after a single dash.
func
(
f
*
FlagSet
)
IPSliceVarP
(
p
*
[]
net
.
IP
,
name
,
shorthand
string
,
value
[]
net
.
IP
,
usage
string
)
{
f
.
VarP
(
newIPSliceValue
(
value
,
p
),
name
,
shorthand
,
usage
)
}
// IPSliceVar defines a []net.IP flag with specified name, default value, and usage string.
// The argument p points to a []net.IP variable in which to store the value of the flag.
func
IPSliceVar
(
p
*
[]
net
.
IP
,
name
string
,
value
[]
net
.
IP
,
usage
string
)
{
CommandLine
.
VarP
(
newIPSliceValue
(
value
,
p
),
name
,
""
,
usage
)
}
// IPSliceVarP is like IPSliceVar, but accepts a shorthand letter that can be used after a single dash.
func
IPSliceVarP
(
p
*
[]
net
.
IP
,
name
,
shorthand
string
,
value
[]
net
.
IP
,
usage
string
)
{
CommandLine
.
VarP
(
newIPSliceValue
(
value
,
p
),
name
,
shorthand
,
usage
)
}
// IPSlice defines a []net.IP flag with specified name, default value, and usage string.
// The return value is the address of a []net.IP variable that stores the value of that flag.
func
(
f
*
FlagSet
)
IPSlice
(
name
string
,
value
[]
net
.
IP
,
usage
string
)
*
[]
net
.
IP
{
p
:=
[]
net
.
IP
{}
f
.
IPSliceVarP
(
&
p
,
name
,
""
,
value
,
usage
)
return
&
p
}
// IPSliceP is like IPSlice, but accepts a shorthand letter that can be used after a single dash.
func
(
f
*
FlagSet
)
IPSliceP
(
name
,
shorthand
string
,
value
[]
net
.
IP
,
usage
string
)
*
[]
net
.
IP
{
p
:=
[]
net
.
IP
{}
f
.
IPSliceVarP
(
&
p
,
name
,
shorthand
,
value
,
usage
)
return
&
p
}
// IPSlice defines a []net.IP flag with specified name, default value, and usage string.
// The return value is the address of a []net.IP variable that stores the value of the flag.
func
IPSlice
(
name
string
,
value
[]
net
.
IP
,
usage
string
)
*
[]
net
.
IP
{
return
CommandLine
.
IPSliceP
(
name
,
""
,
value
,
usage
)
}
// IPSliceP is like IPSlice, but accepts a shorthand letter that can be used after a single dash.
func
IPSliceP
(
name
,
shorthand
string
,
value
[]
net
.
IP
,
usage
string
)
*
[]
net
.
IP
{
return
CommandLine
.
IPSliceP
(
name
,
shorthand
,
value
,
usage
)
}
vendor/github.com/spf13/pflag/ipnet.go
View file @
db65bed2
...
@@ -27,8 +27,6 @@ func (*ipNetValue) Type() string {
...
@@ -27,8 +27,6 @@ func (*ipNetValue) Type() string {
return
"ipNet"
return
"ipNet"
}
}
var
_
=
strings
.
TrimSpace
func
newIPNetValue
(
val
net
.
IPNet
,
p
*
net
.
IPNet
)
*
ipNetValue
{
func
newIPNetValue
(
val
net
.
IPNet
,
p
*
net
.
IPNet
)
*
ipNetValue
{
*
p
=
val
*
p
=
val
return
(
*
ipNetValue
)(
p
)
return
(
*
ipNetValue
)(
p
)
...
...
vendor/github.com/spf13/pflag/string_array.go
View file @
db65bed2
package
pflag
package
pflag
import
(
"fmt"
)
var
_
=
fmt
.
Fprint
// -- stringArray Value
// -- stringArray Value
type
stringArrayValue
struct
{
type
stringArrayValue
struct
{
value
*
[]
string
value
*
[]
string
...
...
vendor/github.com/spf13/pflag/string_slice.go
View file @
db65bed2
...
@@ -3,12 +3,9 @@ package pflag
...
@@ -3,12 +3,9 @@ package pflag
import
(
import
(
"bytes"
"bytes"
"encoding/csv"
"encoding/csv"
"fmt"
"strings"
"strings"
)
)
var
_
=
fmt
.
Fprint
// -- stringSlice Value
// -- stringSlice Value
type
stringSliceValue
struct
{
type
stringSliceValue
struct
{
value
*
[]
string
value
*
[]
string
...
@@ -39,7 +36,7 @@ func writeAsCSV(vals []string) (string, error) {
...
@@ -39,7 +36,7 @@ func writeAsCSV(vals []string) (string, error) {
return
""
,
err
return
""
,
err
}
}
w
.
Flush
()
w
.
Flush
()
return
strings
.
TrimSuffix
(
b
.
String
(),
fmt
.
Sprintln
()
),
nil
return
strings
.
TrimSuffix
(
b
.
String
(),
"
\n
"
),
nil
}
}
func
(
s
*
stringSliceValue
)
Set
(
val
string
)
error
{
func
(
s
*
stringSliceValue
)
Set
(
val
string
)
error
{
...
...
vendor/github.com/spf13/pflag/uint_slice.go
0 → 100644
View file @
db65bed2
package
pflag
import
(
"fmt"
"strconv"
"strings"
)
// -- uintSlice Value
type
uintSliceValue
struct
{
value
*
[]
uint
changed
bool
}
func
newUintSliceValue
(
val
[]
uint
,
p
*
[]
uint
)
*
uintSliceValue
{
uisv
:=
new
(
uintSliceValue
)
uisv
.
value
=
p
*
uisv
.
value
=
val
return
uisv
}
func
(
s
*
uintSliceValue
)
Set
(
val
string
)
error
{
ss
:=
strings
.
Split
(
val
,
","
)
out
:=
make
([]
uint
,
len
(
ss
))
for
i
,
d
:=
range
ss
{
u
,
err
:=
strconv
.
ParseUint
(
d
,
10
,
0
)
if
err
!=
nil
{
return
err
}
out
[
i
]
=
uint
(
u
)
}
if
!
s
.
changed
{
*
s
.
value
=
out
}
else
{
*
s
.
value
=
append
(
*
s
.
value
,
out
...
)
}
s
.
changed
=
true
return
nil
}
func
(
s
*
uintSliceValue
)
Type
()
string
{
return
"uintSlice"
}
func
(
s
*
uintSliceValue
)
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
uintSliceConv
(
val
string
)
(
interface
{},
error
)
{
val
=
strings
.
Trim
(
val
,
"[]"
)
// Empty string would cause a slice with one (empty) entry
if
len
(
val
)
==
0
{
return
[]
uint
{},
nil
}
ss
:=
strings
.
Split
(
val
,
","
)
out
:=
make
([]
uint
,
len
(
ss
))
for
i
,
d
:=
range
ss
{
u
,
err
:=
strconv
.
ParseUint
(
d
,
10
,
0
)
if
err
!=
nil
{
return
nil
,
err
}
out
[
i
]
=
uint
(
u
)
}
return
out
,
nil
}
// GetUintSlice returns the []uint value of a flag with the given name.
func
(
f
*
FlagSet
)
GetUintSlice
(
name
string
)
([]
uint
,
error
)
{
val
,
err
:=
f
.
getFlagType
(
name
,
"uintSlice"
,
uintSliceConv
)
if
err
!=
nil
{
return
[]
uint
{},
err
}
return
val
.
([]
uint
),
nil
}
// UintSliceVar defines a uintSlice flag with specified name, default value, and usage string.
// The argument p points to a []uint variable in which to store the value of the flag.
func
(
f
*
FlagSet
)
UintSliceVar
(
p
*
[]
uint
,
name
string
,
value
[]
uint
,
usage
string
)
{
f
.
VarP
(
newUintSliceValue
(
value
,
p
),
name
,
""
,
usage
)
}
// UintSliceVarP is like UintSliceVar, but accepts a shorthand letter that can be used after a single dash.
func
(
f
*
FlagSet
)
UintSliceVarP
(
p
*
[]
uint
,
name
,
shorthand
string
,
value
[]
uint
,
usage
string
)
{
f
.
VarP
(
newUintSliceValue
(
value
,
p
),
name
,
shorthand
,
usage
)
}
// UintSliceVar defines a uint[] flag with specified name, default value, and usage string.
// The argument p points to a uint[] variable in which to store the value of the flag.
func
UintSliceVar
(
p
*
[]
uint
,
name
string
,
value
[]
uint
,
usage
string
)
{
CommandLine
.
VarP
(
newUintSliceValue
(
value
,
p
),
name
,
""
,
usage
)
}
// UintSliceVarP is like the UintSliceVar, but accepts a shorthand letter that can be used after a single dash.
func
UintSliceVarP
(
p
*
[]
uint
,
name
,
shorthand
string
,
value
[]
uint
,
usage
string
)
{
CommandLine
.
VarP
(
newUintSliceValue
(
value
,
p
),
name
,
shorthand
,
usage
)
}
// UintSlice defines a []uint flag with specified name, default value, and usage string.
// The return value is the address of a []uint variable that stores the value of the flag.
func
(
f
*
FlagSet
)
UintSlice
(
name
string
,
value
[]
uint
,
usage
string
)
*
[]
uint
{
p
:=
[]
uint
{}
f
.
UintSliceVarP
(
&
p
,
name
,
""
,
value
,
usage
)
return
&
p
}
// UintSliceP is like UintSlice, but accepts a shorthand letter that can be used after a single dash.
func
(
f
*
FlagSet
)
UintSliceP
(
name
,
shorthand
string
,
value
[]
uint
,
usage
string
)
*
[]
uint
{
p
:=
[]
uint
{}
f
.
UintSliceVarP
(
&
p
,
name
,
shorthand
,
value
,
usage
)
return
&
p
}
// UintSlice defines a []uint flag with specified name, default value, and usage string.
// The return value is the address of a []uint variable that stores the value of the flag.
func
UintSlice
(
name
string
,
value
[]
uint
,
usage
string
)
*
[]
uint
{
return
CommandLine
.
UintSliceP
(
name
,
""
,
value
,
usage
)
}
// UintSliceP is like UintSlice, but accepts a shorthand letter that can be used after a single dash.
func
UintSliceP
(
name
,
shorthand
string
,
value
[]
uint
,
usage
string
)
*
[]
uint
{
return
CommandLine
.
UintSliceP
(
name
,
shorthand
,
value
,
usage
)
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment