Windows: Updates Windows Vendoring
Updates windows dependent libraries for vendoing.
This commit is contained in:
93
vendor/github.com/Microsoft/hcsshim/internal/appargs/appargs.go
generated
vendored
Normal file
93
vendor/github.com/Microsoft/hcsshim/internal/appargs/appargs.go
generated
vendored
Normal file
@ -0,0 +1,93 @@
|
||||
// Package appargs provides argument validation routines for use with
|
||||
// github.com/urfave/cli.
|
||||
package appargs
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strconv"
|
||||
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
|
||||
// Validator is an argument validator function. It returns the number of
|
||||
// arguments consumed or -1 on error.
|
||||
type Validator = func([]string) int
|
||||
|
||||
// String is a validator for strings.
|
||||
func String(args []string) int {
|
||||
if len(args) == 0 {
|
||||
return -1
|
||||
}
|
||||
return 1
|
||||
}
|
||||
|
||||
// NonEmptyString is a validator for non-empty strings.
|
||||
func NonEmptyString(args []string) int {
|
||||
if len(args) == 0 || args[0] == "" {
|
||||
return -1
|
||||
}
|
||||
return 1
|
||||
}
|
||||
|
||||
// Int returns a validator for integers.
|
||||
func Int(base int, min int, max int) Validator {
|
||||
return func(args []string) int {
|
||||
if len(args) == 0 {
|
||||
return -1
|
||||
}
|
||||
i, err := strconv.ParseInt(args[0], base, 0)
|
||||
if err != nil || int(i) < min || int(i) > max {
|
||||
return -1
|
||||
}
|
||||
return 1
|
||||
}
|
||||
}
|
||||
|
||||
// Optional returns a validator that treats an argument as optional.
|
||||
func Optional(v Validator) Validator {
|
||||
return func(args []string) int {
|
||||
if len(args) == 0 {
|
||||
return 0
|
||||
}
|
||||
return v(args)
|
||||
}
|
||||
}
|
||||
|
||||
// Rest returns a validator that validates each of the remaining arguments.
|
||||
func Rest(v Validator) Validator {
|
||||
return func(args []string) int {
|
||||
count := len(args)
|
||||
for len(args) != 0 {
|
||||
n := v(args)
|
||||
if n < 0 {
|
||||
return n
|
||||
}
|
||||
args = args[n:]
|
||||
}
|
||||
return count
|
||||
}
|
||||
}
|
||||
|
||||
// ErrInvalidUsage is returned when there is a validation error.
|
||||
var ErrInvalidUsage = errors.New("invalid command usage")
|
||||
|
||||
// Validate can be used as a command's Before function to validate the arguments
|
||||
// to the command.
|
||||
func Validate(vs ...Validator) cli.BeforeFunc {
|
||||
return func(context *cli.Context) error {
|
||||
remaining := context.Args()
|
||||
for _, v := range vs {
|
||||
consumed := v(remaining)
|
||||
if consumed < 0 {
|
||||
return ErrInvalidUsage
|
||||
}
|
||||
remaining = remaining[consumed:]
|
||||
}
|
||||
|
||||
if len(remaining) > 0 {
|
||||
return ErrInvalidUsage
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user