diff options
| author | Jeff Carr <[email protected]> | 2025-10-27 18:38:43 -0500 | 
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-27 18:38:43 -0500 | 
| commit | 6aa36f359a86632a269acaaf0effa6dabe67c3bf (patch) | |
| tree | 943e0f19a8a410b43f12c35f904dcf8f51e45242 | |
| parent | 51d2b0c75c1f1c2ce058bdc3912440dfc5269316 (diff) | |
trying to fix help with autocompletev1.6.6
| -rw-r--r-- | complete.go | 74 | ||||
| -rw-r--r-- | go.mod | 11 | ||||
| -rw-r--r-- | go.sum | 24 | ||||
| -rw-r--r-- | parse.go | 8 | 
4 files changed, 74 insertions, 43 deletions
diff --git a/complete.go b/complete.go index 5002b3d..31a5398 100644 --- a/complete.go +++ b/complete.go @@ -18,9 +18,9 @@ type Complete struct {  }  func (p *Parser) WriteHelpForAutocompleteArgv() error { -	fmt.Fprintln(argvpb.Stderr, "") -	fmt.Fprintf(argvpb.Stderr, "go-args.WriteHelpForAutocompleteArgv() not finished") -	fmt.Fprintln(argvpb.Stderr, "arg.ParseFlagsArgv()", argvpb.PB.Real) +	fmt.Fprintln(argvpb.Stddbg, "") +	fmt.Fprintf(argvpb.Stddbg, "go-args.WriteHelpForAutocompleteArgv() not finished") +	fmt.Fprintln(argvpb.Stddbg, "arg.ParseFlagsArgv()", argvpb.PB.Real)  	return nil  } @@ -28,7 +28,7 @@ func (p *Parser) WriteHelpForAutocompleteArgv() error {  // most shell autocomplete behavior usually wants things that way  func (p *Parser) WriteHelpForAutocomplete(partialOld string, subcommand ...string) error {  	var automatch []string -	fmt.Fprintf(argvpb.Stderr, "go-args.WriteHelpForAutocomplete() sub(%v)\n", subcommand) +	fmt.Fprintf(argvpb.Stddbg, "go-args.WriteHelpForAutocomplete() sub(%v)\n", subcommand)  	// return errors.New("subcommand was nil")  	if p == nil {  		return errors.New("arg.Parser == nil") @@ -38,12 +38,12 @@ func (p *Parser) WriteHelpForAutocomplete(partialOld string, subcommand ...strin  	}  	cmd, err := p.lookupCommand(subcommand...)  	if err != nil { -		fmt.Fprintf(argvpb.Stderr, "go-args.WriteHelpForAutocomplete() lookupCommand failed err(%v)\n", err) +		fmt.Fprintf(argvpb.Stddbg, "go-args.WriteHelpForAutocomplete() lookupCommand failed err(%v)\n", err)  		return err  	}  	var positionals, longOptions, shortOptions, envOnlyOptions []*spec -	// var hasVersionOption bool +	var hasVersionOption bool  	for _, spec := range cmd.specs {  		switch {  		case spec.positional: @@ -51,7 +51,7 @@ func (p *Parser) WriteHelpForAutocomplete(partialOld string, subcommand ...strin  		case spec.long != "":  			longOptions = append(longOptions, spec)  			if spec.long == "version" { -				// hasVersionOption = true +				hasVersionOption = true  			}  		case spec.short != "":  			shortOptions = append(shortOptions, spec) @@ -67,7 +67,7 @@ func (p *Parser) WriteHelpForAutocomplete(partialOld string, subcommand ...strin  	for ancestor != nil {  		for _, spec := range ancestor.specs {  			if spec.long == "version" { -				// hasVersionOption = true +				hasVersionOption = true  				break  			}  		} @@ -75,17 +75,15 @@ func (p *Parser) WriteHelpForAutocomplete(partialOld string, subcommand ...strin  		ancestor = ancestor.parent  	} -	/* -		if p.description != "" { -			fmt.Fprintln(stderr, p.description) -		} +	if p.description != "" { +		fmt.Fprintln(argvpb.Stderr, p.description) +	} -		if !hasVersionOption && p.version != "" { -			fmt.Fprintln(stderr, p.version) -		} +	if !hasVersionOption && p.version != "" { +		fmt.Fprintln(argvpb.Stderr, p.version) +	} -		p.WriteUsageForSubcommand(stderr, subcommand...) -	*/ +	p.WriteUsageForSubcommand(argvpb.Stderr, subcommand...)  	// write the list of positionals  	if len(positionals) > 0 { @@ -111,30 +109,28 @@ func (p *Parser) WriteHelpForAutocomplete(partialOld string, subcommand ...strin  		}  	} -	/* -		// write the list of global options -		if len(globals) > 0 { -			fmt.Fprint(stderr, "\nGlobal options:\n") -			for _, spec := range globals { -				p.printOption(stderr, spec) -			} +	// write the list of global options +	if len(globals) > 0 { +		fmt.Fprint(argvpb.Stderr, "\nGlobal options:\n") +		for _, spec := range globals { +			p.printOption(argvpb.Stderr, spec)  		} +	} -		// write the list of built in options -		p.printOption(stderr, &spec{ +	// write the list of built in options +	p.printOption(argvpb.Stderr, &spec{ +		cardinality: zero, +		long:        "help", +		short:       "h", +		help:        "display this help and exit", +	}) +	if !hasVersionOption && p.version != "" { +		p.printOption(argvpb.Stderr, &spec{  			cardinality: zero, -			long:        "help", -			short:       "h", -			help:        "display this help and exit", +			long:        "version", +			help:        "display version and exit",  		}) -		if !hasVersionOption && p.version != "" { -			p.printOption(stderr, &spec{ -				cardinality: zero, -				long:        "version", -				help:        "display version and exit", -			}) -		} -	*/ +	}  	// write the list of environment only variables  	if len(envOnlyOptions) > 0 { @@ -160,12 +156,12 @@ func (p *Parser) WriteHelpForAutocomplete(partialOld string, subcommand ...strin  		fmt.Fprintln(argvpb.Stderr, "\n"+p.epilogue)  	} -	fmt.Fprintf(argvpb.Stderr, "go-args.WriteHelpForAutocomplete() got to the end automatch(%v)\n", automatch) +	fmt.Fprintf(argvpb.Stddbg, "go-args.WriteHelpForAutocomplete() got to the end automatch(%v)\n", automatch)  	// writes out the shell autocomplete matches  	if len(automatch) > 0 {  		fmt.Fprintf(argvpb.Stdout, "%s", strings.Join(automatch, " "))  	} else { -		fmt.Fprintf(argvpb.Stdout, "automatchBlank") +		// fmt.Fprintf(argvpb.Stdout, "automatchBlank")  	}  	return nil  } @@ -5,10 +5,21 @@ go 1.24.1  require (  	github.com/alexflint/go-scalar v1.2.0  	github.com/stretchr/testify v1.11.1 +	go.wit.com/lib/protobuf/argvpb v0.0.47  )  require (  	github.com/davecgh/go-spew v1.1.1 // indirect +	github.com/google/uuid v1.6.0 // indirect  	github.com/pmezard/go-difflib v1.0.0 // indirect +	go.wit.com/lib/cobol v0.0.32 // indirect +	go.wit.com/lib/config v0.0.34 // indirect +	go.wit.com/lib/env v0.0.9 // indirect +	go.wit.com/lib/protobuf/filepb v0.0.10 // indirect +	go.wit.com/lib/protobuf/guipb v0.0.24 // indirect +	go.wit.com/log v0.25.1 // indirect +	golang.org/x/sys v0.37.0 // indirect +	golang.org/x/term v0.36.0 // indirect +	google.golang.org/protobuf v1.36.10 // indirect  	gopkg.in/yaml.v3 v3.0.1 // indirect  ) @@ -2,10 +2,34 @@ github.com/alexflint/go-scalar v1.2.0 h1:WR7JPKkeNpnYIOfHRa7ivM21aWAdHD0gEWHCx+W  github.com/alexflint/go-scalar v1.2.0/go.mod h1:LoFvNMqS1CPrMVltza4LvnGKhaSpc3oyLEBUZVhhS2o=  github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=  github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=  github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=  github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=  github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=  github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +go.wit.com/lib/cobol v0.0.32 h1:nBEXu8G1SOopBw23CgFLoDJ+I6VjxGhKBcMpb5Lwwug= +go.wit.com/lib/cobol v0.0.32/go.mod h1:mf2G1T4VPl1xSuRzbem3qdn3cWVBGFM38+BSXok5udo= +go.wit.com/lib/config v0.0.34 h1:QqoBYBe28cDby8TIygHLQyxOeJX3Tgi6hY1CM0ZbNio= +go.wit.com/lib/config v0.0.34/go.mod h1:D4fHO9WzZWc4WHmpvoiZkjcPUdvFMWZzkKQj6MB4C8Q= +go.wit.com/lib/env v0.0.9 h1:L5oS80oJRm25Sm4qmcIcqXboez6QTQzqkuVOSOZo8yI= +go.wit.com/lib/env v0.0.9/go.mod h1:Xun2SAnbPf7/qfgHAnxy7mdYh90N0KX3Pc+1UlCPY9U= +go.wit.com/lib/protobuf/argvpb v0.0.47 h1:7PADVRiTmuUdHfB6+I016VBPggtN7TruFW/fqnnLUDE= +go.wit.com/lib/protobuf/argvpb v0.0.47/go.mod h1:fMj8UWlz+sF6zz6SXbPKkHUDQVaSQ1gdRezpjcSfJIY= +go.wit.com/lib/protobuf/filepb v0.0.10 h1:lvhmK2BKjRn7NwfWZyWATw02/tTB5T3I48UGkB4tH4o= +go.wit.com/lib/protobuf/filepb v0.0.10/go.mod h1:DyRdTnVKbA+qWXzABdCBCgWcFswgdQNCvg/zE0wiBGQ= +go.wit.com/lib/protobuf/guipb v0.0.24 h1:JzbAPKfuSueWBgh1XzKH9+Hu5Z5EQghh65MmOcjcUXk= +go.wit.com/lib/protobuf/guipb v0.0.24/go.mod h1:G8VA+2Tqqzc0ZNNwLGGKqhDN4kYy68RMWenby9gcT28= +go.wit.com/log v0.25.1 h1:74WVf9NSN6z5jc2oSbA1ehxdZ7V/NBXTk5t0jIoaTMg= +go.wit.com/log v0.25.1/go.mod h1:XE4lTfAibWgwBJksIk7u3IEJ8xcBvNhnlewYAQGj2Ew= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= +golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=  gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=  gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=  gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= @@ -139,10 +139,10 @@ func ParseFlagsArgv(dest ...interface{}) (*Parser, error) {  	useArgv = true  	overrideFlags = append(overrideFlags, argvpb.PB.Real...)  	err = p.Parse(argvpb.PB.Real) -	fmt.Fprintln(argvpb.Stderr, "") -	fmt.Fprintf(argvpb.Stderr, "err(%v)\n", err) -	fmt.Fprintln(argvpb.Stderr, "arg.ParseFlagsArgv()", argvpb.PB.Real) -	fmt.Fprintln(argvpb.Stderr, "arg.ParseFlagsArgv()", argvpb.PB.Real) +	fmt.Fprintln(argvpb.Stddbg, "") +	fmt.Fprintf(argvpb.Stddbg, "err(%v)\n", err) +	fmt.Fprintln(argvpb.Stddbg, "arg.ParseFlagsArgv()", argvpb.PB.Real) +	fmt.Fprintln(argvpb.Stddbg, "arg.ParseFlagsArgv()", argvpb.PB.Real)  	// panic("in ParseFlagsArgv")  	return p, err  }  | 
