-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Closed
Labels
area/v3relates to / is being considered for v3relates to / is being considered for v3kind/bugdescribes or fixes a bugdescribes or fixes a bugstatus/triagemaintainers still need to look into thismaintainers still need to look into this
Description
My urfave/cli version is
Checklist
- Are you running the latest v3 release? The list of releases is here.
- Did you check the manual for your release? The v3 manual is here
- Did you perform a search about this problem? Here's the GitHub guide about searching.
Describe the bug
Where a command has identical L2 sub-commands, we will suggest the union of their options.
To reproduce
app := &cli.Command{
Name: "mycli",
Version: "1.0.0",
Usage: "Pure awesomeness.",
EnableShellCompletion: true,
Suggest: true,
Commands: []*cli.Command{
{
Name: "more-awesome",
Usage: "Become awesomer!",
Action: func(ctx context.Context, cmd *cli.Command) error {
return nil
},
Commands: []*cli.Command{
{
Name: "set",
Flags: []cli.Flag{
&cli.IntFlag{
Name: "increase",
Required: true,
},
},
},
},
},
{
Name: "less-awesome",
Usage: "Humility",
Action: func(ctx context.Context, cmd *cli.Command) error {
return nil
},
Commands: []*cli.Command{
{
Name: "set",
Flags: []cli.Flag{
&cli.IntFlag{
Name: "decrease",
Required: true,
},
},
},
},
},
},
}
Observed behavior
$ mycli more-awesome set --
--decrease --help (show help) --increase
Expected behavior
L2 sub-commands should suggest their own options only.
Want to fix this yourself?
The fix is to tell complete
about the full sub-command "path". Should be straight-forward given the Lineage()
method on commands. PR pending.
Run go version
and paste its output here
go version go1.23.8 linux/amd64
Run go env
and paste its output here
GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/home/andqvi/.cache/go-build'
GOENV='/home/andqvi/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/home/andqvi/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/home/andqvi/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/home/andqvi/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.8.linux-amd64'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/home/andqvi/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.8.linux-amd64/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.23.8'
GODEBUG=''
GOTELEMETRY='local'
GOTELEMETRYDIR='/home/andqvi/.config/go/telemetry'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='1'
GOMOD='/home/andqvi/projects/external/harness-cli/go.mod'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build320049062=/tmp/go-build -gno-record-gcc-switches'
Metadata
Metadata
Assignees
Labels
area/v3relates to / is being considered for v3relates to / is being considered for v3kind/bugdescribes or fixes a bugdescribes or fixes a bugstatus/triagemaintainers still need to look into thismaintainers still need to look into this