summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-27 18:38:43 -0500
committerJeff Carr <[email protected]>2025-10-27 18:38:43 -0500
commit6aa36f359a86632a269acaaf0effa6dabe67c3bf (patch)
tree943e0f19a8a410b43f12c35f904dcf8f51e45242
parent51d2b0c75c1f1c2ce058bdc3912440dfc5269316 (diff)
trying to fix help with autocompletev1.6.6
-rw-r--r--complete.go74
-rw-r--r--go.mod11
-rw-r--r--go.sum24
-rw-r--r--parse.go8
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
}
diff --git a/go.mod b/go.mod
index 49a5c48..4e9bf6b 100644
--- a/go.mod
+++ b/go.mod
@@ -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
)
diff --git a/go.sum b/go.sum
index 23ed6f5..01da75d 100644
--- a/go.sum
+++ b/go.sum
@@ -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=
diff --git a/parse.go b/parse.go
index eaa56e7..b1cc9f2 100644
--- a/parse.go
+++ b/parse.go
@@ -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
}