From dd3a0b96d3df37a17912fb8921d76d6eb100557a Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Tue, 28 Oct 2025 20:26:26 -0500 Subject: more parsing work --- parse.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/parse.go b/parse.go index cc2161e..bdeec1d 100644 --- a/parse.go +++ b/parse.go @@ -12,6 +12,7 @@ import ( "strings" scalar "github.com/alexflint/go-scalar" + "go.wit.com/lib/protobuf/argvpb" ) // path represents a sequence of steps to find the output location for an @@ -96,6 +97,15 @@ func Register(dest ...interface{}) { register = append(register, dest...) } +// MustParse processes command line arguments and exits upon failure +func MustParseArgv(dest ...interface{}) *Parser { + register = append(register, dest...) + if len(overrideFlags) == 0 { + overrideFlags = append(overrideFlags, argvpb.Real()...) + } + return mustParse(Config{Exit: mustParseExit, Out: mustParseOut}, register...) +} + // MustParse processes command line arguments and exits upon failure func MustParse(dest ...interface{}) *Parser { register = append(register, dest...) @@ -127,6 +137,7 @@ func Parse(dest ...interface{}) error { // flags gets all command line arguments other than the first (program name) func flags() []string { if len(overrideFlags) > 0 { + // fmt.Fprintf(os.Stderr, "got to overrideFlags() (%v)\n", overrideFlags) return overrideFlags } if len(os.Args) == 0 { // os.Args could be empty @@ -795,7 +806,7 @@ func (p *Parser) process(args []string) error { } } if len(positionals) > 0 { - return fmt.Errorf("too many positional arguments at '%s'", positionals[0]) + return fmt.Errorf("too many positional arguments at '%s' (%v)", positionals[0], args) } // fill in defaults and check that all the required args were provided -- cgit v1.2.3