Skip to content

v3 fish completions conflate 2+ level subcommand options #2115

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
3 tasks done
bittrance opened this issue Apr 27, 2025 · 0 comments · May be fixed by #2130
Open
3 tasks done

v3 fish completions conflate 2+ level subcommand options #2115

bittrance opened this issue Apr 27, 2025 · 0 comments · May be fixed by #2130
Labels
area/v3 relates to / is being considered for v3 kind/bug describes or fixes a bug status/triage maintainers still need to look into this

Comments

@bittrance
Copy link
Contributor

My urfave/cli version is

c6c5804

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'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/v3 relates to / is being considered for v3 kind/bug describes or fixes a bug status/triage maintainers still need to look into this
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant