Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
728 changes: 728 additions & 0 deletions docs/plans/2026-02-13-dynamic-shell-completions.md

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions internal/cmd/branch/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ By default, this command detects the repository from your git remote.`,

cmd.MarkFlagRequired("target")

_ = cmd.RegisterFlagCompletionFunc("target", cmdutil.CompleteBranchNames)
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/branch/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ By default, this command detects the repository from your git remote.`,
cmd.Flags().StringVarP(&opts.Repo, "repo", "R", "", "Repository in WORKSPACE/REPO format (detects from git remote if not specified)")
cmd.Flags().BoolVarP(&opts.Force, "force", "f", false, "Skip confirmation prompt")

cmd.ValidArgsFunction = cmdutil.CompleteBranchNames
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
2 changes: 2 additions & 0 deletions internal/cmd/branch/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ Use the --repo flag to specify a different repository.`,
cmd.Flags().IntVarP(&opts.Limit, "limit", "l", 30, "Maximum number of branches to list")
cmd.Flags().BoolVar(&opts.JSON, "json", false, "Output in JSON format")

_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
23 changes: 13 additions & 10 deletions internal/cmd/browse/browse.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (

"github.com/spf13/cobra"

"github.com/rbansal42/bitbucket-cli/internal/cmdutil"
"github.com/rbansal42/bitbucket-cli/internal/config"
"github.com/rbansal42/bitbucket-cli/internal/git"
"github.com/rbansal42/bitbucket-cli/internal/iostreams"
Expand All @@ -17,16 +18,16 @@ import (
// NewCmdBrowse creates the browse command
func NewCmdBrowse(streams *iostreams.IOStreams) *cobra.Command {
var (
branch string
commit string
noBrowser bool
repo string
settings bool
wiki bool
issues bool
prs bool
pipelines bool
downloads bool
branch string
commit string
noBrowser bool
repo string
settings bool
wiki bool
issues bool
prs bool
pipelines bool
downloads bool
)

cmd := &cobra.Command{
Expand Down Expand Up @@ -143,6 +144,8 @@ Use flags to open specific sections like issues, pull requests, or settings.`,
cmd.Flags().BoolVar(&pipelines, "pipelines", false, "Open pipelines page")
cmd.Flags().BoolVar(&downloads, "downloads", false, "Open downloads page")

_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/issue/close.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ Optionally, you can add a comment explaining why the issue is being closed.`,
cmd.Flags().StringVarP(&opts.comment, "comment", "c", "", "Add a closing comment")
cmd.Flags().StringVar(&opts.repo, "repo", "", "Repository in WORKSPACE/REPO format")

cmd.ValidArgsFunction = cmdutil.CompleteIssueIDs
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/issue/comment.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ func NewCmdComment(streams *iostreams.IOStreams) *cobra.Command {
cmd.Flags().StringVarP(&opts.body, "body", "b", "", "Comment body text")
cmd.Flags().StringVar(&opts.repo, "repo", "", "Repository in WORKSPACE/REPO format")

cmd.ValidArgsFunction = cmdutil.CompleteIssueIDs
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
11 changes: 9 additions & 2 deletions internal/cmd/issue/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,15 @@ to enter a title interactively.`,
cmd.Flags().StringVarP(&opts.assignee, "assignee", "a", "", "Assignee username")
cmd.Flags().StringVar(&opts.repo, "repo", "", "Repository in WORKSPACE/REPO format")

_ = cmd.RegisterFlagCompletionFunc("kind", cmdutil.StaticFlagCompletion([]string{
"bug", "enhancement", "proposal", "task",
}))
_ = cmd.RegisterFlagCompletionFunc("priority", cmdutil.StaticFlagCompletion([]string{
"trivial", "minor", "major", "critical", "blocker",
}))
_ = cmd.RegisterFlagCompletionFunc("assignee", cmdutil.CompleteWorkspaceMembers)
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down Expand Up @@ -147,5 +156,3 @@ func runCreate(opts *createOptions) error {

return nil
}


3 changes: 3 additions & 0 deletions internal/cmd/issue/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ You will be prompted to confirm deletion unless the --yes flag is provided.`,
cmd.Flags().BoolVarP(&opts.yes, "yes", "y", false, "Skip confirmation prompt")
cmd.Flags().StringVar(&opts.repo, "repo", "", "Repository in WORKSPACE/REPO format")

cmd.ValidArgsFunction = cmdutil.CompleteIssueIDs
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
10 changes: 10 additions & 0 deletions internal/cmd/issue/edit.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,16 @@ Use an empty string for --assignee to clear the assignee.`,
cmd.Flags().StringVarP(&opts.assignee, "assignee", "a", "", "New assignee username (use \"\" to clear)")
cmd.Flags().StringVar(&opts.repo, "repo", "", "Repository in WORKSPACE/REPO format")

