Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
|
a36ed1e7b3 |
19
Makefile
19
Makefile
|
@ -1,19 +0,0 @@
|
||||||
all: goimports vet
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f go.*
|
|
||||||
|
|
||||||
redomod:
|
|
||||||
rm -f go.*
|
|
||||||
GO111MODULE= go mod init
|
|
||||||
GO111MODULE= go mod tidy
|
|
||||||
|
|
||||||
test:
|
|
||||||
go test
|
|
||||||
|
|
||||||
vet:
|
|
||||||
@GO111MODULE=off go vet
|
|
||||||
@echo this go binary package builds okay
|
|
||||||
|
|
||||||
goimports:
|
|
||||||
goimports -w *.go
|
|
2
go.mod
2
go.mod
|
@ -1,4 +1,4 @@
|
||||||
module go.wit.com/dev/alexflint/arg
|
module github.com/alexflint/go-arg
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/alexflint/go-scalar v1.2.0
|
github.com/alexflint/go-scalar v1.2.0
|
||||||
|
|
35
parse.go
35
parse.go
|
@ -80,26 +80,9 @@ var ErrVersion = errors.New("version requested by user")
|
||||||
var mustParseExit = os.Exit
|
var mustParseExit = os.Exit
|
||||||
var mustParseOut io.Writer = os.Stdout
|
var mustParseOut io.Writer = os.Stdout
|
||||||
|
|
||||||
/*
|
|
||||||
This allows you to have common arg values defined in a GO package
|
|
||||||
|
|
||||||
package 'foo'
|
|
||||||
function init() {
|
|
||||||
args.Register(&argsFoo)
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// This stores the args sent from the GO packages
|
|
||||||
var register []interface{}
|
|
||||||
|
|
||||||
func Register(dest ...interface{}) {
|
|
||||||
register = append(register, dest...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MustParse processes command line arguments and exits upon failure
|
// MustParse processes command line arguments and exits upon failure
|
||||||
func MustParse(dest ...interface{}) *Parser {
|
func MustParse(dest ...interface{}) *Parser {
|
||||||
register = append(register, dest...)
|
return mustParse(Config{Exit: mustParseExit, Out: mustParseOut}, dest...)
|
||||||
return mustParse(Config{Exit: mustParseExit, Out: mustParseOut}, register...)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// mustParse is a helper that facilitates testing
|
// mustParse is a helper that facilitates testing
|
||||||
|
@ -124,24 +107,8 @@ func Parse(dest ...interface{}) error {
|
||||||
return p.Parse(flags())
|
return p.Parse(flags())
|
||||||
}
|
}
|
||||||
|
|
||||||
// pass in a "pretend" os.Args. Used for bash autocomplete
|
|
||||||
func ParseFlags(flags []string, dest ...interface{}) (*Parser, error) {
|
|
||||||
p, err := NewParser(Config{}, dest...)
|
|
||||||
if err != nil {
|
|
||||||
return p, err
|
|
||||||
}
|
|
||||||
overrideFlags = append(overrideFlags, flags...)
|
|
||||||
err = p.Parse(flags)
|
|
||||||
return p, err
|
|
||||||
}
|
|
||||||
|
|
||||||
var overrideFlags []string
|
|
||||||
|
|
||||||
// flags gets all command line arguments other than the first (program name)
|
// flags gets all command line arguments other than the first (program name)
|
||||||
func flags() []string {
|
func flags() []string {
|
||||||
if len(overrideFlags) > 0 {
|
|
||||||
return overrideFlags
|
|
||||||
}
|
|
||||||
if len(os.Args) == 0 { // os.Args could be empty
|
if len(os.Args) == 0 { // os.Args could be empty
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue