diff options
| -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 } |