cmd.ValidArgsFunction = cmdutil.CompleteIssueIDs
_ = cmd.RegisterFlagCompletionFunc("kind", cmdutil.StaticFlagCompletion([]string{
"bug", "enhancement", "proposal", "task",
}))
_ = cmd.RegisterFlagCompletionFunc("priority", cmdutil.StaticFlagCompletion([]string{
"trivial", "minor", "major", "critical", "blocker",
}))
_ = cmd.RegisterFlagCompletionFunc("assignee", cmdutil.CompleteWorkspaceMembers)
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
12 changes: 12 additions & 0 deletions internal/cmd/issue/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,18 @@ priority, or assignee.`,
cmd.Flags().BoolVar(&opts.JSON, "json", false, "Output in JSON format")
cmd.Flags().StringVar(&opts.Repo, "repo", "", "Repository in WORKSPACE/REPO format")

_ = cmd.RegisterFlagCompletionFunc("state", cmdutil.StaticFlagCompletion([]string{
"new", "open", "resolved", "on hold", "invalid", "duplicate", "wontfix", "closed",
}))
_ = cmd.RegisterFlagCompletionFunc("kind", cmdutil.StaticFlagCompletion([]string{
"bug", "enhancement", "proposal", "task",
}))
_ = cmd.RegisterFlagCompletionFunc("priority", cmdutil.StaticFlagCompletion([]string{
"trivial", "minor", "major", "critical", "blocker",
}))
_ = cmd.RegisterFlagCompletionFunc("assignee", cmdutil.CompleteWorkspaceMembers)
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/issue/reopen.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ additional work is needed.`,

cmd.Flags().StringVar(&opts.repo, "repo", "", "Repository in WORKSPACE/REPO format")

cmd.ValidArgsFunction = cmdutil.CompleteIssueIDs
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/issue/view.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ content, and other metadata. Use --comments to also show comments.`,
cmd.Flags().BoolVar(&opts.jsonOut, "json", false, "Output in JSON format")
cmd.Flags().StringVar(&opts.repo, "repo", "", "Repository in WORKSPACE/REPO format")

cmd.ValidArgsFunction = cmdutil.CompleteIssueIDs
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
2 changes: 2 additions & 0 deletions internal/cmd/pipeline/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ by pipeline status (PENDING, IN_PROGRESS, COMPLETED, FAILED, etc.).`,
cmd.Flags().BoolVar(&opts.JSON, "json", false, "Output in JSON format")
cmd.Flags().StringVarP(&opts.Repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
2 changes: 2 additions & 0 deletions internal/cmd/pipeline/logs.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ Step numbers can be obtained from 'bb pipeline steps'.`,
cmd.Flags().StringVarP(&opts.Step, "step", "s", "", "Step UUID or step number (default: first failed step or last step)")
cmd.Flags().StringVarP(&opts.Repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/pipeline/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ pipeline defined in bitbucket-pipelines.yml with --custom.`,
cmd.Flags().StringVar(&opts.custom, "custom", "", "Custom pipeline name (for custom pipelines in bitbucket-pipelines.yml)")
cmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

_ = cmd.RegisterFlagCompletionFunc("branch", cmdutil.CompleteBranchNames)
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
2 changes: 2 additions & 0 deletions internal/cmd/pipeline/steps.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ that step's logs.`,
cmd.Flags().BoolVar(&opts.JSON, "json", false, "Output in JSON format")
cmd.Flags().StringVarP(&opts.Repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
2 changes: 2 additions & 0 deletions internal/cmd/pipeline/stop.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ You will be prompted to confirm the stop action unless the --yes flag is provide
cmd.Flags().BoolVarP(&opts.yes, "yes", "y", false, "Skip confirmation prompt")
cmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
2 changes: 2 additions & 0 deletions internal/cmd/pipeline/view.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ You can specify a pipeline by its build number or UUID.`,
cmd.Flags().BoolVar(&opts.JSON, "json", false, "Output in JSON format")
cmd.Flags().StringVarP(&opts.Repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/pr/checkout.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ use --force to overwrite it.`,
cmd.Flags().BoolVarP(&opts.force, "force", "f", false, "Overwrite existing local branch")
cmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

cmd.ValidArgsFunction = cmdutil.CompletePRNumbers
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/pr/checks.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ associated with the pull request.`,
cmd.Flags().StringVarP(&opts.Repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")
cmd.Flags().BoolVar(&opts.JSON, "json", false, "Output in JSON format")

cmd.ValidArgsFunction = cmdutil.CompletePRNumbers
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/pr/close.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ Optionally, you can add a comment explaining why the PR is being closed.`,
cmd.Flags().StringVarP(&opts.comment, "comment", "c", "", "Add a closing comment")
cmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

cmd.ValidArgsFunction = cmdutil.CompletePRNumbers
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/pr/comment.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ for you to enter the comment text.`,
cmd.Flags().StringVarP(&opts.body, "body", "b", "", "Comment body text")
cmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

cmd.ValidArgsFunction = cmdutil.CompletePRNumbers
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
5 changes: 5 additions & 0 deletions internal/cmd/pr/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,11 @@ If --body is not provided, an editor will open for you to write the description.
cmd.Flags().BoolVar(&opts.noMaintainerEdit, "no-maintainer-edit", false, "Disable maintainer edits (not supported by Bitbucket)")
cmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

_ = cmd.RegisterFlagCompletionFunc("base", cmdutil.CompleteBranchNames)
_ = cmd.RegisterFlagCompletionFunc("head", cmdutil.CompleteBranchNames)
_ = cmd.RegisterFlagCompletionFunc("reviewer", cmdutil.CompleteWorkspaceMembers)
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/pr/diff.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ by default when stdout is a terminal, and disabled when piped.`,
cmd.Flags().BoolVar(&opts.noColor, "no-color", false, "Disable color output")
cmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

cmd.ValidArgsFunction = cmdutil.CompletePRNumbers
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
4 changes: 4 additions & 0 deletions internal/cmd/pr/edit.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ At least one of --title, --body, or --base must be specified.`,
cmd.Flags().StringVar(&opts.base, "base", "", "New destination branch")
cmd.Flags().BoolVar(&opts.jsonOut, "json", false, "Output in JSON format")

cmd.ValidArgsFunction = cmdutil.CompletePRNumbers
_ = cmd.RegisterFlagCompletionFunc("base", cmdutil.CompleteBranchNames)
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/pr/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ by state (OPEN, MERGED, DECLINED).`,
cmd.Flags().BoolVar(&opts.JSON, "json", false, "Output in JSON format")
cmd.Flags().StringVarP(&opts.Repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

_ = cmd.RegisterFlagCompletionFunc("state", cmdutil.StaticFlagCompletion([]string{"OPEN", "MERGED", "DECLINED"}))
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/pr/merge.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,9 @@ may not support rebase merge for all repositories).`,
cmd.Flags().Bool("squash", false, "Use squash merge")
cmd.Flags().Bool("rebase", false, "Use rebase merge (if supported)")

cmd.ValidArgsFunction = cmdutil.CompletePRNumbers
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/pr/reopen.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ Only declined pull requests can be reopened. Merged pull requests cannot be reop

cmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

cmd.ValidArgsFunction = cmdutil.CompletePRNumbers
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/pr/review.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ At least one action flag (--approve, --request-changes, or --comment) must be sp
cmd.Flags().StringVarP(&opts.body, "body", "b", "", "Review comment body")
cmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "Repository in WORKSPACE/REPO format")

cmd.ValidArgsFunction = cmdutil.CompletePRNumbers
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/pr/view.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,9 @@ You can specify a pull request by number, URL, or branch name.`,
cmd.Flags().BoolVar(&opts.jsonOut, "json", false, "Output in JSON format")
cmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "Select a repository using the WORKSPACE/REPO format")

cmd.ValidArgsFunction = cmdutil.CompletePRNumbers
_ = cmd.RegisterFlagCompletionFunc("repo", cmdutil.CompleteRepoNames)

return cmd
}

Expand Down
2 changes: 2 additions & 0 deletions internal/cmd/project/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ identifier (e.g., "PROJ", "DEV", "CORE").`,
cmd.Flags().BoolVarP(&opts.private, "private", "p", true, "Create a private project (default: true)")
cmd.Flags().BoolVar(&opts.jsonOut, "json", false, "Output in JSON format")

_ = cmd.RegisterFlagCompletionFunc("workspace", cmdutil.CompleteWorkspaceNames)

return cmd
}

Expand Down
2 changes: 2 additions & 0 deletions internal/cmd/project/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ This command shows projects you have access to in the specified workspace.`,
cmd.Flags().IntVarP(&opts.Limit, "limit", "l", 30, "Maximum number of projects to list")
cmd.Flags().BoolVar(&opts.JSON, "json", false, "Output in JSON format")

_ = cmd.RegisterFlagCompletionFunc("workspace", cmdutil.CompleteWorkspaceNames)

return cmd
}

Expand Down
2 changes: 2 additions & 0 deletions internal/cmd/project/view.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ short uppercase identifiers like "PROJ" or "DEV".`,
cmd.Flags().BoolVar(&opts.web, "web", false, "Open the project in a web browser")
cmd.Flags().BoolVar(&opts.jsonOut, "json", false, "Output in JSON format")

_ = cmd.RegisterFlagCompletionFunc("workspace", cmdutil.CompleteWorkspaceNames)

return cmd
}

Expand Down
2 changes: 2 additions & 0 deletions internal/cmd/repo/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ a public repository instead.`,
cmd.Flags().BoolVarP(&opts.clone, "clone", "c", false, "Clone the repository after creation")
cmd.Flags().StringVar(&opts.gitignore, "gitignore", "", "Initialize with gitignore template")

_ = cmd.RegisterFlagCompletionFunc("workspace", cmdutil.CompleteWorkspaceNames)

return cmd
}

Expand Down
Loading
Loading