From 6e3fd1375d3fa295193ecd5b2db49285c8854fd4 Mon Sep 17 00:00:00 2001 From: rsteube Date: Sun, 20 Nov 2022 21:34:12 +0100 Subject: [PATCH] use UniqueList --- completers/agg_completer/cmd/root.go | 10 ++- completers/asciinema_completer/cmd/rec.go | 4 +- completers/bat_completer/cmd/root.go | 8 +-- .../cargo-metadata_completer/cmd/root.go | 4 +- completers/cargo_completer/cmd/add.go | 4 +- completers/cargo_completer/cmd/bench.go | 4 +- completers/cargo_completer/cmd/build.go | 4 +- completers/cargo_completer/cmd/doc.go | 10 ++- completers/cargo_completer/cmd/fix.go | 4 +- completers/cargo_completer/cmd/install.go | 4 +- completers/cargo_completer/cmd/publish.go | 4 +- completers/cargo_completer/cmd/run.go | 4 +- completers/cargo_completer/cmd/test.go | 4 +- completers/chroot_completer/cmd/root.go | 4 +- .../consul_completer/cmd/action/service.go | 6 +- completers/curl_completer/cmd/root.go | 22 +++---- completers/dd_completer/cmd/root.go | 12 +--- completers/deno_completer/cmd/lint.go | 10 +-- completers/dfc_completer/cmd/root.go | 8 +-- completers/dlv_completer/cmd/root.go | 22 +++---- completers/dmesg_completer/cmd/root.go | 12 ++-- completers/find_completer/cmd/root.go | 10 +-- completers/fish_completer/cmd/root.go | 12 ++-- completers/flutter_completer/cmd/create.go | 6 +- completers/fzf_completer/cmd/root.go | 14 ++--- completers/gh_completer/cmd/api.go | 4 +- completers/gh_completer/cmd/auth_login.go | 4 +- completers/gh_completer/cmd/auth_refresh.go | 4 +- completers/gh_completer/cmd/codespace_list.go | 4 +- .../gh_completer/cmd/codespace_ports.go | 4 +- .../gh_completer/cmd/extension_search.go | 14 ++--- completers/gh_completer/cmd/issue_create.go | 10 +-- completers/gh_completer/cmd/issue_edit.go | 16 ++--- completers/gh_completer/cmd/issue_list.go | 12 ++-- completers/gh_completer/cmd/issue_status.go | 4 +- completers/gh_completer/cmd/issue_view.go | 4 +- completers/gh_completer/cmd/label_list.go | 4 +- completers/gh_completer/cmd/pr_create.go | 18 ++---- completers/gh_completer/cmd/pr_edit.go | 22 +++---- completers/gh_completer/cmd/pr_list.go | 10 +-- completers/gh_completer/cmd/pr_status.go | 4 +- completers/gh_completer/cmd/pr_view.go | 4 +- completers/gh_completer/cmd/release_view.go | 4 +- completers/gh_completer/cmd/repo_edit.go | 4 +- completers/gh_completer/cmd/repo_list.go | 10 ++- completers/gh_completer/cmd/repo_view.go | 4 +- completers/gh_completer/cmd/search_issues.go | 24 +++---- completers/gh_completer/cmd/search_prs.go | 26 +++----- completers/gh_completer/cmd/search_repos.go | 30 +++------ completers/gh_completer/cmd/secret_set.go | 12 ++-- completers/git_completer/cmd/diff.go | 18 +++--- completers/git_completer/cmd/log.go | 30 ++++----- completers/glab_completer/cmd/ci_delete.go | 4 +- completers/glab_completer/cmd/issue_create.go | 18 ++---- completers/glab_completer/cmd/issue_list.go | 28 +++------ completers/glab_completer/cmd/issue_update.go | 12 +--- completers/glab_completer/cmd/mr_create.go | 12 +--- completers/glab_completer/cmd/mr_for.go | 6 +- completers/glab_completer/cmd/mr_list.go | 22 +++---- completers/glab_completer/cmd/mr_update.go | 18 ++---- .../glab_completer/cmd/release_download.go | 4 +- .../cmd/root.go | 4 +- completers/go-carpet_completer/cmd/root.go | 4 +- completers/go_completer/cmd/build.go | 4 +- completers/go_completer/cmd/test.go | 8 +-- completers/gpasswd_completer/cmd/root.go | 12 ++-- completers/gum_completer/cmd/choose.go | 4 +- completers/htop_completer/cmd/root.go | 4 +- completers/http_completer/cmd/root.go | 14 ++--- completers/hugo_completer/cmd/action/kind.go | 4 +- completers/javac_completer/cmd/root.go | 28 +++------ completers/journalctl_completer/cmd/root.go | 16 ++--- completers/ktlint_completer/cmd/root.go | 10 ++- .../cmd/config_print_initDefaults.go | 4 +- .../cmd/config_print_joinDefaults.go | 4 +- completers/kubeadm_completer/cmd/init.go | 14 ++--- .../cmd/init_phase_preflight.go | 6 +- completers/kubeadm_completer/cmd/join.go | 14 ++--- .../cmd/join_phase_preflight.go | 10 +-- completers/kubeadm_completer/cmd/reset.go | 16 ++--- .../cmd/reset_phase_preflight.go | 6 +- .../kubeadm_completer/cmd/token_create.go | 4 +- .../kubeadm_completer/cmd/upgrade_apply.go | 10 ++- .../kubeadm_completer/cmd/upgrade_node.go | 8 +-- .../cmd/upgrade_node_phase_preflight.go | 4 +- .../kubeadm_completer/cmd/upgrade_plan.go | 8 +-- completers/kubectl_completer/cmd/delete.go | 4 +- completers/kubectl_completer/cmd/get.go | 4 +- completers/kubectl_completer/cmd/set_image.go | 4 +- completers/lsblk_completer/cmd/root.go | 8 +-- completers/lscpu_completer/cmd/root.go | 14 ++--- completers/lslocks_completer/cmd/root.go | 6 +- completers/lslogins_completer/cmd/root.go | 16 ++--- completers/lsmem_completer/cmd/root.go | 8 +-- completers/lsns_completer/cmd/root.go | 8 +-- .../minikube_completer/cmd/addons_enable.go | 4 +- completers/minikube_completer/cmd/pause.go | 6 +- completers/minikube_completer/cmd/start.go | 17 +++-- completers/minikube_completer/cmd/unpause.go | 6 +- completers/mount_completer/cmd/root.go | 18 +++--- completers/mvn_completer/cmd/root.go | 4 +- completers/newman_completer/cmd/run.go | 16 +++-- completers/ng_completer/cmd/build.go | 4 +- completers/ng_completer/cmd/deploy.go | 4 +- completers/ng_completer/cmd/e2e.go | 4 +- completers/ng_completer/cmd/extractI18n.go | 4 +- completers/ng_completer/cmd/lint.go | 4 +- completers/ng_completer/cmd/run.go | 4 +- completers/ng_completer/cmd/serve.go | 4 +- completers/ng_completer/cmd/test.go | 4 +- .../nmcli_completer/cmd/general_logging.go | 4 +- completers/nmcli_completer/cmd/root.go | 10 +-- completers/node_completer/cmd/root.go | 14 ++--- completers/pamac_completer/cmd/install.go | 4 +- completers/pamac_completer/cmd/update.go | 4 +- completers/pgrep_completer/cmd/root.go | 32 +++------- completers/pkill_completer/cmd/root.go | 26 +++----- completers/ps_completer/cmd/root.go | 44 ++++--------- completers/pwait_completer/cmd/root.go | 32 +++------- completers/redis-cli_completer/cmd/root.go | 4 +- completers/restic_completer/cmd/backup.go | 6 +- completers/restic_completer/cmd/copy.go | 4 +- completers/restic_completer/cmd/dump.go | 4 +- completers/restic_completer/cmd/find.go | 8 +-- completers/restic_completer/cmd/forget.go | 10 +-- completers/restic_completer/cmd/ls.go | 4 +- completers/restic_completer/cmd/mount.go | 4 +- completers/restic_completer/cmd/restore.go | 8 +-- completers/restic_completer/cmd/snapshots.go | 12 ++-- completers/restic_completer/cmd/stats.go | 4 +- completers/restic_completer/cmd/tag.go | 18 ++---- completers/rsync_completer/cmd/root.go | 12 ++-- completers/rustc_completer/cmd/root.go | 10 +-- .../rustup_completer/cmd/toolchain_install.go | 6 +- completers/ssh-keygen_completer/cmd/root.go | 10 ++- completers/ssh_completer/cmd/root.go | 4 +- completers/staticcheck_completer/cmd/root.go | 8 +-- completers/sudo_completer/cmd/root.go | 10 ++- completers/sudoreplay_completer/cmd/root.go | 4 +- completers/supervisord_completer/cmd/root.go | 20 +++--- completers/tesseract_completer/cmd/root.go | 4 +- completers/tinygo_completer/cmd/root.go | 12 ++-- .../tmux_completer/cmd/attachSession.go | 4 +- completers/tmux_completer/cmd/root.go | 4 +- completers/top_completer/cmd/root.go | 4 +- completers/tsc_completer/cmd/root.go | 12 ++-- completers/umount_completer/cmd/root.go | 8 +-- completers/useradd_completer/cmd/root.go | 4 +- completers/usermod_completer/cmd/root.go | 6 +- completers/vagrant_completer/cmd/provision.go | 4 +- completers/vagrant_completer/cmd/reload.go | 4 +- completers/vagrant_completer/cmd/resume.go | 4 +- .../vagrant_completer/cmd/snapshot_pop.go | 4 +- .../vagrant_completer/cmd/snapshot_restore.go | 4 +- completers/vagrant_completer/cmd/up.go | 6 +- completers/vercel_completer/cmd/root.go | 4 +- completers/watchexec_completer/cmd/root.go | 4 +- completers/wget_completer/cmd/root.go | 62 ++++++++----------- completers/xdotool_completer/cmd/key.go | 4 +- completers/xdotool_completer/cmd/keydown.go | 4 +- completers/xdotool_completer/cmd/keyup.go | 4 +- completers/youtube-dl_completer/cmd/root.go | 8 +-- go.mod | 2 +- go.sum | 4 +- pkg/actions/net/http/http.go | 24 ++----- 165 files changed, 548 insertions(+), 1025 deletions(-) diff --git a/completers/agg_completer/cmd/root.go b/completers/agg_completer/cmd/root.go index 17d3fc0c19..e9eda60297 100644 --- a/completers/agg_completer/cmd/root.go +++ b/completers/agg_completer/cmd/root.go @@ -36,12 +36,10 @@ func init() { rootCmd.Flags().BoolP("version", "V", false, "Print version information") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "font-dir": carapace.ActionDirectories(), - "font-family": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionFontFamilies().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "renderer": carapace.ActionValues("fontdue", "resvg"), - "theme": carapace.ActionValues("asciinema", "dracula", "monokai", "solarized-dark", "solarized-light", "custom"), + "font-dir": carapace.ActionDirectories(), + "font-family": os.ActionFontFamilies().UniqueList(","), + "renderer": carapace.ActionValues("fontdue", "resvg"), + "theme": carapace.ActionValues("asciinema", "dracula", "monokai", "solarized-dark", "solarized-light", "custom"), }) carapace.Gen(rootCmd).PositionalCompletion( diff --git a/completers/asciinema_completer/cmd/rec.go b/completers/asciinema_completer/cmd/rec.go index 24dd0e6d75..7384da5a8d 100644 --- a/completers/asciinema_completer/cmd/rec.go +++ b/completers/asciinema_completer/cmd/rec.go @@ -33,9 +33,7 @@ func init() { carapace.ActionFiles(), os.ActionPathExecutables(), ).ToA(), - "env": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionEnvironmentVariables().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "env": os.ActionEnvironmentVariables().UniqueList(","), }) carapace.Gen(recCmd).PositionalCompletion( diff --git a/completers/bat_completer/cmd/root.go b/completers/bat_completer/cmd/root.go index 6ac7e71b0a..0285000cb0 100644 --- a/completers/bat_completer/cmd/root.go +++ b/completers/bat_completer/cmd/root.go @@ -53,11 +53,9 @@ func init() { "italic-text": carapace.ActionValues("never", "always").StyleF(style.ForKeyword), "language": action.ActionLanguages(), "paging": carapace.ActionValues("auto", "never", "always").StyleF(style.ForKeyword), - "style": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("auto", "full", "plain", "changes", "header", "grid", "numbers", "snip").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "theme": action.ActionThemes(), - "wrap": carapace.ActionValues("auto", "never", "character"), + "style": carapace.ActionValues("auto", "full", "plain", "changes", "header", "grid", "numbers", "snip").UniqueList(","), + "theme": action.ActionThemes(), + "wrap": carapace.ActionValues("auto", "never", "character"), }) carapace.Gen(rootCmd).PositionalAnyCompletion( diff --git a/completers/cargo-metadata_completer/cmd/root.go b/completers/cargo-metadata_completer/cmd/root.go index 26cc9f0dbc..183fa6d9ca 100644 --- a/completers/cargo-metadata_completer/cmd/root.go +++ b/completers/cargo-metadata_completer/cmd/root.go @@ -41,8 +41,8 @@ func init() { carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ "Z": cargo.ActionNightlyFlags(), "color": carapace.ActionValues("auto", "always", "never").StyleF(style.ForKeyword), - "features": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return cargo.ActionFeatures(rootCmd.Flag("manifest-path").Value.String()).Invoke(c).Filter(c.Parts).ToA().NoSpace() + "features": carapace.ActionCallback(func(c carapace.Context) carapace.Action { + return cargo.ActionFeatures(rootCmd.Flag("manifest-path").Value.String()).UniqueList(",") }), "format-version": carapace.ActionValues("1"), "manifest-path": carapace.ActionFiles(), diff --git a/completers/cargo_completer/cmd/add.go b/completers/cargo_completer/cmd/add.go index 3459587b3d..486879f017 100644 --- a/completers/cargo_completer/cmd/add.go +++ b/completers/cargo_completer/cmd/add.go @@ -50,10 +50,10 @@ func init() { } return carapace.ActionValues() }), - "features": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "features": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) == 1 && !util.HasPathPrefix(c.Args[0]) { // TODO limit to specific version - return action.ActionGithubPackageFeatures(strings.Split(c.Args[0], "@")[0]).Invoke(c).Filter(c.Parts).ToA().NoSpace() + return action.ActionGithubPackageFeatures(strings.Split(c.Args[0], "@")[0]).UniqueList(",") } return carapace.ActionValues() }), diff --git a/completers/cargo_completer/cmd/bench.go b/completers/cargo_completer/cmd/bench.go index a9b7d6b62c..791892d243 100644 --- a/completers/cargo_completer/cmd/bench.go +++ b/completers/cargo_completer/cmd/bench.go @@ -56,8 +56,8 @@ func init() { "color": action.ActionColorModes(), "example": action.ActionTargets(benchCmd, action.TargetOpts{Example: true}), "exclude": action.ActionWorkspaceMembers(benchCmd), - "features": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return cargo.ActionFeatures(benchCmd.Flag("manifest-path").Value.String()).Invoke(c).Filter(c.Parts).ToA().NoSpace() + "features": carapace.ActionCallback(func(c carapace.Context) carapace.Action { + return cargo.ActionFeatures(benchCmd.Flag("manifest-path").Value.String()).UniqueList(",") }), "manifest-path": carapace.ActionFiles(), "message-format": action.ActionMessageFormats(), diff --git a/completers/cargo_completer/cmd/build.go b/completers/cargo_completer/cmd/build.go index f82a59a9c2..0217f3decd 100644 --- a/completers/cargo_completer/cmd/build.go +++ b/completers/cargo_completer/cmd/build.go @@ -58,8 +58,8 @@ func init() { "color": action.ActionColorModes(), "example": action.ActionTargets(buildCmd, action.TargetOpts{Example: true}), "exclude": action.ActionWorkspaceMembers(buildCmd), - "features": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return cargo.ActionFeatures(buildCmd.Flag("manifest-path").Value.String()).Invoke(c).Filter(c.Parts).ToA().NoSpace() + "features": carapace.ActionCallback(func(c carapace.Context) carapace.Action { + return cargo.ActionFeatures(buildCmd.Flag("manifest-path").Value.String()).UniqueList(",") }), "manifest-path": carapace.ActionFiles(), "message-format": action.ActionMessageFormats(), diff --git a/completers/cargo_completer/cmd/doc.go b/completers/cargo_completer/cmd/doc.go index a06845eff1..55f17bd4f1 100644 --- a/completers/cargo_completer/cmd/doc.go +++ b/completers/cargo_completer/cmd/doc.go @@ -47,12 +47,10 @@ func init() { rootCmd.AddCommand(docCmd) carapace.Gen(docCmd).FlagCompletion(carapace.ActionMap{ - "bin": action.ActionTargets(docCmd, action.TargetOpts{Bin: true}), - "color": action.ActionColorModes(), - "exclude": action.ActionWorkspaceMembers(docCmd), - "features": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return cargo.ActionFeatures(docCmd.Flag("manifest-path").Value.String()).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "bin": action.ActionTargets(docCmd, action.TargetOpts{Bin: true}), + "color": action.ActionColorModes(), + "exclude": action.ActionWorkspaceMembers(docCmd), + "features": cargo.ActionFeatures(docCmd.Flag("manifest-path").Value.String()).UniqueList(","), "manifest-path": carapace.ActionFiles(), "message-format": action.ActionMessageFormats(), "package": action.ActionDependencies(docCmd, true), diff --git a/completers/cargo_completer/cmd/fix.go b/completers/cargo_completer/cmd/fix.go index 5af7fb0b95..36eb137e1a 100644 --- a/completers/cargo_completer/cmd/fix.go +++ b/completers/cargo_completer/cmd/fix.go @@ -64,8 +64,8 @@ func init() { "color": action.ActionColorModes(), "example": action.ActionTargets(fixCmd, action.TargetOpts{Example: true}), "exclude": action.ActionWorkspaceMembers(fixCmd), - "features": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return cargo.ActionFeatures(fixCmd.Flag("manifest-path").Value.String()).Invoke(c).Filter(c.Parts).ToA().NoSpace() + "features": carapace.ActionCallback(func(c carapace.Context) carapace.Action { + return cargo.ActionFeatures(fixCmd.Flag("manifest-path").Value.String()).UniqueList(",") }), "manifest-path": carapace.ActionFiles(), "message-format": action.ActionMessageFormats(), diff --git a/completers/cargo_completer/cmd/install.go b/completers/cargo_completer/cmd/install.go index 7f6966b988..7c1e4dbb61 100644 --- a/completers/cargo_completer/cmd/install.go +++ b/completers/cargo_completer/cmd/install.go @@ -55,8 +55,8 @@ func init() { // TODO "branch" "color": action.ActionColorModes(), "example": action.ActionTargets(installCmd, action.TargetOpts{Example: true}), - "features": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return cargo.ActionFeatures("").Invoke(c).Filter(c.Parts).ToA().NoSpace() + "features": carapace.ActionCallback(func(c carapace.Context) carapace.Action { + return cargo.ActionFeatures("").UniqueList(",") }), "path": carapace.ActionFiles(), "profile": action.ActionProfiles(installCmd), diff --git a/completers/cargo_completer/cmd/publish.go b/completers/cargo_completer/cmd/publish.go index ff5ade130d..ae12f99585 100644 --- a/completers/cargo_completer/cmd/publish.go +++ b/completers/cargo_completer/cmd/publish.go @@ -41,8 +41,8 @@ func init() { carapace.Gen(publishCmd).FlagCompletion(carapace.ActionMap{ "color": action.ActionColorModes(), - "features": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return cargo.ActionFeatures(publishCmd.Flag("manifest-path").Value.String()).Invoke(c).Filter(c.Parts).ToA().NoSpace() + "features": carapace.ActionCallback(func(c carapace.Context) carapace.Action { + return cargo.ActionFeatures(publishCmd.Flag("manifest-path").Value.String()).UniqueList(",") }), "manifest-path": carapace.ActionFiles(), "registry": action.ActionRegistries(), diff --git a/completers/cargo_completer/cmd/run.go b/completers/cargo_completer/cmd/run.go index b678e02668..191fcc9c41 100644 --- a/completers/cargo_completer/cmd/run.go +++ b/completers/cargo_completer/cmd/run.go @@ -44,8 +44,8 @@ func init() { "bin": action.ActionTargets(runCmd, action.TargetOpts{Bin: true}), "color": action.ActionColorModes(), "example": action.ActionTargets(runCmd, action.TargetOpts{Example: true}), - "features": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return cargo.ActionFeatures(runCmd.Flag("manifest-path").Value.String()).Invoke(c).Filter(c.Parts).ToA().NoSpace() + "features": carapace.ActionCallback(func(c carapace.Context) carapace.Action { + return cargo.ActionFeatures(runCmd.Flag("manifest-path").Value.String()).UniqueList(",") }), "manifest-path": carapace.ActionFiles(), "message-format": action.ActionMessageFormats(), diff --git a/completers/cargo_completer/cmd/test.go b/completers/cargo_completer/cmd/test.go index 9c13407120..0b14042eb9 100644 --- a/completers/cargo_completer/cmd/test.go +++ b/completers/cargo_completer/cmd/test.go @@ -60,8 +60,8 @@ func init() { "color": action.ActionColorModes(), "example": action.ActionTargets(testCmd, action.TargetOpts{Example: true}), "exclude": action.ActionWorkspaceMembers(testCmd), - "features": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return cargo.ActionFeatures(testCmd.Flag("manifest-path").Value.String()).Invoke(c).Filter(c.Parts).ToA().NoSpace() + "features": carapace.ActionCallback(func(c carapace.Context) carapace.Action { + return cargo.ActionFeatures(testCmd.Flag("manifest-path").Value.String()).UniqueList(",") }), "manifest-path": carapace.ActionFiles(), "message-format": action.ActionMessageFormats(), diff --git a/completers/chroot_completer/cmd/root.go b/completers/chroot_completer/cmd/root.go index 0b3b00a104..e5351fef2b 100644 --- a/completers/chroot_completer/cmd/root.go +++ b/completers/chroot_completer/cmd/root.go @@ -26,9 +26,7 @@ func init() { rootCmd.Flags().Bool("version", false, "output version information and exit") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "groups": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionGroups().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "groups": os.ActionGroups().UniqueList(","), "userspec": os.ActionUserGroup(), }) } diff --git a/completers/consul_completer/cmd/action/service.go b/completers/consul_completer/cmd/action/service.go index 4892a89bdc..40c381e04d 100644 --- a/completers/consul_completer/cmd/action/service.go +++ b/completers/consul_completer/cmd/action/service.go @@ -22,11 +22,9 @@ func ActionServiceIdentity(cmd *cobra.Command) carapace.Action { return carapace.ActionMultiParts(":", func(c carapace.Context) carapace.Action { switch len(c.Parts) { case 0: - return ActionServices(cmd) + return ActionServices(cmd).NoSpace() case 1: - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionDatacenters(cmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }) + return ActionDatacenters(cmd).UniqueList(",") default: return carapace.ActionValues() } diff --git a/completers/curl_completer/cmd/root.go b/completers/curl_completer/cmd/root.go index 45c406540c..5076a5a09b 100644 --- a/completers/curl_completer/cmd/root.go +++ b/completers/curl_completer/cmd/root.go @@ -261,10 +261,8 @@ func init() { "capath": carapace.ActionDirectories(), "cert": carapace.ActionFiles(), "cert-type": carapace.ActionValues("DER", "PEM", "ENG"), - "ciphers": carapace.ActionMultiParts(":", func(c carapace.Context) carapace.Action { - return ssh.ActionCiphers().Invoke(c).Filter(c.Parts).ToA() - }), - "config": carapace.ActionFiles(), + "ciphers": ssh.ActionCiphers().UniqueList(":"), + "config": carapace.ActionFiles(), "connect-to": carapace.ActionMultiParts(":", func(c carapace.Context) carapace.Action { switch len(c.Parts) { case 0: @@ -310,15 +308,13 @@ func init() { "proxy-capath": carapace.ActionDirectories(), "proxy-cert": carapace.ActionFiles(), "proxy-cert-type": carapace.ActionValues("DER", "PEM", "ENG"), - "proxy-ciphers": carapace.ActionMultiParts(":", func(c carapace.Context) carapace.Action { - return ssh.ActionCiphers().Invoke(c).Filter(c.Parts).ToA() - }), - "proxy-key": carapace.ActionFiles(), - "random-file": carapace.ActionFiles(), - "trace": carapace.ActionFiles(), - "unix-socket": carapace.ActionFiles(), - "upload-file": carapace.ActionFiles(), - "user-agent": http.ActionUserAgents(), + "proxy-ciphers": ssh.ActionCiphers().UniqueList(":"), + "proxy-key": carapace.ActionFiles(), + "random-file": carapace.ActionFiles(), + "trace": carapace.ActionFiles(), + "unix-socket": carapace.ActionFiles(), + "upload-file": carapace.ActionFiles(), + "user-agent": http.ActionUserAgents(), }) carapace.Gen(rootCmd).PositionalCompletion( diff --git a/completers/dd_completer/cmd/root.go b/completers/dd_completer/cmd/root.go index fe83269ad3..8d77ea1241 100644 --- a/completers/dd_completer/cmd/root.go +++ b/completers/dd_completer/cmd/root.go @@ -49,21 +49,15 @@ func init() { case 1: switch c.Parts[0] { case "conv": - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return actionConvs().Invoke(c).Filter(c.Parts).ToA() - }) + return actionConvs().UniqueList(",") case "if": return carapace.ActionFiles() case "iflag": - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return actionIFlags().Invoke(c).Filter(c.Parts).ToA() - }) + return actionIFlags().UniqueList(",") case "of": return carapace.ActionFiles() case "oflag": - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return actionOFlags().Invoke(c).Filter(c.Parts).ToA() - }) + return actionOFlags().UniqueList(",") case "status": return carapace.ActionValues("none", "noxfer", "progress") default: diff --git a/completers/deno_completer/cmd/lint.go b/completers/deno_completer/cmd/lint.go index 073515d50b..e0ea561d67 100644 --- a/completers/deno_completer/cmd/lint.go +++ b/completers/deno_completer/cmd/lint.go @@ -30,13 +30,9 @@ func init() { lintCmd.Flag("rules-tags").NoOptDefVal = " " carapace.Gen(lintCmd).FlagCompletion(carapace.ActionMap{ - "config": carapace.ActionFiles(), - "rules-exclude": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLintRules().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "rules-include": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLintRules().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "config": carapace.ActionFiles(), + "rules-exclude": action.ActionLintRules().UniqueList(","), + "rules-include": action.ActionLintRules().UniqueList(","), }) carapace.Gen(lintCmd).PositionalAnyCompletion( diff --git a/completers/dfc_completer/cmd/root.go b/completers/dfc_completer/cmd/root.go index 3bdd094e4c..2688a2b089 100644 --- a/completers/dfc_completer/cmd/root.go +++ b/completers/dfc_completer/cmd/root.go @@ -56,13 +56,9 @@ func init() { "tex", "Output is TeX formated.", "text", "Text output (default).", ), - "p": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionFSNames().Invoke(c).Filter(c.Parts).ToA() - }), + "p": action.ActionFSNames().UniqueList(","), "q": carapace.ActionValues("name", "type", "mount"), - "t": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return fs.ActionFilesystemTypes().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "t": fs.ActionFilesystemTypes().UniqueList(","), "u": carapace.ActionValuesDescribed( "h", "Human readable", "b", "Show bytes.", diff --git a/completers/dlv_completer/cmd/root.go b/completers/dlv_completer/cmd/root.go index 1e0b5a1482..d756e0f5ff 100644 --- a/completers/dlv_completer/cmd/root.go +++ b/completers/dlv_completer/cmd/root.go @@ -45,18 +45,16 @@ func init() { ), "init": carapace.ActionFiles(), "log-dest": carapace.ActionFiles(), - "log-output": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValuesDescribed( - "debugger", "Log debugger commands", - "gdbwire", "Log connection to gdbserial backend", - "lldbout", "Copy output from debugserver/lldb to standard output", - "debuglineerr", "Log recoverable errors reading .debug_line", - "rpc", "Log all RPC messages", - "dap", "Log all DAP messages", - "fncall", "Log function call protocol", - "minidump", "Log minidump loading", - ).Invoke(c).Filter(c.Parts).ToA() - }), + "log-output": carapace.ActionValuesDescribed( + "debugger", "Log debugger commands", + "gdbwire", "Log connection to gdbserial backend", + "lldbout", "Copy output from debugserver/lldb to standard output", + "debuglineerr", "Log recoverable errors reading .debug_line", + "rpc", "Log all RPC messages", + "dap", "Log all DAP messages", + "fncall", "Log function call protocol", + "minidump", "Log minidump loading", + ).UniqueList(","), "redirect": carapace.ActionMultiParts(":", func(c carapace.Context) carapace.Action { switch len(c.Parts) { case 0: diff --git a/completers/dmesg_completer/cmd/root.go b/completers/dmesg_completer/cmd/root.go index 9771895c29..a1fcc1005b 100644 --- a/completers/dmesg_completer/cmd/root.go +++ b/completers/dmesg_completer/cmd/root.go @@ -56,13 +56,9 @@ func init() { carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ "color": carapace.ActionValues("auto", "never", "always").StyleF(style.ForKeyword), "console-level": action.ActionLogLevels(), - "facility": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionFacilities().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "file": carapace.ActionFiles(), - "level": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLogLevels().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "time-format": carapace.ActionValues("delta", "reltime", "ctime", "notime", "iso"), + "facility": action.ActionFacilities().UniqueList(","), + "file": carapace.ActionFiles(), + "level": action.ActionLogLevels().UniqueList(","), + "time-format": carapace.ActionValues("delta", "reltime", "ctime", "notime", "iso"), }) } diff --git a/completers/find_completer/cmd/root.go b/completers/find_completer/cmd/root.go index 8417f61e1b..c8b04b9d19 100644 --- a/completers/find_completer/cmd/root.go +++ b/completers/find_completer/cmd/root.go @@ -114,13 +114,9 @@ func init() { "group": os.ActionGroups(), "perm": fs.ActionFileModes(), "regextype": carapace.ActionValues("findutils-default", "ed", "emacs", "gnu-awk", "grep", "posix-awk", "awk", "posix-basic", "posix-egrep", "egrep", "posix-extended", "posix-minimal-basic", "sed"), - "type": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionFileTypes().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "user": os.ActionUsers(), - "xtype": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionFileTypes().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "type": ActionFileTypes().UniqueList(","), + "user": os.ActionUsers(), + "xtype": ActionFileTypes().UniqueList(","), }) carapace.Gen(rootCmd).PositionalAnyCompletion( diff --git a/completers/fish_completer/cmd/root.go b/completers/fish_completer/cmd/root.go index 8f8c1e8ad2..0da9bdd709 100644 --- a/completers/fish_completer/cmd/root.go +++ b/completers/fish_completer/cmd/root.go @@ -35,13 +35,11 @@ func init() { carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ "debug-output": carapace.ActionFiles(), - "features": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValuesDescribed( - "stderr-nocaret", "^ no longer redirects stderr", - "qmark-noglob", "? no longer globs", - "regex-easyesc", `string replace -r needs fewer \'s`, - ).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "features": carapace.ActionValuesDescribed( + "stderr-nocaret", "^ no longer redirects stderr", + "qmark-noglob", "? no longer globs", + "regex-easyesc", `string replace -r needs fewer \'s`, + ).UniqueList(","), "profile": carapace.ActionFiles(), }) diff --git a/completers/flutter_completer/cmd/create.go b/completers/flutter_completer/cmd/create.go index a2a1483567..9980a385ea 100644 --- a/completers/flutter_completer/cmd/create.go +++ b/completers/flutter_completer/cmd/create.go @@ -36,10 +36,8 @@ func init() { carapace.Gen(createCmd).FlagCompletion(carapace.ActionMap{ "android-language": carapace.ActionValues("java", "kotlin"), "ios-language": carapace.ActionValues("objc", "swift"), - "platforms": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("ios", "android", "windows", "linux", "macos", "web").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "sample": action.ActionSamples(), + "platforms": carapace.ActionValues("ios", "android", "windows", "linux", "macos", "web").UniqueList(","), + "sample": action.ActionSamples(), "template": carapace.ActionValuesDescribed( "app", "Generate a Flutter application.", "module", "Generate a project to add a Flutter module to an existing Android or iOS application.", diff --git a/completers/fzf_completer/cmd/root.go b/completers/fzf_completer/cmd/root.go index 751786352b..a436b9d356 100644 --- a/completers/fzf_completer/cmd/root.go +++ b/completers/fzf_completer/cmd/root.go @@ -70,13 +70,11 @@ func init() { rootCmd.Flags().String("with-nth", "", "Transform the presentation of each line using field index expressions") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "algo": carapace.ActionValues("v1", "v2"), - "border": carapace.ActionValues("rounded", "sharp", "horizontal", "vertical", "top", "bottom", "left", "right"), - "color": carapace.ActionValues("dark", "light", "16", "bw"), - "info": carapace.ActionValues("default", "inline", "hidden"), - "layout": carapace.ActionValues("default", "reverse", "reverse-list"), - "tiebreak": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("length", "begin", "end", "index").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "algo": carapace.ActionValues("v1", "v2"), + "border": carapace.ActionValues("rounded", "sharp", "horizontal", "vertical", "top", "bottom", "left", "right"), + "color": carapace.ActionValues("dark", "light", "16", "bw"), + "info": carapace.ActionValues("default", "inline", "hidden"), + "layout": carapace.ActionValues("default", "reverse", "reverse-list"), + "tiebreak": carapace.ActionValues("length", "begin", "end", "index").UniqueList(","), }) } diff --git a/completers/gh_completer/cmd/api.go b/completers/gh_completer/cmd/api.go index 80b64e9cbd..796bb1e576 100644 --- a/completers/gh_completer/cmd/api.go +++ b/completers/gh_completer/cmd/api.go @@ -35,9 +35,7 @@ func init() { "hostname": action.ActionConfigHosts(), "input": carapace.ActionFiles(), "method": http.ActionRequestMethods(), - "preview": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionApiPreviews().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "preview": action.ActionApiPreviews().UniqueList(","), }) carapace.Gen(apiCmd).PositionalCompletion( diff --git a/completers/gh_completer/cmd/auth_login.go b/completers/gh_completer/cmd/auth_login.go index 8f1bbd42fa..79391a56e0 100644 --- a/completers/gh_completer/cmd/auth_login.go +++ b/completers/gh_completer/cmd/auth_login.go @@ -24,8 +24,6 @@ func init() { carapace.Gen(auth_loginCmd).FlagCompletion(carapace.ActionMap{ "git-protocol": carapace.ActionValues("ssh", "https"), "hostname": action.ActionConfigHosts(), - "scopes": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionAuthScopes().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "scopes": action.ActionAuthScopes().UniqueList(","), }) } diff --git a/completers/gh_completer/cmd/auth_refresh.go b/completers/gh_completer/cmd/auth_refresh.go index 6764940a03..06b565562f 100644 --- a/completers/gh_completer/cmd/auth_refresh.go +++ b/completers/gh_completer/cmd/auth_refresh.go @@ -20,8 +20,6 @@ func init() { carapace.Gen(auth_refreshCmd).FlagCompletion(carapace.ActionMap{ "hostname": action.ActionConfigHosts(), - "scopes": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionAuthScopes().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "scopes": action.ActionAuthScopes().UniqueList(","), }) } diff --git a/completers/gh_completer/cmd/codespace_list.go b/completers/gh_completer/cmd/codespace_list.go index 24b8e96559..6994493495 100644 --- a/completers/gh_completer/cmd/codespace_list.go +++ b/completers/gh_completer/cmd/codespace_list.go @@ -26,9 +26,7 @@ func init() { codespaceCmd.AddCommand(codespace_listCmd) carapace.Gen(codespace_listCmd).FlagCompletion(carapace.ActionMap{ - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionCodespaceFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "json": action.ActionCodespaceFields().UniqueList(","), "org": gh.ActionOrganizations(gh.HostOpts{}), "repo": gh.ActionOwnerRepositories(gh.HostOpts{}), "user": gh.ActionUsers(gh.HostOpts{}), diff --git a/completers/gh_completer/cmd/codespace_ports.go b/completers/gh_completer/cmd/codespace_ports.go index e68f8a61d9..fb7187f09f 100644 --- a/completers/gh_completer/cmd/codespace_ports.go +++ b/completers/gh_completer/cmd/codespace_ports.go @@ -22,8 +22,6 @@ func init() { carapace.Gen(codespace_portsCmd).FlagCompletion(carapace.ActionMap{ "codespace": action.ActionCodespaces(), - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionCodespacePortFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "json": action.ActionCodespacePortFields().UniqueList(","), }) } diff --git a/completers/gh_completer/cmd/extension_search.go b/completers/gh_completer/cmd/extension_search.go index 5ccd5b2309..1e83477e5d 100644 --- a/completers/gh_completer/cmd/extension_search.go +++ b/completers/gh_completer/cmd/extension_search.go @@ -27,14 +27,10 @@ func init() { extensionCmd.AddCommand(extension_searchCmd) carapace.Gen(extension_searchCmd).FlagCompletion(carapace.ActionMap{ - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSearchRepositoryFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "license": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return gh.ActionLicenses(gh.HostOpts{}).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "order": carapace.ActionValues("asc", "desc"), - "owner": gh.ActionOwners(gh.HostOpts{}), - "sort": carapace.ActionValues("forks", "help-wanted-issues", "stars", "updated"), + "json": action.ActionSearchRepositoryFields().UniqueList(","), + "license": gh.ActionLicenses(gh.HostOpts{}).UniqueList(","), + "order": carapace.ActionValues("asc", "desc"), + "owner": gh.ActionOwners(gh.HostOpts{}), + "sort": carapace.ActionValues("forks", "help-wanted-issues", "stars", "updated"), }) } diff --git a/completers/gh_completer/cmd/issue_create.go b/completers/gh_completer/cmd/issue_create.go index ad468f924a..118fd14ad8 100644 --- a/completers/gh_completer/cmd/issue_create.go +++ b/completers/gh_completer/cmd/issue_create.go @@ -27,13 +27,9 @@ func init() { issueCmd.AddCommand(issue_createCmd) carapace.Gen(issue_createCmd).FlagCompletion(carapace.ActionMap{ - "assignee": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionAssignableUsers(issue_createCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "body": action.ActionKeywordLinks(issue_createCmd), - "label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(issue_createCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "assignee": action.ActionAssignableUsers(issue_createCmd).UniqueList(","), + "body": action.ActionKeywordLinks(issue_createCmd), + "label": action.ActionLabels(issue_createCmd).UniqueList(","), "milestone": action.ActionMilestones(issue_createCmd), "project": action.ActionProjects(issue_createCmd, action.ProjectOpts{Open: true}), }) diff --git a/completers/gh_completer/cmd/issue_edit.go b/completers/gh_completer/cmd/issue_edit.go index 07ca388395..cb9c4b85a1 100644 --- a/completers/gh_completer/cmd/issue_edit.go +++ b/completers/gh_completer/cmd/issue_edit.go @@ -27,16 +27,12 @@ func init() { issueCmd.AddCommand(issue_editCmd) carapace.Gen(issue_editCmd).FlagCompletion(carapace.ActionMap{ - "add-assignee": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionAssignableUsers(issue_editCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "add-label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(issue_editCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "add-project": action.ActionProjects(issue_editCmd, action.ProjectOpts{Open: true}), - "body": action.ActionKeywordLinks(issue_editCmd), - "body-file": carapace.ActionFiles(), - "milestone": action.ActionMilestones(issue_editCmd), + "add-assignee": action.ActionAssignableUsers(issue_editCmd).UniqueList(","), + "add-label": action.ActionLabels(issue_editCmd).UniqueList(","), + "add-project": action.ActionProjects(issue_editCmd, action.ProjectOpts{Open: true}), + "body": action.ActionKeywordLinks(issue_editCmd), + "body-file": carapace.ActionFiles(), + "milestone": action.ActionMilestones(issue_editCmd), "remove-assignee": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) > 0 { return action.ActionIssueAssignees(issue_editCmd, c.Args[0]) diff --git a/completers/gh_completer/cmd/issue_list.go b/completers/gh_completer/cmd/issue_list.go index 916a256f27..4f5e9f2ce1 100644 --- a/completers/gh_completer/cmd/issue_list.go +++ b/completers/gh_completer/cmd/issue_list.go @@ -34,14 +34,10 @@ func init() { // TODO app completion carapace.Gen(issue_listCmd).FlagCompletion(carapace.ActionMap{ - "assignee": action.ActionAssignableUsers(issue_listCmd), - "author": gh.ActionUsers(gh.HostOpts{}), - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionIssueFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(issue_listCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "assignee": action.ActionAssignableUsers(issue_listCmd), + "author": gh.ActionUsers(gh.HostOpts{}), + "json": action.ActionIssueFields().UniqueList(","), + "label": action.ActionLabels(issue_listCmd).UniqueList(","), "mention": action.ActionMentionableUsers(issue_listCmd), "milestone": action.ActionMilestones(issue_listCmd), "state": carapace.ActionValues("open", "closed", "all").StyleF(styles.Gh.ForState), diff --git a/completers/gh_completer/cmd/issue_status.go b/completers/gh_completer/cmd/issue_status.go index 5d560df5c4..afb236da50 100644 --- a/completers/gh_completer/cmd/issue_status.go +++ b/completers/gh_completer/cmd/issue_status.go @@ -20,8 +20,6 @@ func init() { issueCmd.AddCommand(issue_statusCmd) carapace.Gen(issue_statusCmd).FlagCompletion(carapace.ActionMap{ - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionIssueFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "json": action.ActionIssueFields().UniqueList(","), }) } diff --git a/completers/gh_completer/cmd/issue_view.go b/completers/gh_completer/cmd/issue_view.go index 610d96c6cb..952834c4a8 100644 --- a/completers/gh_completer/cmd/issue_view.go +++ b/completers/gh_completer/cmd/issue_view.go @@ -22,9 +22,7 @@ func init() { issueCmd.AddCommand(issue_viewCmd) carapace.Gen(issue_viewCmd).FlagCompletion(carapace.ActionMap{ - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionIssueFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "json": action.ActionIssueFields().UniqueList(","), }) carapace.Gen(issue_viewCmd).PositionalCompletion( diff --git a/completers/gh_completer/cmd/label_list.go b/completers/gh_completer/cmd/label_list.go index e4587f62d0..176728b382 100644 --- a/completers/gh_completer/cmd/label_list.go +++ b/completers/gh_completer/cmd/label_list.go @@ -26,9 +26,7 @@ func init() { labelCmd.AddCommand(label_listCmd) carapace.Gen(label_listCmd).FlagCompletion(carapace.ActionMap{ - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return gh.ActionLabelFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "json": gh.ActionLabelFields().UniqueList(","), "order": carapace.ActionValues("asc", "desc"), "sort": carapace.ActionValues("created", "name"), }) diff --git a/completers/gh_completer/cmd/pr_create.go b/completers/gh_completer/cmd/pr_create.go index a51f00d603..983d8678b3 100644 --- a/completers/gh_completer/cmd/pr_create.go +++ b/completers/gh_completer/cmd/pr_create.go @@ -33,19 +33,13 @@ func init() { prCmd.AddCommand(pr_createCmd) carapace.Gen(pr_createCmd).FlagCompletion(carapace.ActionMap{ - "assignee": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionAssignableUsers(pr_createCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "base": action.ActionBranches(pr_createCmd), - "body": action.ActionKeywordLinks(pr_createCmd), - "head": action.ActionBranches(pr_createCmd), - "label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(pr_createCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "assignee": action.ActionAssignableUsers(pr_createCmd).UniqueList(","), + "base": action.ActionBranches(pr_createCmd), + "body": action.ActionKeywordLinks(pr_createCmd), + "head": action.ActionBranches(pr_createCmd), + "label": action.ActionLabels(pr_createCmd).UniqueList(","), "milestone": action.ActionMilestones(pr_createCmd), "project": action.ActionProjects(pr_createCmd, action.ProjectOpts{Open: true}), - "reviewer": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionAssignableUsers(pr_createCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "reviewer": action.ActionAssignableUsers(pr_createCmd).UniqueList(","), }) } diff --git a/completers/gh_completer/cmd/pr_edit.go b/completers/gh_completer/cmd/pr_edit.go index 9fac81f14f..d605bbe0c1 100644 --- a/completers/gh_completer/cmd/pr_edit.go +++ b/completers/gh_completer/cmd/pr_edit.go @@ -30,20 +30,14 @@ func init() { prCmd.AddCommand(pr_editCmd) carapace.Gen(pr_editCmd).FlagCompletion(carapace.ActionMap{ - "add-assignee": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionAssignableUsers(pr_editCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "add-label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(pr_editCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "add-project": action.ActionProjects(pr_editCmd, action.ProjectOpts{Open: true}), - "add-reviewer": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionAssignableUsers(pr_editCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "base": action.ActionBranches(pr_editCmd), - "body": action.ActionKeywordLinks(pr_editCmd), - "body-file": carapace.ActionFiles(), - "milestone": action.ActionMilestones(pr_editCmd), + "add-assignee": action.ActionAssignableUsers(pr_editCmd).UniqueList(","), + "add-label": action.ActionLabels(pr_editCmd).UniqueList(","), + "add-project": action.ActionProjects(pr_editCmd, action.ProjectOpts{Open: true}), + "add-reviewer": action.ActionAssignableUsers(pr_editCmd).UniqueList(","), + "base": action.ActionBranches(pr_editCmd), + "body": action.ActionKeywordLinks(pr_editCmd), + "body-file": carapace.ActionFiles(), + "milestone": action.ActionMilestones(pr_editCmd), "remove-assignee": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) > 0 { return action.ActionPullRequestAssignees(pr_editCmd, c.Args[0]) diff --git a/completers/gh_completer/cmd/pr_list.go b/completers/gh_completer/cmd/pr_list.go index 27ce7f8d7e..0784b9ac95 100644 --- a/completers/gh_completer/cmd/pr_list.go +++ b/completers/gh_completer/cmd/pr_list.go @@ -39,12 +39,8 @@ func init() { "author": gh.ActionUsers(gh.HostOpts{}), "base": action.ActionBranches(pr_listCmd), "head": action.ActionBranches(pr_listCmd), - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionPullRequestFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(pr_listCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "state": carapace.ActionValues("open", "closed", "merged", "all").StyleF(styles.Gh.ForState), + "json": action.ActionPullRequestFields().UniqueList(","), + "label": action.ActionLabels(pr_listCmd).UniqueList(","), + "state": carapace.ActionValues("open", "closed", "merged", "all").StyleF(styles.Gh.ForState), }) } diff --git a/completers/gh_completer/cmd/pr_status.go b/completers/gh_completer/cmd/pr_status.go index bc95ca2da8..ef6a801890 100644 --- a/completers/gh_completer/cmd/pr_status.go +++ b/completers/gh_completer/cmd/pr_status.go @@ -21,8 +21,6 @@ func init() { prCmd.AddCommand(pr_statusCmd) carapace.Gen(pr_statusCmd).FlagCompletion(carapace.ActionMap{ - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionPullRequestFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "json": action.ActionPullRequestFields().UniqueList(","), }) } diff --git a/completers/gh_completer/cmd/pr_view.go b/completers/gh_completer/cmd/pr_view.go index d75dd7abdf..568a784fb8 100644 --- a/completers/gh_completer/cmd/pr_view.go +++ b/completers/gh_completer/cmd/pr_view.go @@ -22,9 +22,7 @@ func init() { prCmd.AddCommand(pr_viewCmd) carapace.Gen(pr_viewCmd).FlagCompletion(carapace.ActionMap{ - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionPullRequestFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "json": action.ActionPullRequestFields().UniqueList(","), }) carapace.Gen(pr_viewCmd).PositionalCompletion( diff --git a/completers/gh_completer/cmd/release_view.go b/completers/gh_completer/cmd/release_view.go index 79f5dabf76..9138ac35eb 100644 --- a/completers/gh_completer/cmd/release_view.go +++ b/completers/gh_completer/cmd/release_view.go @@ -21,9 +21,7 @@ func init() { releaseCmd.AddCommand(release_viewCmd) carapace.Gen(release_viewCmd).FlagCompletion(carapace.ActionMap{ - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionReleaseFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "json": action.ActionReleaseFields().UniqueList(","), }) carapace.Gen(release_viewCmd).PositionalCompletion( diff --git a/completers/gh_completer/cmd/repo_edit.go b/completers/gh_completer/cmd/repo_edit.go index 4f10f007da..62eb0322fc 100644 --- a/completers/gh_completer/cmd/repo_edit.go +++ b/completers/gh_completer/cmd/repo_edit.go @@ -41,12 +41,12 @@ func init() { } return action.ActionBranches(repo_editCmd) }), - "remove-topic": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "remove-topic": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) > 0 { repo_editCmd.Flags().String("repo", c.Args[0], "") repo_editCmd.Flag("repo").Changed = true } - return action.ActionRepoTopics(repo_editCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() + return action.ActionRepoTopics(repo_editCmd).UniqueList(",") }), "visibility": carapace.ActionValues("public", "private", "internal"), }) diff --git a/completers/gh_completer/cmd/repo_list.go b/completers/gh_completer/cmd/repo_list.go index 966d55be27..1ee5bdd9e7 100644 --- a/completers/gh_completer/cmd/repo_list.go +++ b/completers/gh_completer/cmd/repo_list.go @@ -30,15 +30,13 @@ func init() { repoCmd.AddCommand(repo_listCmd) carapace.Gen(repo_listCmd).FlagCompletion(carapace.ActionMap{ - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionRepositoryFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "json": action.ActionRepositoryFields().UniqueList(","), "language": action.ActionLanguages(), - "topic": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "topic": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) > 0 { - return action.ActionTopics(repo_listCmd, c.Args[0]).Invoke(c).Filter(c.Parts).ToA().NoSpace() + return action.ActionTopics(repo_listCmd, c.Args[0]).UniqueList(",") } - return action.ActionTopics(repo_listCmd, "").Invoke(c).Filter(c.Parts).ToA().NoSpace() + return action.ActionTopics(repo_listCmd, "").UniqueList(",") }), "visibility": carapace.ActionValues("public", "private", "internal"), }) diff --git a/completers/gh_completer/cmd/repo_view.go b/completers/gh_completer/cmd/repo_view.go index c5fd22fefc..3b19ab38cf 100644 --- a/completers/gh_completer/cmd/repo_view.go +++ b/completers/gh_completer/cmd/repo_view.go @@ -30,9 +30,7 @@ func init() { return carapace.ActionValues() } }), - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionRepositoryFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "json": action.ActionRepositoryFields().UniqueList(","), }) carapace.Gen(repo_viewCmd).PositionalCompletion( diff --git a/completers/gh_completer/cmd/search_issues.go b/completers/gh_completer/cmd/search_issues.go index d8114d633e..89ec28f896 100644 --- a/completers/gh_completer/cmd/search_issues.go +++ b/completers/gh_completer/cmd/search_issues.go @@ -65,18 +65,12 @@ func init() { "commenter": gh.ActionUsers(gh.HostOpts{}), "created": action.ActionSearchRange(time.ActionDateTime(time.DateTimeOpts{Strict: true})), "involves": gh.ActionUsers(gh.HostOpts{}), - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSearchIssueFields().Invoke(c).Filter(c.Parts).ToA() - }), - "label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSearchMultiRepo(search_issuesCmd, func(cmd *cobra.Command) carapace.Action { - return action.ActionLabels(cmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }) + "json": action.ActionSearchIssueFields().UniqueList(","), + "label": action.ActionSearchMultiRepo(search_issuesCmd, func(cmd *cobra.Command) carapace.Action { + return action.ActionLabels(cmd).UniqueList(",") }), "language": action.ActionLanguages(), - "match": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("title", "body", "comments").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "match": carapace.ActionValues("title", "body", "comments").UniqueList(","), "mentions": gh.ActionUsers(gh.HostOpts{}), "milestone": action.ActionSearchMultiRepo(search_issuesCmd, func(cmd *cobra.Command) carapace.Action { return action.ActionMilestones(cmd) @@ -88,11 +82,9 @@ func init() { dummyCmd.Flags().String("repo", c.CallbackValue, "fake repo flag") return action.ActionOwnerRepositories(dummyCmd).NoSpace() }), - "sort": carapace.ActionValues("comments", "created", "interactions", "reactions", "reactions-+1", "reactions--1", "reactions-heart", "reactions-smile", "reactions-tada", "reactions-thinking_face", "updated"), - "state": carapace.ActionValues("open", "closed").StyleF(styles.Gh.ForState), - "updated": action.ActionSearchRange(time.ActionDateTime(time.DateTimeOpts{Strict: true})), - "visibility": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("public", "private", "internal").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "sort": carapace.ActionValues("comments", "created", "interactions", "reactions", "reactions-+1", "reactions--1", "reactions-heart", "reactions-smile", "reactions-tada", "reactions-thinking_face", "updated"), + "state": carapace.ActionValues("open", "closed").StyleF(styles.Gh.ForState), + "updated": action.ActionSearchRange(time.ActionDateTime(time.DateTimeOpts{Strict: true})), + "visibility": carapace.ActionValues("public", "private", "internal").UniqueList(","), }) } diff --git a/completers/gh_completer/cmd/search_prs.go b/completers/gh_completer/cmd/search_prs.go index 880ff15f9d..ce27f36df6 100644 --- a/completers/gh_completer/cmd/search_prs.go +++ b/completers/gh_completer/cmd/search_prs.go @@ -80,18 +80,12 @@ func init() { return action.ActionBranches(cmd) }), "involves": gh.ActionUsers(gh.HostOpts{}), - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSearchIssueFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSearchMultiRepo(search_prsCmd, func(cmd *cobra.Command) carapace.Action { - return action.ActionLabels(cmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }) - }), - "language": action.ActionLanguages(), - "match": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("title", "body", "comments").Invoke(c).Filter(c.Parts).ToA().NoSpace() + "json": action.ActionSearchIssueFields().UniqueList(","), + "label": action.ActionSearchMultiRepo(search_prsCmd, func(cmd *cobra.Command) carapace.Action { + return action.ActionLabels(cmd).UniqueList(",") }), + "language": action.ActionLanguages(), + "match": carapace.ActionValues("title", "body", "comments").UniqueList(","), "mentions": gh.ActionUsers(gh.HostOpts{}), "merged-at": action.ActionSearchRange(time.ActionDateTime(time.DateTimeOpts{Strict: true})), "milestone": action.ActionSearchMultiRepo(search_prsCmd, func(cmd *cobra.Command) carapace.Action { @@ -111,11 +105,9 @@ func init() { "reviewed-by": action.ActionSearchMultiRepo(search_prsCmd, func(cmd *cobra.Command) carapace.Action { return action.ActionAssignableUsers(cmd) }), - "sort": carapace.ActionValues("comments", "created", "interactions", "reactions", "reactions-+1", "reactions--1", "reactions-heart", "reactions-smile", "reactions-tada", "reactions-thinking_face", "updated"), - "state": carapace.ActionValues("open", "closed").StyleF(styles.Gh.ForState), - "updated": action.ActionSearchRange(time.ActionDateTime(time.DateTimeOpts{Strict: true})), - "visibility": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("public", "private", "internal").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "sort": carapace.ActionValues("comments", "created", "interactions", "reactions", "reactions-+1", "reactions--1", "reactions-heart", "reactions-smile", "reactions-tada", "reactions-thinking_face", "updated"), + "state": carapace.ActionValues("open", "closed").StyleF(styles.Gh.ForState), + "updated": action.ActionSearchRange(time.ActionDateTime(time.DateTimeOpts{Strict: true})), + "visibility": carapace.ActionValues("public", "private", "internal").UniqueList(","), }) } diff --git a/completers/gh_completer/cmd/search_repos.go b/completers/gh_completer/cmd/search_repos.go index 23c2b61be9..3d74c6b03b 100644 --- a/completers/gh_completer/cmd/search_repos.go +++ b/completers/gh_completer/cmd/search_repos.go @@ -45,25 +45,15 @@ func init() { carapace.Gen(search_reposCmd).FlagCompletion(carapace.ActionMap{ "created": action.ActionSearchRange(time.ActionDateTime(time.DateTimeOpts{Strict: true})), "include-forks": carapace.ActionValues("false", "true", "only"), - "json": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSearchRepositoryFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "language": action.ActionLanguages(), - "license": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return gh.ActionLicenses(gh.HostOpts{}).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "match": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("name", "description", "readme").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "order": carapace.ActionValues("asc", "desc"), - "owner": gh.ActionOwners(gh.HostOpts{}), - "sort": carapace.ActionValues("forks", "help-wanted-issues", "stars", "updated"), - "topic": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionTopicSearch(search_reposCmd).Invoke(c).Filter(c.Parts).ToA() - }), - "updated": action.ActionSearchRange(time.ActionDateTime(time.DateTimeOpts{Strict: true})), - "visibility": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("public", "private", "internal").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "json": action.ActionSearchRepositoryFields().UniqueList(","), + "language": action.ActionLanguages(), + "license": gh.ActionLicenses(gh.HostOpts{}).UniqueList(","), + "match": carapace.ActionValues("name", "description", "readme").UniqueList(","), + "order": carapace.ActionValues("asc", "desc"), + "owner": gh.ActionOwners(gh.HostOpts{}), + "sort": carapace.ActionValues("forks", "help-wanted-issues", "stars", "updated"), + "topic": action.ActionTopicSearch(search_reposCmd).UniqueList(","), + "updated": action.ActionSearchRange(time.ActionDateTime(time.DateTimeOpts{Strict: true})), + "visibility": carapace.ActionValues("public", "private", "internal").UniqueList(","), }) } diff --git a/completers/gh_completer/cmd/secret_set.go b/completers/gh_completer/cmd/secret_set.go index da7e41bad3..bbc3886928 100644 --- a/completers/gh_completer/cmd/secret_set.go +++ b/completers/gh_completer/cmd/secret_set.go @@ -27,13 +27,11 @@ func init() { secretCmd.AddCommand(secret_setCmd) carapace.Gen(secret_setCmd).FlagCompletion(carapace.ActionMap{ - "app": carapace.ActionValues("actions", "codespaces", "dependabot"), - "env": action.ActionEnvironments(secret_setCmd), - "env-file": carapace.ActionFiles(), - "org": gh.ActionOrganizations(gh.HostOpts{}), - "repos": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionOwnerRepositories(secret_setCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "app": carapace.ActionValues("actions", "codespaces", "dependabot"), + "env": action.ActionEnvironments(secret_setCmd), + "env-file": carapace.ActionFiles(), + "org": gh.ActionOrganizations(gh.HostOpts{}), + "repos": action.ActionOwnerRepositories(secret_setCmd).UniqueList(","), "visibility": carapace.ActionValues("all", "private", "selected"), }) diff --git a/completers/git_completer/cmd/diff.go b/completers/git_completer/cmd/diff.go index 0bc1808647..f2dbc76133 100644 --- a/completers/git_completer/cmd/diff.go +++ b/completers/git_completer/cmd/diff.go @@ -121,16 +121,14 @@ func addDiffFlags(cmd *cobra.Command) { cmd.Flag("word-diff").NoOptDefVal = "plain" carapace.Gen(cmd).FlagCompletion(carapace.ActionMap{ - "color": carapace.ActionValues("auto", "never", "always").StyleF(style.ForKeyword), - "color-moved": ActionColorMovedModes(), - "color-moved-ws": ActionColorMovedWsModes(), - "diff-algorithm": ActionDiffAlgorithms(), - "output": carapace.ActionFiles(), - "submodule": carapace.ActionValues("short", "long", "log"), - "word-diff": ActionWordDiffModes(), - "ws-error-highlight": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionWsErrorHighlightModes().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "color": carapace.ActionValues("auto", "never", "always").StyleF(style.ForKeyword), + "color-moved": ActionColorMovedModes(), + "color-moved-ws": ActionColorMovedWsModes(), + "diff-algorithm": ActionDiffAlgorithms(), + "output": carapace.ActionFiles(), + "submodule": carapace.ActionValues("short", "long", "log"), + "word-diff": ActionWordDiffModes(), + "ws-error-highlight": ActionWsErrorHighlightModes().UniqueList(","), }) carapace.Gen(cmd).DashAnyCompletion( diff --git a/completers/git_completer/cmd/log.go b/completers/git_completer/cmd/log.go index 95a12f71ec..559cd84230 100644 --- a/completers/git_completer/cmd/log.go +++ b/completers/git_completer/cmd/log.go @@ -258,20 +258,18 @@ func init() { "patience", "Use \"patience diff\" algorithm when generating patches.", "histogram", "This algorithm extends the patience algorithm to \"support low-occurrence common elements\".", ), - "diff-filter": carapace.ActionMultiParts("", func(c carapace.Context) carapace.Action { - return carapace.ActionValuesDescribed( - "A", "Added", - "C", "Copied", - "D", "Deleted", - "M", "Modified", - "R", "Renamed", - "T", "Changed", - "U", "Unmerged", - "X", "Unknown", - "B", "Broken", - "*", "All-or-none", - ).Invoke(c).Filter(c.Parts).ToA() - }), + "diff-filter": carapace.ActionValuesDescribed( + "A", "Added", + "C", "Copied", + "D", "Deleted", + "M", "Modified", + "R", "Renamed", + "T", "Changed", + "U", "Unmerged", + "X", "Unknown", + "B", "Broken", + "*", "All-or-none", + ).UniqueList(""), "diff-merges": carapace.ActionValuesDescribed( "off", "Disable output of diffs for merge commits.", "none", "Disable output of diffs for merge commits.", @@ -300,9 +298,7 @@ func init() { "porcelain", "Use a special line-based format intended for script consumption", "none", "Disable word diff again", ), - "ws-error-highlight": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("context", "old", "new", "none", "all", "default").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "ws-error-highlight": carapace.ActionValues("context", "old", "new", "none", "all", "default").UniqueList(","), }) carapace.Gen(logCmd).PositionalAnyCompletion( diff --git a/completers/glab_completer/cmd/ci_delete.go b/completers/glab_completer/cmd/ci_delete.go index 62d8d872ec..050b74f6a7 100644 --- a/completers/glab_completer/cmd/ci_delete.go +++ b/completers/glab_completer/cmd/ci_delete.go @@ -22,8 +22,8 @@ func init() { }) carapace.Gen(ci_deleteCmd).PositionalCompletion( - carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionPipelines(ci_deleteCmd, ci_deleteCmd.Flag("status").Value.String()).Invoke(c).Filter(c.Args).ToA().NoSpace() + carapace.ActionCallback(func(c carapace.Context) carapace.Action { + return action.ActionPipelines(ci_deleteCmd, ci_deleteCmd.Flag("status").Value.String()).UniqueList(",") }), ) } diff --git a/completers/glab_completer/cmd/issue_create.go b/completers/glab_completer/cmd/issue_create.go index e5145563f2..07b417d81f 100644 --- a/completers/glab_completer/cmd/issue_create.go +++ b/completers/glab_completer/cmd/issue_create.go @@ -31,17 +31,11 @@ func init() { carapace.Gen(issue_createCmd).FlagCompletion(carapace.ActionMap{ // TODO more flags - "assignee": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProjectMembers(issue_createCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(issue_createCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "link-type": carapace.ActionValues("relates_to", "blocks", "is_blocked_by"), - "linked-issues": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionIssues(issue_createCmd, "opened").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "linked-mr": action.ActionMergeRequests(issue_createCmd, "opened"), - "milestone": action.ActionMilestones(issue_createCmd), + "assignee": action.ActionProjectMembers(issue_createCmd).UniqueList(","), + "label": action.ActionLabels(issue_createCmd).UniqueList(","), + "link-type": carapace.ActionValues("relates_to", "blocks", "is_blocked_by"), + "linked-issues": action.ActionIssues(issue_createCmd, "opened").UniqueList(","), + "linked-mr": action.ActionMergeRequests(issue_createCmd, "opened"), + "milestone": action.ActionMilestones(issue_createCmd), }) } diff --git a/completers/glab_completer/cmd/issue_list.go b/completers/glab_completer/cmd/issue_list.go index 4531eac8b7..5003d1f088 100644 --- a/completers/glab_completer/cmd/issue_list.go +++ b/completers/glab_completer/cmd/issue_list.go @@ -34,24 +34,14 @@ func init() { issueCmd.AddCommand(issue_listCmd) carapace.Gen(issue_listCmd).FlagCompletion(carapace.ActionMap{ - "assignee": action.ActionProjectMembers(issue_listCmd), - "author": action.ActionUsers(issue_listCmd), - "group": action.ActionGroups(issue_listCmd), - "in": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("title", "description").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(issue_listCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "milestone": action.ActionMilestones(issue_listCmd), - "not-assignee": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProjectMembers(issue_listCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "not-author": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionUsers(issue_listCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "not-label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(issue_listCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "assignee": action.ActionProjectMembers(issue_listCmd), + "author": action.ActionUsers(issue_listCmd), + "group": action.ActionGroups(issue_listCmd), + "in": carapace.ActionValues("title", "description").UniqueList(","), + "label": action.ActionLabels(issue_listCmd).UniqueList(","), + "milestone": action.ActionMilestones(issue_listCmd), + "not-assignee": action.ActionProjectMembers(issue_listCmd).UniqueList(","), + "not-author": action.ActionUsers(issue_listCmd).UniqueList(","), + "not-label": action.ActionLabels(issue_listCmd).UniqueList(","), }) } diff --git a/completers/glab_completer/cmd/issue_update.go b/completers/glab_completer/cmd/issue_update.go index 7ed7138d36..6f7c358abd 100644 --- a/completers/glab_completer/cmd/issue_update.go +++ b/completers/glab_completer/cmd/issue_update.go @@ -28,16 +28,10 @@ func init() { issueCmd.AddCommand(issue_updateCmd) carapace.Gen(issue_updateCmd).FlagCompletion(carapace.ActionMap{ - "assignee": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProjectMembers(issue_updateCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(issue_updateCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "assignee": action.ActionProjectMembers(issue_updateCmd).UniqueList(","), + "label": action.ActionLabels(issue_updateCmd).UniqueList(","), "milestone": action.ActionMilestones(issue_updateCmd), - "unlabel": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(issue_updateCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "unlabel": action.ActionLabels(issue_updateCmd).UniqueList(","), }) carapace.Gen(issue_updateCmd).PositionalCompletion( diff --git a/completers/glab_completer/cmd/mr_create.go b/completers/glab_completer/cmd/mr_create.go index b8770f3769..3a2a3e6ceb 100644 --- a/completers/glab_completer/cmd/mr_create.go +++ b/completers/glab_completer/cmd/mr_create.go @@ -41,17 +41,11 @@ func init() { mrCmd.AddCommand(mr_createCmd) carapace.Gen(mr_createCmd).FlagCompletion(carapace.ActionMap{ - "assignee": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProjectMembers(mr_createCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(mr_createCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "assignee": action.ActionProjectMembers(mr_createCmd).UniqueList(","), + "label": action.ActionLabels(mr_createCmd).UniqueList(","), "milestone": action.ActionMilestones(mr_createCmd), "related-issue": action.ActionIssues(mr_createCmd, "opened"), - "reviewer": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProjectMembers(mr_createCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "reviewer": action.ActionProjectMembers(mr_createCmd).UniqueList(","), "source-branch": action.ActionBranches(mr_createCmd), "target-branch": action.ActionBranches(mr_createCmd), }) diff --git a/completers/glab_completer/cmd/mr_for.go b/completers/glab_completer/cmd/mr_for.go index aa591162fd..7f588ba07d 100644 --- a/completers/glab_completer/cmd/mr_for.go +++ b/completers/glab_completer/cmd/mr_for.go @@ -26,10 +26,8 @@ func init() { mrCmd.AddCommand(mr_forCmd) carapace.Gen(mr_forCmd).FlagCompletion(carapace.ActionMap{ - "assignee": action.ActionProjectMembers(mr_forCmd), - "label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(mr_forCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "assignee": action.ActionProjectMembers(mr_forCmd), + "label": action.ActionLabels(mr_forCmd).UniqueList(","), "target-branch": action.ActionBranches(mr_forCmd), }) diff --git a/completers/glab_completer/cmd/mr_list.go b/completers/glab_completer/cmd/mr_list.go index f358b761c0..6cbc8ade7d 100644 --- a/completers/glab_completer/cmd/mr_list.go +++ b/completers/glab_completer/cmd/mr_list.go @@ -35,21 +35,13 @@ func init() { mrCmd.AddCommand(mr_listCmd) carapace.Gen(mr_listCmd).FlagCompletion(carapace.ActionMap{ - "assignee": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProjectMembers(mr_listCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "author": action.ActionUsers(mr_listCmd), - "group": action.ActionGroups(mr_listCmd), - "label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(mr_listCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "milestone": action.ActionMilestones(mr_listCmd), - "not-label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(mr_listCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "reviewer": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProjectMembers(mr_listCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "assignee": action.ActionProjectMembers(mr_listCmd).UniqueList(","), + "author": action.ActionUsers(mr_listCmd), + "group": action.ActionGroups(mr_listCmd), + "label": action.ActionLabels(mr_listCmd).UniqueList(","), + "milestone": action.ActionMilestones(mr_listCmd), + "not-label": action.ActionLabels(mr_listCmd).UniqueList(","), + "reviewer": action.ActionProjectMembers(mr_listCmd).UniqueList(","), "source-branch": action.ActionBranches(mr_listCmd), "target-branch": action.ActionBranches(mr_listCmd), }) diff --git a/completers/glab_completer/cmd/mr_update.go b/completers/glab_completer/cmd/mr_update.go index be398dbdd8..43eecc179a 100644 --- a/completers/glab_completer/cmd/mr_update.go +++ b/completers/glab_completer/cmd/mr_update.go @@ -33,20 +33,12 @@ func init() { mrCmd.AddCommand(mr_updateCmd) carapace.Gen(mr_updateCmd).FlagCompletion(carapace.ActionMap{ - "assignee": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProjectMembers(mr_updateCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "label": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(mr_updateCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "milestone": action.ActionMilestones(mr_updateCmd), - "reviewer": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProjectMembers(mr_updateCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "assignee": action.ActionProjectMembers(mr_updateCmd).UniqueList(","), + "label": action.ActionLabels(mr_updateCmd).UniqueList(","), + "milestone": action.ActionMilestones(mr_updateCmd), + "reviewer": action.ActionProjectMembers(mr_updateCmd).UniqueList(","), "target-branch": action.ActionBranches(mr_updateCmd), - "unlabel": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLabels(mr_updateCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "unlabel": action.ActionLabels(mr_updateCmd).UniqueList(","), }) carapace.Gen(mr_updateCmd).PositionalCompletion( diff --git a/completers/glab_completer/cmd/release_download.go b/completers/glab_completer/cmd/release_download.go index 48899215b9..d26a6dddba 100644 --- a/completers/glab_completer/cmd/release_download.go +++ b/completers/glab_completer/cmd/release_download.go @@ -20,9 +20,9 @@ func init() { releaseCmd.AddCommand(release_downloadCmd) carapace.Gen(release_downloadCmd).FlagCompletion(carapace.ActionMap{ - "asset-name": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "asset-name": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) > 0 { - return action.ActionReleaseAssets(release_downloadCmd, c.Args[0]).Invoke(c).Filter(c.Parts).ToA().NoSpace() + return action.ActionReleaseAssets(release_downloadCmd, c.Args[0]).UniqueList(",") } return carapace.ActionValues() }), diff --git a/completers/gnome-keyring-daemon_completer/cmd/root.go b/completers/gnome-keyring-daemon_completer/cmd/root.go index 10f409956d..c95aa07fd2 100644 --- a/completers/gnome-keyring-daemon_completer/cmd/root.go +++ b/completers/gnome-keyring-daemon_completer/cmd/root.go @@ -30,9 +30,7 @@ func init() { rootCmd.Flags().BoolP("version", "V", false, "Show the version number and exit.") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "components": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("pkcs11", "secrets", "ssh").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "components": carapace.ActionValues("pkcs11", "secrets", "ssh").UniqueList(","), "control-directory": carapace.ActionDirectories(), }) } diff --git a/completers/go-carpet_completer/cmd/root.go b/completers/go-carpet_completer/cmd/root.go index aab3ab318f..1a45fe179a 100644 --- a/completers/go-carpet_completer/cmd/root.go +++ b/completers/go-carpet_completer/cmd/root.go @@ -33,12 +33,12 @@ func init() { "file": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { return carapace.ActionFiles().NoSpace() }), - "func": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "func": carapace.ActionCallback(func(c carapace.Context) carapace.Action { files := []string{} if f := rootCmd.Flag("file"); f.Changed { files = strings.Split(f.Value.String(), ",") } - return golang.ActionFuncs(files...).Invoke(c).Filter(c.Parts).ToA() // TODO only for given files + return golang.ActionFuncs(files...).UniqueList(",") // TODO only for given files }), }) } diff --git a/completers/go_completer/cmd/build.go b/completers/go_completer/cmd/build.go index c1969b2ca7..a5ac5c6b7e 100644 --- a/completers/go_completer/cmd/build.go +++ b/completers/go_completer/cmd/build.go @@ -63,9 +63,7 @@ func addBuildFlags(cmd *cobra.Command) { "modfile": carapace.ActionFiles(".mod"), "n": carapace.ActionValues("1", "2", "3", "4", "5", "6", "7", "8"), "pkgdir": carapace.ActionDirectories(), - "tags": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return golang.ActionBuildTags().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "tags": golang.ActionBuildTags().UniqueList(","), }) } diff --git a/completers/go_completer/cmd/test.go b/completers/go_completer/cmd/test.go index 5da51569a5..883fb003aa 100644 --- a/completers/go_completer/cmd/test.go +++ b/completers/go_completer/cmd/test.go @@ -39,12 +39,12 @@ func init() { rootCmd.AddCommand(testCmd) carapace.Gen(testCmd).FlagCompletion(carapace.ActionMap{ - "bench": carapace.ActionMultiParts("|", func(c carapace.Context) carapace.Action { - return action.ActionTests(c.Args, action.TestOpts{Benchmark: true}).Invoke(c).Filter(c.Parts).ToA().NoSpace() + "bench": carapace.ActionCallback(func(c carapace.Context) carapace.Action { + return action.ActionTests(c.Args, action.TestOpts{Benchmark: true}).UniqueList("|") }), "covermode": carapace.ActionValues("set", "count,atomic"), - "run": carapace.ActionMultiParts("|", func(c carapace.Context) carapace.Action { - return action.ActionTests(c.Args, action.TestOpts{Example: true, Test: true}).Invoke(c).Filter(c.Parts).ToA().NoSpace() + "run": carapace.ActionCallback(func(c carapace.Context) carapace.Action { + return action.ActionTests(c.Args, action.TestOpts{Example: true, Test: true}).UniqueList("|") }), }) diff --git a/completers/gpasswd_completer/cmd/root.go b/completers/gpasswd_completer/cmd/root.go index 70d9383882..b9dc16521b 100644 --- a/completers/gpasswd_completer/cmd/root.go +++ b/completers/gpasswd_completer/cmd/root.go @@ -29,20 +29,16 @@ func init() { rootCmd.Flags().StringP("root", "Q", "", "directory to chroot into") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "add": os.ActionUsers(), - "administrators": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionUsers().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "add": os.ActionUsers(), + "administrators": os.ActionUsers().UniqueList(","), "delete": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) > 0 { return os.ActionGroupMembers(c.Args[0]) } return os.ActionUsers() }), - "members": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionUsers().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "root": carapace.ActionDirectories(), + "members": os.ActionUsers().UniqueList(","), + "root": carapace.ActionDirectories(), }) carapace.Gen(rootCmd).PositionalCompletion( diff --git a/completers/gum_completer/cmd/choose.go b/completers/gum_completer/cmd/choose.go index d2cc222374..133daee237 100644 --- a/completers/gum_completer/cmd/choose.go +++ b/completers/gum_completer/cmd/choose.go @@ -31,8 +31,8 @@ func init() { carapace.Gen(chooseCmd).FlagCompletion(carapace.ActionMap{ "cursor.foreground": gum.ActionColors(), "item.foreground": gum.ActionColors(), - "selected": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues(c.Args...).Invoke(c).Filter(c.Parts).ToA().NoSpace() + "selected": carapace.ActionCallback(func(c carapace.Context) carapace.Action { + return carapace.ActionValues(c.Args...).UniqueList(",") }), "selected.foreground": gum.ActionColors(), }) diff --git a/completers/htop_completer/cmd/root.go b/completers/htop_completer/cmd/root.go index 5a0bcc4bde..5872ab10e0 100644 --- a/completers/htop_completer/cmd/root.go +++ b/completers/htop_completer/cmd/root.go @@ -46,9 +46,7 @@ func init() { "basic", "drop all capabilities not needed by htop", "strict", "drop all capabilities except those needed for core functionality", ), - "pid": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ps.ActionProcessIds().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "pid": ps.ActionProcessIds().UniqueList(","), "sort-key": ActionSortKeys(), "user": os.ActionUsers(), }) diff --git a/completers/http_completer/cmd/root.go b/completers/http_completer/cmd/root.go index a4ceac0789..ebef6ff283 100644 --- a/completers/http_completer/cmd/root.go +++ b/completers/http_completer/cmd/root.go @@ -127,14 +127,12 @@ func init() { } func ActionPrintOptions() carapace.Action { - return carapace.ActionMultiParts("", func(c carapace.Context) carapace.Action { - return carapace.ActionValuesDescribed( - "H", "request headers", - "B", "request body", - "h", "response headers", - "b", "response body", - ).Invoke(c).Filter(c.Parts).ToA() - }) + return carapace.ActionValuesDescribed( + "H", "request headers", + "B", "request body", + "h", "response headers", + "b", "response body", + ).UniqueList("") } func ActionStyles() carapace.Action { diff --git a/completers/hugo_completer/cmd/action/kind.go b/completers/hugo_completer/cmd/action/kind.go index ac3fdd3b2e..32acf3df12 100644 --- a/completers/hugo_completer/cmd/action/kind.go +++ b/completers/hugo_completer/cmd/action/kind.go @@ -3,7 +3,5 @@ package action import "github.com/rsteube/carapace" func ActionKinds() carapace.Action { - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("page", "home", "section", "taxonomy", "term").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }) + return carapace.ActionValues("page", "home", "section", "taxonomy", "term").UniqueList(",") } diff --git a/completers/javac_completer/cmd/root.go b/completers/javac_completer/cmd/root.go index 95d2c3378e..ba10db1d40 100644 --- a/completers/javac_completer/cmd/root.go +++ b/completers/javac_completer/cmd/root.go @@ -73,27 +73,19 @@ func init() { rootCmd.Flag("proc").NoOptDefVal = " " carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "bootclasspath": carapace.ActionMultiParts(":", func(c carapace.Context) carapace.Action { - return carapace.ActionFiles(".jar", ".zip").NoSpace() - }), - "classpath": carapace.ActionMultiParts(":", func(c carapace.Context) carapace.Action { - return carapace.ActionFiles(".jar", ".zip").NoSpace() - }), - "cp": carapace.ActionMultiParts(":", func(c carapace.Context) carapace.Action { - return carapace.ActionFiles(".jar", ".zip").NoSpace() - }), - "d": carapace.ActionDirectories(), + "bootclasspath": carapace.ActionFiles(".jar", ".zip").UniqueList(":"), + "classpath": carapace.ActionFiles(".jar", ".zip").UniqueList(":"), + "cp": carapace.ActionFiles(".jar", ".zip").UniqueList(":"), + "d": carapace.ActionDirectories(), // TODO encoding "endorseddirs": carapace.ActionDirectories(), "extdirs": carapace.ActionDirectories(), - "g": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValuesDescribed( - "none", "Does not generate any debugging information", - "source", "Source file debugging information", - "lines", "Line number debugging information", - "vars", "Local variable debugging information", - ).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "g": carapace.ActionValuesDescribed( + "none", "Does not generate any debugging information", + "source", "Source file debugging information", + "lines", "Line number debugging information", + "vars", "Local variable debugging information", + ).UniqueList(","), "h": carapace.ActionDirectories(), "implicit": carapace.ActionValues("none", "class"), "proc": carapace.ActionValues("none", "only"), diff --git a/completers/journalctl_completer/cmd/root.go b/completers/journalctl_completer/cmd/root.go index 63fd13e298..a7a008ed89 100644 --- a/completers/journalctl_completer/cmd/root.go +++ b/completers/journalctl_completer/cmd/root.go @@ -92,16 +92,12 @@ func init() { "case-sensitive": carapace.ActionValues("true", "false").StyleF(style.ForKeyword), "cursor-file": carapace.ActionFiles(), "directory": carapace.ActionDirectories(), - "facility": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionFacilities().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "field": action.ActionFields(), - "file": carapace.ActionFiles(), - "image": carapace.ActionFiles(), - "output": journalctl.ActionOutputs(), - "output-fields": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionFields().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "facility": action.ActionFacilities().UniqueList(","), + "field": action.ActionFields(), + "file": carapace.ActionFiles(), + "image": carapace.ActionFiles(), + "output": journalctl.ActionOutputs(), + "output-fields": action.ActionFields().UniqueList(","), "priority": carapace.ActionMultiParts("..", func(c carapace.Context) carapace.Action { if len(c.Parts) < 2 { return action.ActionPriorities().NoSpace() diff --git a/completers/ktlint_completer/cmd/root.go b/completers/ktlint_completer/cmd/root.go index 849a8ffb97..84417dc0c3 100644 --- a/completers/ktlint_completer/cmd/root.go +++ b/completers/ktlint_completer/cmd/root.go @@ -60,12 +60,10 @@ func init() { "LIGHT_CYAN", style.BrightCyan, "WHITE", style.White, ), - "disabled_rules": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionRules().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "editorconfig": carapace.ActionFiles(".editorconfig"), - "reporter": carapace.ActionValues("plain", "plain?group_by_file", "json", "checkstyle", "html"), - "ruleset": carapace.ActionFiles(".jar"), + "disabled_rules": ActionRules().UniqueList(","), + "editorconfig": carapace.ActionFiles(".editorconfig"), + "reporter": carapace.ActionValues("plain", "plain?group_by_file", "json", "checkstyle", "html"), + "ruleset": carapace.ActionFiles(".jar"), }) } diff --git a/completers/kubeadm_completer/cmd/config_print_initDefaults.go b/completers/kubeadm_completer/cmd/config_print_initDefaults.go index 89079ce5b9..4d1416e450 100644 --- a/completers/kubeadm_completer/cmd/config_print_initDefaults.go +++ b/completers/kubeadm_completer/cmd/config_print_initDefaults.go @@ -17,8 +17,6 @@ func init() { config_printCmd.AddCommand(config_print_initDefaultsCmd) carapace.Gen(config_print_initDefaultsCmd).FlagCompletion(carapace.ActionMap{ - "component-configs": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("KubeProxyConfiguration", "KubeletConfiguration").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "component-configs": carapace.ActionValues("KubeProxyConfiguration", "KubeletConfiguration").UniqueList(","), }) } diff --git a/completers/kubeadm_completer/cmd/config_print_joinDefaults.go b/completers/kubeadm_completer/cmd/config_print_joinDefaults.go index 550972c99c..460c386609 100644 --- a/completers/kubeadm_completer/cmd/config_print_joinDefaults.go +++ b/completers/kubeadm_completer/cmd/config_print_joinDefaults.go @@ -17,8 +17,6 @@ func init() { config_printCmd.AddCommand(config_print_joinDefaultsCmd) carapace.Gen(config_print_joinDefaultsCmd).FlagCompletion(carapace.ActionMap{ - "component-configs": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("KubeProxyConfiguration", "KubeletConfiguration").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "component-configs": carapace.ActionValues("KubeProxyConfiguration", "KubeletConfiguration").UniqueList(","), }) } diff --git a/completers/kubeadm_completer/cmd/init.go b/completers/kubeadm_completer/cmd/init.go index 598d435dc9..ff9d559df0 100644 --- a/completers/kubeadm_completer/cmd/init.go +++ b/completers/kubeadm_completer/cmd/init.go @@ -41,14 +41,12 @@ func init() { rootCmd.AddCommand(initCmd) carapace.Gen(initCmd).FlagCompletion(carapace.ActionMap{ - "cert-dir": carapace.ActionDirectories(), - "certificate-key": carapace.ActionFiles(), - "config": carapace.ActionFiles(), - "cri-socket": carapace.ActionFiles(), - "ignore-preflight-errors": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionChecks().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "patches": carapace.ActionDirectories(), + "cert-dir": carapace.ActionDirectories(), + "certificate-key": carapace.ActionFiles(), + "config": carapace.ActionFiles(), + "cri-socket": carapace.ActionFiles(), + "ignore-preflight-errors": action.ActionChecks().UniqueList(","), + "patches": carapace.ActionDirectories(), "skip-phases": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { return action.ActionPhases().Invoke(c).Filter(c.Parts).ToMultiPartsA("/").NoSpace() }), diff --git a/completers/kubeadm_completer/cmd/init_phase_preflight.go b/completers/kubeadm_completer/cmd/init_phase_preflight.go index 7443ab98eb..4c22470433 100644 --- a/completers/kubeadm_completer/cmd/init_phase_preflight.go +++ b/completers/kubeadm_completer/cmd/init_phase_preflight.go @@ -19,9 +19,7 @@ func init() { init_phaseCmd.AddCommand(init_phase_preflightCmd) carapace.Gen(init_phase_preflightCmd).FlagCompletion(carapace.ActionMap{ - "config": carapace.ActionFiles(), - "ignore-preflight-errors": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionChecks().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "config": carapace.ActionFiles(), + "ignore-preflight-errors": action.ActionChecks().UniqueList(","), }) } diff --git a/completers/kubeadm_completer/cmd/join.go b/completers/kubeadm_completer/cmd/join.go index c6d5d98440..24925969a9 100644 --- a/completers/kubeadm_completer/cmd/join.go +++ b/completers/kubeadm_completer/cmd/join.go @@ -34,13 +34,11 @@ func init() { rootCmd.AddCommand(joinCmd) carapace.Gen(joinCmd).FlagCompletion(carapace.ActionMap{ - "config": carapace.ActionFiles(), - "cri-socket": carapace.ActionFiles(), - "discovery-file": carapace.ActionFiles(), - "ignore-preflight-errors": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionChecks().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "patches": carapace.ActionDirectories(), - "skip-phases": action.ActionPhases(), + "config": carapace.ActionFiles(), + "cri-socket": carapace.ActionFiles(), + "discovery-file": carapace.ActionFiles(), + "ignore-preflight-errors": action.ActionChecks().UniqueList(","), + "patches": carapace.ActionDirectories(), + "skip-phases": action.ActionPhases(), }) } diff --git a/completers/kubeadm_completer/cmd/join_phase_preflight.go b/completers/kubeadm_completer/cmd/join_phase_preflight.go index 55c1683988..8b1e0b9ad7 100644 --- a/completers/kubeadm_completer/cmd/join_phase_preflight.go +++ b/completers/kubeadm_completer/cmd/join_phase_preflight.go @@ -31,12 +31,8 @@ func init() { join_phaseCmd.AddCommand(join_phase_preflightCmd) carapace.Gen(join_phase_preflightCmd).FlagCompletion(carapace.ActionMap{ - "config": carapace.ActionFiles(), - "discovery-file": carapace.ActionFiles(), - "ignore-preflight-errors": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionChecks().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }) - }), + "config": carapace.ActionFiles(), + "discovery-file": carapace.ActionFiles(), + "ignore-preflight-errors": action.ActionChecks().UniqueList(","), }) } diff --git a/completers/kubeadm_completer/cmd/reset.go b/completers/kubeadm_completer/cmd/reset.go index 99493c4c9e..bf3bc75f71 100644 --- a/completers/kubeadm_completer/cmd/reset.go +++ b/completers/kubeadm_completer/cmd/reset.go @@ -23,16 +23,10 @@ func init() { rootCmd.AddCommand(resetCmd) carapace.Gen(resetCmd).FlagCompletion(carapace.ActionMap{ - "cert-dir": carapace.ActionDirectories(), - "cri-socket": carapace.ActionFiles(), - "ignore-preflight-errors": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionChecks().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }) - }), - "kubeconfig": carapace.ActionFiles(), - "skip-phases": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionPhases().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "cert-dir": carapace.ActionDirectories(), + "cri-socket": carapace.ActionFiles(), + "ignore-preflight-errors": action.ActionChecks().UniqueList(","), + "kubeconfig": carapace.ActionFiles(), + "skip-phases": action.ActionPhases().UniqueList(","), }) } diff --git a/completers/kubeadm_completer/cmd/reset_phase_preflight.go b/completers/kubeadm_completer/cmd/reset_phase_preflight.go index bb8767d699..7f582232ac 100644 --- a/completers/kubeadm_completer/cmd/reset_phase_preflight.go +++ b/completers/kubeadm_completer/cmd/reset_phase_preflight.go @@ -19,10 +19,6 @@ func init() { reset_phaseCmd.AddCommand(reset_phase_preflightCmd) carapace.Gen(reset_phase_preflightCmd).FlagCompletion(carapace.ActionMap{ - "ignore-preflight-errors": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionChecks().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }) - }), + "ignore-preflight-errors": action.ActionChecks().UniqueList(","), }) } diff --git a/completers/kubeadm_completer/cmd/token_create.go b/completers/kubeadm_completer/cmd/token_create.go index e07e4c588d..640b95f491 100644 --- a/completers/kubeadm_completer/cmd/token_create.go +++ b/completers/kubeadm_completer/cmd/token_create.go @@ -24,8 +24,6 @@ func init() { carapace.Gen(token_createCmd).FlagCompletion(carapace.ActionMap{ "config": carapace.ActionFiles(), - "usages": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("signing", "authentication").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "usages": carapace.ActionValues("signing", "authentication").UniqueList(","), }) } diff --git a/completers/kubeadm_completer/cmd/upgrade_apply.go b/completers/kubeadm_completer/cmd/upgrade_apply.go index 8e717a4617..b10a9f3cda 100644 --- a/completers/kubeadm_completer/cmd/upgrade_apply.go +++ b/completers/kubeadm_completer/cmd/upgrade_apply.go @@ -30,11 +30,9 @@ func init() { upgradeCmd.AddCommand(upgrade_applyCmd) carapace.Gen(upgrade_applyCmd).FlagCompletion(carapace.ActionMap{ - "config": carapace.ActionFiles(), - "ignore-preflight-errors": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionChecks().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "kubeconfig": carapace.ActionFiles(), - "patches": carapace.ActionDirectories(), + "config": carapace.ActionFiles(), + "ignore-preflight-errors": action.ActionChecks().UniqueList(","), + "kubeconfig": carapace.ActionFiles(), + "patches": carapace.ActionDirectories(), }) } diff --git a/completers/kubeadm_completer/cmd/upgrade_node.go b/completers/kubeadm_completer/cmd/upgrade_node.go index 553b0cb871..f06eb2aa2a 100644 --- a/completers/kubeadm_completer/cmd/upgrade_node.go +++ b/completers/kubeadm_completer/cmd/upgrade_node.go @@ -24,11 +24,9 @@ func init() { upgradeCmd.AddCommand(upgrade_nodeCmd) carapace.Gen(upgrade_nodeCmd).FlagCompletion(carapace.ActionMap{ - "ignore-preflight-errors": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionChecks().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "kubeconfig": carapace.ActionFiles(), - "patches": carapace.ActionDirectories(), + "ignore-preflight-errors": action.ActionChecks().UniqueList(","), + "kubeconfig": carapace.ActionFiles(), + "patches": carapace.ActionDirectories(), "skip-phases": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { return action.ActionPhases().Invoke(c).Filter(c.Parts).ToMultiPartsA("/").NoSpace() }), diff --git a/completers/kubeadm_completer/cmd/upgrade_node_phase_preflight.go b/completers/kubeadm_completer/cmd/upgrade_node_phase_preflight.go index 1565940f22..85f6918309 100644 --- a/completers/kubeadm_completer/cmd/upgrade_node_phase_preflight.go +++ b/completers/kubeadm_completer/cmd/upgrade_node_phase_preflight.go @@ -18,8 +18,6 @@ func init() { upgrade_node_phaseCmd.AddCommand(upgrade_node_phase_preflightCmd) carapace.Gen(upgrade_node_phase_preflightCmd).FlagCompletion(carapace.ActionMap{ - "ignore-preflight-errors": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionChecks().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "ignore-preflight-errors": action.ActionChecks().UniqueList(","), }) } diff --git a/completers/kubeadm_completer/cmd/upgrade_plan.go b/completers/kubeadm_completer/cmd/upgrade_plan.go index b3bed4f8ac..bb80256f3e 100644 --- a/completers/kubeadm_completer/cmd/upgrade_plan.go +++ b/completers/kubeadm_completer/cmd/upgrade_plan.go @@ -24,10 +24,8 @@ func init() { upgradeCmd.AddCommand(upgrade_planCmd) carapace.Gen(upgrade_planCmd).FlagCompletion(carapace.ActionMap{ - "config": carapace.ActionFiles(), - "ignore-preflight-errors": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionChecks().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "kubeconfig": carapace.ActionFiles(), + "config": carapace.ActionFiles(), + "ignore-preflight-errors": action.ActionChecks().UniqueList(","), + "kubeconfig": carapace.ActionFiles(), }) } diff --git a/completers/kubectl_completer/cmd/delete.go b/completers/kubectl_completer/cmd/delete.go index a9f3663a8d..01c3dc756e 100644 --- a/completers/kubectl_completer/cmd/delete.go +++ b/completers/kubectl_completer/cmd/delete.go @@ -42,9 +42,7 @@ func init() { }) carapace.Gen(deleteCmd).PositionalCompletion( - carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionApiResources().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + action.ActionApiResources().UniqueList(","), carapace.ActionCallback(func(c carapace.Context) carapace.Action { return action.ActionResources("", c.Args[0]) }), diff --git a/completers/kubectl_completer/cmd/get.go b/completers/kubectl_completer/cmd/get.go index 74412adcc9..f96cc09bd0 100644 --- a/completers/kubectl_completer/cmd/get.go +++ b/completers/kubectl_completer/cmd/get.go @@ -47,9 +47,7 @@ func init() { }) carapace.Gen(getCmd).PositionalCompletion( - carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionApiResources().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + action.ActionApiResources().UniqueList(","), ) carapace.Gen(getCmd).PositionalAnyCompletion( diff --git a/completers/kubectl_completer/cmd/set_image.go b/completers/kubectl_completer/cmd/set_image.go index 363433bc29..0b061cd084 100644 --- a/completers/kubectl_completer/cmd/set_image.go +++ b/completers/kubectl_completer/cmd/set_image.go @@ -38,9 +38,7 @@ func init() { }) carapace.Gen(set_imageCmd).PositionalCompletion( - carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("pod", "service", "replicationcontroller", "deployment", "replicaset").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + carapace.ActionValues("pod", "service", "replicationcontroller", "deployment", "replicaset").UniqueList(","), carapace.ActionCallback(func(c carapace.Context) carapace.Action { return action.ActionResources("", c.Args[0]) }), diff --git a/completers/lsblk_completer/cmd/root.go b/completers/lsblk_completer/cmd/root.go index 7156ac9924..10d107f9e3 100644 --- a/completers/lsblk_completer/cmd/root.go +++ b/completers/lsblk_completer/cmd/root.go @@ -51,12 +51,8 @@ func init() { rootCmd.Flag("tree").NoOptDefVal = " " carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "dedup": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionColumns().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "output": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionColumns().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "dedup": ActionColumns().UniqueList(","), + "output": ActionColumns().UniqueList(","), "sort": ActionColumns(), "sysroot": carapace.ActionDirectories(), "tree": ActionColumns(), diff --git a/completers/lscpu_completer/cmd/root.go b/completers/lscpu_completer/cmd/root.go index 90435a7226..df6c7502f0 100644 --- a/completers/lscpu_completer/cmd/root.go +++ b/completers/lscpu_completer/cmd/root.go @@ -38,16 +38,10 @@ func init() { rootCmd.Flag("parse").NoOptDefVal = " " carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "caches": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionCacheColumns().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "extended": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionFormatColumns().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "parse": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionFormatColumns().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "sysroot": carapace.ActionDirectories(), + "caches": ActionCacheColumns().UniqueList(","), + "extended": ActionFormatColumns().UniqueList(","), + "parse": ActionFormatColumns().UniqueList(","), + "sysroot": carapace.ActionDirectories(), }) } diff --git a/completers/lslocks_completer/cmd/root.go b/completers/lslocks_completer/cmd/root.go index 3637164002..2fc81c1b0c 100644 --- a/completers/lslocks_completer/cmd/root.go +++ b/completers/lslocks_completer/cmd/root.go @@ -33,9 +33,7 @@ func init() { rootCmd.Flags().BoolP("version", "V", false, "display version") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "output": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionColumns().Invoke(c).Filter(c.Args).ToA().NoSpace() - }), - "pid": ps.ActionProcessIds(), + "output": action.ActionColumns().UniqueList(","), + "pid": ps.ActionProcessIds(), }) } diff --git a/completers/lslogins_completer/cmd/root.go b/completers/lslogins_completer/cmd/root.go index be7d010c31..4cdfd37446 100644 --- a/completers/lslogins_completer/cmd/root.go +++ b/completers/lslogins_completer/cmd/root.go @@ -47,17 +47,11 @@ func init() { rootCmd.Flags().String("wtmp-file", "", "set an alternate path for wtmp") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "btmp-file": carapace.ActionFiles(), - "groups": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionGroups().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "lastlog": carapace.ActionFiles(), - "logins": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionUsers().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "output": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionColumns().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "btmp-file": carapace.ActionFiles(), + "groups": os.ActionGroups().UniqueList(","), + "lastlog": carapace.ActionFiles(), + "logins": os.ActionUsers().UniqueList(","), + "output": action.ActionColumns().UniqueList(","), "time-format": carapace.ActionValues("short", "full", "iso"), "wtmp-file": carapace.ActionFiles(), }) diff --git a/completers/lsmem_completer/cmd/root.go b/completers/lsmem_completer/cmd/root.go index 6bf4d9888d..8393db8608 100644 --- a/completers/lsmem_completer/cmd/root.go +++ b/completers/lsmem_completer/cmd/root.go @@ -36,12 +36,8 @@ func init() { rootCmd.Flag("summary").NoOptDefVal = " " carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "output": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionColumns().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "split": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionColumns().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "output": ActionColumns().UniqueList(","), + "split": ActionColumns().UniqueList(","), "summary": carapace.ActionValues("never", "always", "only").StyleF(style.ForKeyword), "sysroot": carapace.ActionDirectories(), }) diff --git a/completers/lsns_completer/cmd/root.go b/completers/lsns_completer/cmd/root.go index ed87170ac3..d537ebdc20 100644 --- a/completers/lsns_completer/cmd/root.go +++ b/completers/lsns_completer/cmd/root.go @@ -34,10 +34,8 @@ func init() { rootCmd.Flags().BoolP("version", "V", false, "display version") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "output": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionColumns().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "task": ps.ActionProcessIds(), - "type": carapace.ActionValues("mnt", "net", "ipc", "user", "pid", "uts", "cgroup", "time"), + "output": action.ActionColumns().UniqueList(","), + "task": ps.ActionProcessIds(), + "type": carapace.ActionValues("mnt", "net", "ipc", "user", "pid", "uts", "cgroup", "time"), }) } diff --git a/completers/minikube_completer/cmd/addons_enable.go b/completers/minikube_completer/cmd/addons_enable.go index 8fa9a6bee3..cdc691fef9 100644 --- a/completers/minikube_completer/cmd/addons_enable.go +++ b/completers/minikube_completer/cmd/addons_enable.go @@ -21,9 +21,7 @@ func init() { addonsCmd.AddCommand(addons_enableCmd) carapace.Gen(addons_enableCmd).FlagCompletion(carapace.ActionMap{ - "images": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return docker.ActionRepositoryTags().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "images": docker.ActionRepositoryTags().UniqueList(","), }) carapace.Gen(addons_enableCmd).PositionalCompletion( diff --git a/completers/minikube_completer/cmd/pause.go b/completers/minikube_completer/cmd/pause.go index b9a53b64ec..971e461b11 100644 --- a/completers/minikube_completer/cmd/pause.go +++ b/completers/minikube_completer/cmd/pause.go @@ -19,9 +19,7 @@ func init() { rootCmd.AddCommand(pauseCmd) carapace.Gen(pauseCmd).FlagCompletion(carapace.ActionMap{ - "namespaces": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionNamespaces().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "output": carapace.ActionValues("text", "json"), + "namespaces": action.ActionNamespaces().UniqueList(","), + "output": carapace.ActionValues("text", "json"), }) } diff --git a/completers/minikube_completer/cmd/start.go b/completers/minikube_completer/cmd/start.go index 16f0ff2972..b99126bb88 100644 --- a/completers/minikube_completer/cmd/start.go +++ b/completers/minikube_completer/cmd/start.go @@ -96,9 +96,7 @@ func init() { rootCmd.AddCommand(startCmd) carapace.Gen(startCmd).FlagCompletion(carapace.ActionMap{ - "addons": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionAddons().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "addons": action.ActionAddons().UniqueList(","), "base-image": docker.ActionRepositoryTags(), "cni": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if util.HasPathPrefix(c.CallbackValue) { @@ -131,8 +129,15 @@ func init() { "output": carapace.ActionValues("text", "json"), "ssh-key": carapace.ActionFiles(), "ssh-user": os.ActionUsers(), - "wait": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("apiserver", "system_pods", "default_sa", "apps_running", "node_ready", "kubelet", "all", "none").Invoke(c).Filter(c.Parts).ToA() - }), + "wait": carapace.ActionValues( + "apiserver", + "system_pods", + "default_sa", + "apps_running", + "node_ready", + "kubelet", + "all", + "none", + ).UniqueList(","), }) } diff --git a/completers/minikube_completer/cmd/unpause.go b/completers/minikube_completer/cmd/unpause.go index 283bd49663..19827d1bbc 100644 --- a/completers/minikube_completer/cmd/unpause.go +++ b/completers/minikube_completer/cmd/unpause.go @@ -19,9 +19,7 @@ func init() { rootCmd.AddCommand(unpauseCmd) carapace.Gen(unpauseCmd).FlagCompletion(carapace.ActionMap{ - "namespaces": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionNamespaces().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "output": carapace.ActionValues("text", "json"), + "namespaces": action.ActionNamespaces().UniqueList(","), + "output": carapace.ActionValues("text", "json"), }) } diff --git a/completers/mount_completer/cmd/root.go b/completers/mount_completer/cmd/root.go index af9187fc0d..5516002a59 100644 --- a/completers/mount_completer/cmd/root.go +++ b/completers/mount_completer/cmd/root.go @@ -69,17 +69,13 @@ func init() { } return action.ActionOptions().Invoke(c).Filter(keys).ToA().NoSpace() }), - "options-mode": carapace.ActionValues("ignore", "append", "prepend", "replace"), - "options-source": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("fstab", "mtab", "disable").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "source": action.ActionSources(), - "target": carapace.ActionDirectories(), - "target-prefix": carapace.ActionDirectories(), - "types": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return fs.ActionFilesystemTypes().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "uuid": fs.ActionUuids(), + "options-mode": carapace.ActionValues("ignore", "append", "prepend", "replace"), + "options-source": carapace.ActionValues("fstab", "mtab", "disable").UniqueList(","), + "source": action.ActionSources(), + "target": carapace.ActionDirectories(), + "target-prefix": carapace.ActionDirectories(), + "types": fs.ActionFilesystemTypes().UniqueList(","), + "uuid": fs.ActionUuids(), }) carapace.Gen(rootCmd).PositionalCompletion( diff --git a/completers/mvn_completer/cmd/root.go b/completers/mvn_completer/cmd/root.go index d4c863710f..5f96d9e7f5 100644 --- a/completers/mvn_completer/cmd/root.go +++ b/completers/mvn_completer/cmd/root.go @@ -59,8 +59,8 @@ func init() { rootCmd.Flags().BoolP("version", "v", false, "Display version information") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "activate-profiles": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProfiles(rootCmd.Flag("file").Value.String()).Invoke(c).Filter(c.Parts).ToA().NoSpace() + "activate-profiles": carapace.ActionCallback(func(c carapace.Context) carapace.Action { + return action.ActionProfiles(rootCmd.Flag("file").Value.String()).UniqueList(",") }), "file": carapace.ActionFiles(".xml"), "global-settings": carapace.ActionFiles(".xml"), diff --git a/completers/newman_completer/cmd/run.go b/completers/newman_completer/cmd/run.go index 9b341a29d2..f04a56440f 100644 --- a/completers/newman_completer/cmd/run.go +++ b/completers/newman_completer/cmd/run.go @@ -51,15 +51,13 @@ func init() { rootCmd.AddCommand(runCmd) carapace.Gen(runCmd).FlagCompletion(carapace.ActionMap{ - "cookie-jar": carapace.ActionFiles(), - "environment": carapace.ActionFiles(), - "export-cookie-jar": carapace.ActionFiles(), - "export-environment": carapace.ActionFiles(), - "globals": carapace.ActionFiles(), - "iteration-data": carapace.ActionFiles(), - "reporters": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("cli", "json", "junit", "progress", "emojitrain").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "cookie-jar": carapace.ActionFiles(), + "environment": carapace.ActionFiles(), + "export-cookie-jar": carapace.ActionFiles(), + "export-environment": carapace.ActionFiles(), + "globals": carapace.ActionFiles(), + "iteration-data": carapace.ActionFiles(), + "reporters": carapace.ActionValues("cli", "json", "junit", "progress", "emojitrain").UniqueList(","), "ssl-client-cert": carapace.ActionFiles(), "ssl-client-cert-list": carapace.ActionFiles(), "ssl-client-key": carapace.ActionFiles(), diff --git a/completers/ng_completer/cmd/build.go b/completers/ng_completer/cmd/build.go index 44749ec2bc..7fac5eec36 100644 --- a/completers/ng_completer/cmd/build.go +++ b/completers/ng_completer/cmd/build.go @@ -52,11 +52,11 @@ func init() { // TODO commonjs packages, named configurations carapace.Gen(buildCmd).FlagCompletion(carapace.ActionMap{ - "configuration": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "configuration": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) < 1 { return carapace.ActionValues() } - return action.ActionBuilderConfigurations(c.Args[0], "build").Invoke(c).Filter(c.Parts).ToA().NoSpace() + return action.ActionBuilderConfigurations(c.Args[0], "build").UniqueList(",") }), "cross-origin": carapace.ActionValues("none", "anonymous", "use-credentials"), "i18n-missing-translation": carapace.ActionValues("warning", "error", "ignore"), diff --git a/completers/ng_completer/cmd/deploy.go b/completers/ng_completer/cmd/deploy.go index 19b3707fdb..224502b06c 100644 --- a/completers/ng_completer/cmd/deploy.go +++ b/completers/ng_completer/cmd/deploy.go @@ -19,11 +19,11 @@ func init() { rootCmd.AddCommand(deployCmd) carapace.Gen(deployCmd).FlagCompletion(carapace.ActionMap{ - "configuration": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "configuration": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) < 1 { return carapace.ActionValues() } - return action.ActionBuilderConfigurations(c.Args[0], "").Invoke(c).Filter(c.Parts).ToA().NoSpace() + return action.ActionBuilderConfigurations(c.Args[0], "").UniqueList(",") }), }) diff --git a/completers/ng_completer/cmd/e2e.go b/completers/ng_completer/cmd/e2e.go index 48910790e6..1bb384b512 100644 --- a/completers/ng_completer/cmd/e2e.go +++ b/completers/ng_completer/cmd/e2e.go @@ -19,11 +19,11 @@ func init() { rootCmd.AddCommand(e2eCmd) carapace.Gen(e2eCmd).FlagCompletion(carapace.ActionMap{ - "configuration": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "configuration": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) < 1 { return carapace.ActionValues() } - return action.ActionBuilderConfigurations(c.Args[0], "").Invoke(c).Filter(c.Parts).ToA().NoSpace() + return action.ActionBuilderConfigurations(c.Args[0], "").UniqueList(",") }), }) diff --git a/completers/ng_completer/cmd/extractI18n.go b/completers/ng_completer/cmd/extractI18n.go index ad503d031e..033f6b5423 100644 --- a/completers/ng_completer/cmd/extractI18n.go +++ b/completers/ng_completer/cmd/extractI18n.go @@ -24,11 +24,11 @@ func init() { rootCmd.AddCommand(extractI18nCmd) carapace.Gen(extractI18nCmd).FlagCompletion(carapace.ActionMap{ - "configuration": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "configuration": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) < 1 { return carapace.ActionValues() } - return action.ActionBuilderConfigurations(c.Args[0], "").Invoke(c).Filter(c.Parts).ToA().NoSpace() + return action.ActionBuilderConfigurations(c.Args[0], "").UniqueList(",") }), "format": carapace.ActionValues("xmb", "xlf", "xlif", "xliff", "xlf2", "xliff2", "json", "arb", "legacy-migrate"), "out-file": carapace.ActionFiles(), diff --git a/completers/ng_completer/cmd/lint.go b/completers/ng_completer/cmd/lint.go index b035649b20..097e1ceac0 100644 --- a/completers/ng_completer/cmd/lint.go +++ b/completers/ng_completer/cmd/lint.go @@ -20,11 +20,11 @@ func init() { rootCmd.AddCommand(lintCmd) carapace.Gen(lintCmd).FlagCompletion(carapace.ActionMap{ - "configuration": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "configuration": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) < 1 { return carapace.ActionValues() } - return action.ActionBuilderConfigurations(c.Args[0], "lint").Invoke(c).Filter(c.Parts).ToA().NoSpace() + return action.ActionBuilderConfigurations(c.Args[0], "lint").UniqueList(",") }), }) diff --git a/completers/ng_completer/cmd/run.go b/completers/ng_completer/cmd/run.go index f974c2ed02..91bb2b23de 100644 --- a/completers/ng_completer/cmd/run.go +++ b/completers/ng_completer/cmd/run.go @@ -22,7 +22,7 @@ func init() { rootCmd.AddCommand(runCmd) carapace.Gen(runCmd).FlagCompletion(carapace.ActionMap{ - "configuration": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "configuration": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) < 1 { return carapace.ActionValues() } @@ -33,7 +33,7 @@ func init() { if len(splitted) > 1 { target = splitted[1] } - return action.ActionBuilderConfigurations(project, target).Invoke(c).Filter(c.Parts).ToA() + return action.ActionBuilderConfigurations(project, target).UniqueList(",") }), }) diff --git a/completers/ng_completer/cmd/serve.go b/completers/ng_completer/cmd/serve.go index 6149d2b793..3dfa3bde58 100644 --- a/completers/ng_completer/cmd/serve.go +++ b/completers/ng_completer/cmd/serve.go @@ -37,11 +37,11 @@ func init() { // TODO browser-target carapace.Gen(serveCmd).FlagCompletion(carapace.ActionMap{ - "configuration": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "configuration": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) < 1 { return carapace.ActionValues() } - return action.ActionBuilderConfigurations(c.Args[0], "serve").Invoke(c).Filter(c.Parts).ToA().NoSpace() + return action.ActionBuilderConfigurations(c.Args[0], "serve").UniqueList(",") }), "proxy-config": carapace.ActionFiles(), "ssl-cert": carapace.ActionFiles(), diff --git a/completers/ng_completer/cmd/test.go b/completers/ng_completer/cmd/test.go index f7e94e4da5..490d960cb8 100644 --- a/completers/ng_completer/cmd/test.go +++ b/completers/ng_completer/cmd/test.go @@ -35,11 +35,11 @@ func init() { rootCmd.AddCommand(testCmd) carapace.Gen(testCmd).FlagCompletion(carapace.ActionMap{ - "configuration": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "configuration": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) < 1 { return carapace.ActionValues() } - return action.ActionBuilderConfigurations(c.Args[0], "test").Invoke(c).Filter(c.Parts).ToA().NoSpace() + return action.ActionBuilderConfigurations(c.Args[0], "test").UniqueList(",") }), "inline-style-language": carapace.ActionValues("css", "less", "sass", "scss"), "karma-config": carapace.ActionFiles(), diff --git a/completers/nmcli_completer/cmd/general_logging.go b/completers/nmcli_completer/cmd/general_logging.go index 6e69276ec7..85488436c5 100644 --- a/completers/nmcli_completer/cmd/general_logging.go +++ b/completers/nmcli_completer/cmd/general_logging.go @@ -25,9 +25,7 @@ func init() { "DEBUG", "verbose logging for debugging purposes", ), carapace.ActionValues("domains"), - carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionDomains().Invoke(c).Filter(c.Parts).Suffix(",").ToA() - }), + ActionDomains().UniqueList(","), ) } diff --git a/completers/nmcli_completer/cmd/root.go b/completers/nmcli_completer/cmd/root.go index 14fee3f7ff..37d86a6b46 100644 --- a/completers/nmcli_completer/cmd/root.go +++ b/completers/nmcli_completer/cmd/root.go @@ -36,18 +36,12 @@ func init() { carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ "colors": carapace.ActionValues("auto", "yes", "no").StyleF(style.ForKeyword), "escape": carapace.ActionValues("yes", "no").StyleF(style.ForKeyword), - "fields": ActionMultiFields(), - "get-values": ActionMultiFields(), + "fields": ActionFields().UniqueList(","), + "get-values": ActionFields().UniqueList(","), "mode": carapace.ActionValues("tabular", "multiline"), }) } -func ActionMultiFields() carapace.Action { - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionFields().Invoke(c).Filter(c.Parts).Suffix(",").ToA() - }) -} - func ActionFields() carapace.Action { return carapace.ActionValues( "ACTIVE", "CONNECTION", "RATE", "TIMESTAMP", diff --git a/completers/node_completer/cmd/root.go b/completers/node_completer/cmd/root.go index f9049e7741..933b7908e0 100644 --- a/completers/node_completer/cmd/root.go +++ b/completers/node_completer/cmd/root.go @@ -119,14 +119,12 @@ func init() { rootCmd.Flags().Bool("zero-fill-buffers", false, "Automatically zero-fills all newly allocated Buffer and SlowBuffer instances.") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "cpu-prof-dir": carapace.ActionDirectories(), - "diagnostic-dir": carapace.ActionDirectories(), - "disable-proto": carapace.ActionValues("delete", "throw"), - "heapsnapshot-signal": ps.ActionKillSignals(), - "icu-data-dir": carapace.ActionDirectories(), - "inspect-publish-uid": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("http", "stderr").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "cpu-prof-dir": carapace.ActionDirectories(), + "diagnostic-dir": carapace.ActionDirectories(), + "disable-proto": carapace.ActionValues("delete", "throw"), + "heapsnapshot-signal": ps.ActionKillSignals(), + "icu-data-dir": carapace.ActionDirectories(), + "inspect-publish-uid": carapace.ActionValues("http", "stderr").UniqueList(","), "openssl-config": carapace.ActionFiles(), "redirect-warnings": carapace.ActionFiles(), "report-dir": carapace.ActionDirectories(), diff --git a/completers/pamac_completer/cmd/install.go b/completers/pamac_completer/cmd/install.go index 2d0ec62e22..df10d8450d 100644 --- a/completers/pamac_completer/cmd/install.go +++ b/completers/pamac_completer/cmd/install.go @@ -28,9 +28,7 @@ func init() { rootCmd.AddCommand(installCmd) carapace.Gen(installCmd).FlagCompletion(carapace.ActionMap{ - "ignore": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionPackageSearch().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "ignore": action.ActionPackageSearch().UniqueList(","), }) carapace.Gen(installCmd).PositionalAnyCompletion( diff --git a/completers/pamac_completer/cmd/update.go b/completers/pamac_completer/cmd/update.go index de9d5e9580..16a1b0b6df 100644 --- a/completers/pamac_completer/cmd/update.go +++ b/completers/pamac_completer/cmd/update.go @@ -32,8 +32,6 @@ func init() { carapace.Gen(updateCmd).FlagCompletion(carapace.ActionMap{ "builddir": carapace.ActionDirectories(), - "ignore": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionInstalledPackages(false).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "ignore": action.ActionInstalledPackages(false).UniqueList(","), }) } diff --git a/completers/pgrep_completer/cmd/root.go b/completers/pgrep_completer/cmd/root.go index 490477bcb7..15d572400b 100644 --- a/completers/pgrep_completer/cmd/root.go +++ b/completers/pgrep_completer/cmd/root.go @@ -48,28 +48,16 @@ func init() { rootCmd.Flags().BoolP("version", "V", false, "output version information and exit") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "euid": os.ActionUsers(), - "group": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionGroups().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "ns": ps.ActionProcessIds(), - "nslist": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("ipc", "mnt", "net", "pid", "user", "uts").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "parent": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ps.ActionProcessIds().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "pidfile": carapace.ActionFiles(), - "runstates": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ps.ActionProcessStates().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "session": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionSessionIds().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "terminal": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionTerminals().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "uid": os.ActionUsers(), + "euid": os.ActionUsers(), + "group": os.ActionGroups().UniqueList(","), + "ns": ps.ActionProcessIds(), + "nslist": carapace.ActionValues("ipc", "mnt", "net", "pid", "user", "uts").UniqueList(","), + "parent": ps.ActionProcessIds().UniqueList(","), + "pidfile": carapace.ActionFiles(), + "runstates": ps.ActionProcessStates().UniqueList(","), + "session": os.ActionSessionIds().UniqueList(","), + "terminal": os.ActionTerminals().UniqueList(","), + "uid": os.ActionUsers(), }) carapace.Gen(rootCmd).PositionalAnyCompletion( diff --git a/completers/pkill_completer/cmd/root.go b/completers/pkill_completer/cmd/root.go index 44bc5c4756..73cb227323 100644 --- a/completers/pkill_completer/cmd/root.go +++ b/completers/pkill_completer/cmd/root.go @@ -44,23 +44,15 @@ func init() { rootCmd.Flags().BoolP("version", "V", false, "output version information and exit") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "euid": os.ActionUsers(), - "group": os.ActionGroups(), - "nslist": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("ipc", "mnt", "net", "pid", "user", "uts").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "pidfile": carapace.ActionFiles(), - "runstates": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ps.ActionProcessStates().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "session": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionSessionIds().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "signal": ps.ActionKillSignals(), - "terminal": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionTerminals().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "uid": os.ActionUsers(), + "euid": os.ActionUsers(), + "group": os.ActionGroups(), + "nslist": carapace.ActionValues("ipc", "mnt", "net", "pid", "user", "uts").UniqueList(","), + "pidfile": carapace.ActionFiles(), + "runstates": ps.ActionProcessStates().UniqueList(","), + "session": os.ActionSessionIds().UniqueList(","), + "signal": ps.ActionKillSignals(), + "terminal": os.ActionTerminals().UniqueList(","), + "uid": os.ActionUsers(), }) carapace.Gen(rootCmd).PositionalAnyCompletion( diff --git a/completers/ps_completer/cmd/root.go b/completers/ps_completer/cmd/root.go index 8b5d728c16..12ed68b6f9 100644 --- a/completers/ps_completer/cmd/root.go +++ b/completers/ps_completer/cmd/root.go @@ -66,38 +66,16 @@ func init() { rootCmd.Flags().BoolS("y", "y", false, "Do not show flags") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "Group": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionGroups().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "User": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionUsers().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "format": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ps.ActionFormatSpecifiers().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "group": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionGroups().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "pid": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ps.ActionProcessIds().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "ppid": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ps.ActionProcessIds().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "quick-pid": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ps.ActionProcessIds().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "sid": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionSessionIds().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "sort": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ps.ActionFormatSpecifiers().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "tty": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionTerminals().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "user": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionUsers().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "Group": os.ActionGroups().UniqueList(","), + "User": os.ActionUsers().UniqueList(","), + "format": ps.ActionFormatSpecifiers().UniqueList(","), + "group": os.ActionGroups().UniqueList(","), + "pid": ps.ActionProcessIds().UniqueList(","), + "ppid": ps.ActionProcessIds().UniqueList(","), + "quick-pid": ps.ActionProcessIds().UniqueList(","), + "sid": os.ActionSessionIds().UniqueList(","), + "sort": ps.ActionFormatSpecifiers().UniqueList(","), + "tty": os.ActionTerminals().UniqueList(","), + "user": os.ActionUsers().UniqueList(","), }) } diff --git a/completers/pwait_completer/cmd/root.go b/completers/pwait_completer/cmd/root.go index 222f5f70f0..e2b1d109ab 100644 --- a/completers/pwait_completer/cmd/root.go +++ b/completers/pwait_completer/cmd/root.go @@ -44,28 +44,16 @@ func init() { rootCmd.Flags().BoolP("version", "V", false, "output version information and exit") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "euid": os.ActionUsers(), - "group": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionGroups().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "ns": ps.ActionProcessIds(), - "nslist": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("ipc", "mnt", "net", "pid", "user", "uts").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "parent": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ps.ActionProcessIds().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "pidfile": carapace.ActionFiles(), - "runstates": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ps.ActionProcessStates().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "session": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionSessionIds().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "terminal": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionTerminals().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "uid": os.ActionUsers(), + "euid": os.ActionUsers(), + "group": os.ActionGroups().UniqueList(","), + "ns": ps.ActionProcessIds(), + "nslist": carapace.ActionValues("ipc", "mnt", "net", "pid", "user", "uts").UniqueList(","), + "parent": ps.ActionProcessIds().UniqueList(","), + "pidfile": carapace.ActionFiles(), + "runstates": ps.ActionProcessStates().UniqueList(","), + "session": os.ActionSessionIds().UniqueList(","), + "terminal": os.ActionTerminals().UniqueList(","), + "uid": os.ActionUsers(), }) carapace.Gen(rootCmd).PositionalAnyCompletion( diff --git a/completers/redis-cli_completer/cmd/root.go b/completers/redis-cli_completer/cmd/root.go index db335b3e98..87e0b3076b 100644 --- a/completers/redis-cli_completer/cmd/root.go +++ b/completers/redis-cli_completer/cmd/root.go @@ -96,8 +96,6 @@ func init() { "rdb": carapace.ActionFiles(), "s": carapace.ActionFiles(), "show-pushes": carapace.ActionValues("yes", "no").StyleF(style.ForKeyword), - "tls-ciphers": carapace.ActionMultiParts(":", func(c carapace.Context) carapace.Action { - return ssh.ActionCiphers().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "tls-ciphers": ssh.ActionCiphers().UniqueList(":"), }) } diff --git a/completers/restic_completer/cmd/backup.go b/completers/restic_completer/cmd/backup.go index 26a24549f8..83017b2345 100644 --- a/completers/restic_completer/cmd/backup.go +++ b/completers/restic_completer/cmd/backup.go @@ -47,10 +47,8 @@ func init() { "files-from-verbatim": carapace.ActionFiles(), "host": action.ActionSnapshotHosts(backupCmd), "parent": action.ActionSnapshotIDs(backupCmd), - "tag": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(backupCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "time": time.ActionDateTime(time.DateTimeOpts{}), + "tag": action.ActionSnapshotTags(backupCmd).UniqueList(","), + "time": time.ActionDateTime(time.DateTimeOpts{}), }) carapace.Gen(backupCmd).PositionalAnyCompletion( diff --git a/completers/restic_completer/cmd/copy.go b/completers/restic_completer/cmd/copy.go index 37c8fa51c5..31812948a9 100644 --- a/completers/restic_completer/cmd/copy.go +++ b/completers/restic_completer/cmd/copy.go @@ -31,9 +31,7 @@ func init() { "path": carapace.ActionFiles(), "repo2": action.ActionRepo(), "repository-file2": carapace.ActionFiles(), - "tag": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(copyCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "tag": action.ActionSnapshotTags(copyCmd).UniqueList(","), }) carapace.Gen(copyCmd).PositionalAnyCompletion( diff --git a/completers/restic_completer/cmd/dump.go b/completers/restic_completer/cmd/dump.go index 0c45240beb..9534d3746c 100644 --- a/completers/restic_completer/cmd/dump.go +++ b/completers/restic_completer/cmd/dump.go @@ -24,9 +24,7 @@ func init() { "archive": carapace.ActionValues("tar", "zip"), "host": action.ActionSnapshotHosts(dumpCmd), "path": carapace.ActionFiles(), - "tag": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(dumpCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "tag": action.ActionSnapshotTags(dumpCmd).UniqueList(","), }) carapace.Gen(dumpCmd).PositionalCompletion( diff --git a/completers/restic_completer/cmd/find.go b/completers/restic_completer/cmd/find.go index b1b9f3a54d..3a7ea1bb83 100644 --- a/completers/restic_completer/cmd/find.go +++ b/completers/restic_completer/cmd/find.go @@ -30,15 +30,11 @@ func init() { rootCmd.AddCommand(findCmd) carapace.Gen(findCmd).FlagCompletion(carapace.ActionMap{ - "host": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotHosts(findCmd).Invoke(c).Filter(c.Args).ToA().NoSpace() - }), + "host": action.ActionSnapshotHosts(findCmd).UniqueList(","), "newest": time.ActionDateTime(time.DateTimeOpts{}), "oldest": time.ActionDateTime(time.DateTimeOpts{}), "path": carapace.ActionFiles(), "snapshot": action.ActionSnapshotIDs(findCmd), - "tag": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(findCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "tag": action.ActionSnapshotTags(findCmd).UniqueList(","), }) } diff --git a/completers/restic_completer/cmd/forget.go b/completers/restic_completer/cmd/forget.go index 35fa055a14..8159e32faf 100644 --- a/completers/restic_completer/cmd/forget.go +++ b/completers/restic_completer/cmd/forget.go @@ -41,13 +41,9 @@ func init() { rootCmd.AddCommand(forgetCmd) carapace.Gen(forgetCmd).FlagCompletion(carapace.ActionMap{ - "group-by": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("host", "paths", "tags").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "path": carapace.ActionFiles(), - "tag": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(forgetCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "group-by": carapace.ActionValues("host", "paths", "tags").UniqueList(","), + "path": carapace.ActionFiles(), + "tag": action.ActionSnapshotTags(forgetCmd).UniqueList(","), }) carapace.Gen(forgetCmd).PositionalAnyCompletion( diff --git a/completers/restic_completer/cmd/ls.go b/completers/restic_completer/cmd/ls.go index c691e839a7..4fdae865e2 100644 --- a/completers/restic_completer/cmd/ls.go +++ b/completers/restic_completer/cmd/ls.go @@ -24,9 +24,7 @@ func init() { carapace.Gen(lsCmd).FlagCompletion(carapace.ActionMap{ "host": action.ActionSnapshotHosts(lsCmd), "path": carapace.ActionFiles(), - "tag": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(lsCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "tag": action.ActionSnapshotTags(lsCmd).UniqueList(","), }) carapace.Gen(lsCmd).PositionalCompletion( diff --git a/completers/restic_completer/cmd/mount.go b/completers/restic_completer/cmd/mount.go index cfe383ab21..ea2b1dfd8a 100644 --- a/completers/restic_completer/cmd/mount.go +++ b/completers/restic_completer/cmd/mount.go @@ -26,8 +26,6 @@ func init() { carapace.Gen(mountCmd).FlagCompletion(carapace.ActionMap{ "host": action.ActionSnapshotHosts(mountCmd), "path": carapace.ActionFiles(), - "tag": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(mountCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "tag": action.ActionSnapshotTags(mountCmd).UniqueList(","), }) } diff --git a/completers/restic_completer/cmd/restore.go b/completers/restic_completer/cmd/restore.go index f0df1dc4ab..bc6f66e475 100644 --- a/completers/restic_completer/cmd/restore.go +++ b/completers/restic_completer/cmd/restore.go @@ -26,11 +26,9 @@ func init() { rootCmd.AddCommand(restoreCmd) carapace.Gen(restoreCmd).FlagCompletion(carapace.ActionMap{ - "host": action.ActionSnapshotHosts(restoreCmd), - "path": carapace.ActionFiles(), - "tag": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(restoreCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "host": action.ActionSnapshotHosts(restoreCmd), + "path": carapace.ActionFiles(), + "tag": action.ActionSnapshotTags(restoreCmd).UniqueList(","), "target": carapace.ActionDirectories(), }) diff --git a/completers/restic_completer/cmd/snapshots.go b/completers/restic_completer/cmd/snapshots.go index e44b461f6d..c611003a4e 100644 --- a/completers/restic_completer/cmd/snapshots.go +++ b/completers/restic_completer/cmd/snapshots.go @@ -24,14 +24,10 @@ func init() { rootCmd.AddCommand(snapshotsCmd) carapace.Gen(snapshotsCmd).FlagCompletion(carapace.ActionMap{ - "group-by": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("host", "paths", "tags").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "host": action.ActionSnapshotHosts(snapshotsCmd), - "path": carapace.ActionFiles(), - "tag": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(snapshotsCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "group-by": carapace.ActionValues("host", "paths", "tags").UniqueList(","), + "host": action.ActionSnapshotHosts(snapshotsCmd), + "path": carapace.ActionFiles(), + "tag": action.ActionSnapshotTags(snapshotsCmd).UniqueList(","), }) carapace.Gen(snapshotsCmd).PositionalAnyCompletion( diff --git a/completers/restic_completer/cmd/stats.go b/completers/restic_completer/cmd/stats.go index c94682f109..490bcd3d30 100644 --- a/completers/restic_completer/cmd/stats.go +++ b/completers/restic_completer/cmd/stats.go @@ -24,9 +24,7 @@ func init() { "host": action.ActionSnapshotHosts(statsCmd), "mode": carapace.ActionValues("restore-size", "files-by-contents", "blobs-per-file", "raw-data"), "path": carapace.ActionFiles(), - "tag": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(statsCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "tag": action.ActionSnapshotTags(statsCmd).UniqueList(","), }) carapace.Gen(statsCmd).PositionalAnyCompletion( diff --git a/completers/restic_completer/cmd/tag.go b/completers/restic_completer/cmd/tag.go index dc3695e84e..15ba746187 100644 --- a/completers/restic_completer/cmd/tag.go +++ b/completers/restic_completer/cmd/tag.go @@ -23,19 +23,11 @@ func init() { rootCmd.AddCommand(tagCmd) carapace.Gen(tagCmd).FlagCompletion(carapace.ActionMap{ - "add": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(tagCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "host": action.ActionSnapshotHosts(tagCmd), - "remove": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(tagCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "set": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(tagCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "tag": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionSnapshotTags(tagCmd).Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "add": action.ActionSnapshotTags(tagCmd).UniqueList(","), + "host": action.ActionSnapshotHosts(tagCmd), + "remove": action.ActionSnapshotTags(tagCmd).UniqueList(","), + "set": action.ActionSnapshotTags(tagCmd).UniqueList(","), + "tag": action.ActionSnapshotTags(tagCmd).UniqueList(","), }) carapace.Gen(tagCmd).PositionalAnyCompletion( diff --git a/completers/rsync_completer/cmd/root.go b/completers/rsync_completer/cmd/root.go index 4d9d8e1bda..c484bdf2ba 100644 --- a/completers/rsync_completer/cmd/root.go +++ b/completers/rsync_completer/cmd/root.go @@ -189,12 +189,12 @@ func init() { }), "compress-choice": carapace.ActionValues("zstd", "lz4", "zlibx", "zlib", "none"), "copy-as": os.ActionUserGroup(), - "debug": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "debug": carapace.ActionCallback(func(c carapace.Context) carapace.Action { r := regexp.MustCompile(`\d`) for index, part := range c.Parts { c.Parts[index] = r.ReplaceAllString(part, "") } - return action.ActionFlags().Invoke(c).Filter(c.Parts).ToA() + return action.ActionFlags().UniqueList(",") }), "early-input": carapace.ActionFiles(), "exclude-from": carapace.ActionFiles(), @@ -210,12 +210,12 @@ func init() { }) }), "include-from": carapace.ActionFiles(), - "info": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "info": carapace.ActionCallback(func(c carapace.Context) carapace.Action { r := regexp.MustCompile(`\d`) for index, part := range c.Parts { c.Parts[index] = r.ReplaceAllString(part, "") } - return action.ActionFlags().Invoke(c).Filter(c.Parts).ToA() + return action.ActionFlags().UniqueList(",") }), "log-file": carapace.ActionFiles(), "log-file-format": action.ActionFormats(), @@ -226,9 +226,7 @@ func init() { "password-file": carapace.ActionFiles(), "port": net.ActionPorts(), "read-batch": carapace.ActionFiles(), - "skip-compress": carapace.ActionMultiParts("/", func(c carapace.Context) carapace.Action { - return fs.ActionFilenameExtensions().Invoke(c).Filter(c.Parts).ToA() - }), + "skip-compress": fs.ActionFilenameExtensions().UniqueList("/"), "stderr": carapace.ActionValuesDescribed( "errors", "causes all the rsync processes to send an error directly to stderr", "all", "causes all rsync messages to get written directly to stderr from all processes", diff --git a/completers/rustc_completer/cmd/root.go b/completers/rustc_completer/cmd/root.go index cc66fd23fe..a551ea0a09 100644 --- a/completers/rustc_completer/cmd/root.go +++ b/completers/rustc_completer/cmd/root.go @@ -54,13 +54,9 @@ func init() { return carapace.ActionValues() } }), - "crate-type": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("bin", "lib", "rlib", "dylib", "cdylib", "staticlib", "proc-macro").Invoke(c).Filter(c.Parts).ToA() - }), - "edition": carapace.ActionValues("2015", "2018", "2021"), - "emit": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("asm", "llvm-bc", "llvm-ir", "obj", "metadata", "link", "dep-info", "mir").Invoke(c).Filter(c.Parts).ToA() - }), + "crate-type": carapace.ActionValues("bin", "lib", "rlib", "dylib", "cdylib", "staticlib", "proc-macro").UniqueList(","), + "edition": carapace.ActionValues("2015", "2018", "2021"), + "emit": carapace.ActionValues("asm", "llvm-bc", "llvm-ir", "obj", "metadata", "link", "dep-info", "mir").UniqueList(","), "l": carapace.ActionMultiParts("=", func(c carapace.Context) carapace.Action { switch len(c.Parts) { case 0: diff --git a/completers/rustup_completer/cmd/toolchain_install.go b/completers/rustup_completer/cmd/toolchain_install.go index 3363d264e3..75ddf22dc6 100644 --- a/completers/rustup_completer/cmd/toolchain_install.go +++ b/completers/rustup_completer/cmd/toolchain_install.go @@ -25,10 +25,8 @@ func init() { toolchainCmd.AddCommand(toolchain_installCmd) carapace.Gen(toolchain_installCmd).FlagCompletion(carapace.ActionMap{ - "component": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionAvailableComponents().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "profile": carapace.ActionValues("minimal", "default", "complete"), + "component": action.ActionAvailableComponents().UniqueList(","), + "profile": carapace.ActionValues("minimal", "default", "complete"), "target": carapace.ActionCallback(func(c carapace.Context) carapace.Action { return action.ActionTargets(false).Invoke(c).ToMultiPartsA("-") }), diff --git a/completers/ssh-keygen_completer/cmd/root.go b/completers/ssh-keygen_completer/cmd/root.go index 81d1565806..e10144554e 100644 --- a/completers/ssh-keygen_completer/cmd/root.go +++ b/completers/ssh-keygen_completer/cmd/root.go @@ -119,12 +119,10 @@ func init() { "PKCS8", "PKCS8 public or private key", "PEM", "PEM public key", ), - "n": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.Batch( - os.ActionUsers(), - net.ActionHosts(), - ).ToA().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "n": carapace.Batch( + os.ActionUsers(), + net.ActionHosts(), + ).ToA().UniqueList(","), "r": net.ActionHosts(), "s": carapace.ActionFiles(), "t": carapace.ActionValues("dsa", "ecdsa", "ecdsa-sk", "ed25519", "ed25519-sk", "rsa"), diff --git a/completers/ssh_completer/cmd/root.go b/completers/ssh_completer/cmd/root.go index 6dd0d4c232..f7d9f4370b 100644 --- a/completers/ssh_completer/cmd/root.go +++ b/completers/ssh_completer/cmd/root.go @@ -92,9 +92,7 @@ func init() { ), "Q": ActionQueryOptions(), "S": carapace.ActionFiles(), - "c": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ssh.ActionCiphers().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "c": ssh.ActionCiphers().UniqueList(","), "i": carapace.Batch( ssh.ActionPrivateKeys(), carapace.ActionFiles(), diff --git a/completers/staticcheck_completer/cmd/root.go b/completers/staticcheck_completer/cmd/root.go index a020bb7513..cf79624f71 100644 --- a/completers/staticcheck_completer/cmd/root.go +++ b/completers/staticcheck_completer/cmd/root.go @@ -36,17 +36,13 @@ func init() { rootCmd.Flags().Bool("version", false, "Print version and exit") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "checks": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionChecks().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "checks": ActionChecks().UniqueList(","), "debug.cpuprofile": carapace.ActionFiles(), "debug.measure-analyzers": carapace.ActionFiles(), "debug.memprofile": carapace.ActionFiles(), "debug.unused-graph": carapace.ActionFiles(), "explain": ActionChecks(), - "fail": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionChecks().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "fail": ActionChecks().UniqueList(","), }) carapace.Gen(rootCmd).PositionalAnyCompletion(carapace.ActionFiles()) diff --git a/completers/sudo_completer/cmd/root.go b/completers/sudo_completer/cmd/root.go index bb632283da..31709e5819 100644 --- a/completers/sudo_completer/cmd/root.go +++ b/completers/sudo_completer/cmd/root.go @@ -48,12 +48,10 @@ func init() { rootCmd.Flag("preserve-env").NoOptDefVal = " " carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "group": os.ActionGroups(), - "other-user": os.ActionUsers(), - "preserve-env": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionEnvironmentVariables().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "user": os.ActionUsers(), + "group": os.ActionGroups(), + "other-user": os.ActionUsers(), + "preserve-env": os.ActionEnvironmentVariables().UniqueList(","), + "user": os.ActionUsers(), }) embed.EmbedCarapaceBin(rootCmd) diff --git a/completers/sudoreplay_completer/cmd/root.go b/completers/sudoreplay_completer/cmd/root.go index b523e9941a..6d32492b0b 100644 --- a/completers/sudoreplay_completer/cmd/root.go +++ b/completers/sudoreplay_completer/cmd/root.go @@ -31,9 +31,7 @@ func init() { carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ "directory": carapace.ActionDirectories(), - "filter": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("stdin", "stdout", "stderr", "ttyin", "ttyout").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "filter": carapace.ActionValues("stdin", "stdout", "stderr", "ttyin", "ttyout").UniqueList(","), }) // TODO positional completion diff --git a/completers/supervisord_completer/cmd/root.go b/completers/supervisord_completer/cmd/root.go index a31bcbe8f3..9e0eeb09bf 100644 --- a/completers/supervisord_completer/cmd/root.go +++ b/completers/supervisord_completer/cmd/root.go @@ -43,16 +43,14 @@ func init() { rootCmd.Flags().BoolP("version", "v", false, "print supervisord version number and exit") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "childlogdir": carapace.ActionDirectories(), - "configuration": carapace.ActionFiles(), - "directory": carapace.ActionDirectories(), - "logfile": carapace.ActionFiles(), - "loglevel": carapace.ActionValues("trace", "debug", "info", "warn", "error", "critical").StyleF(style.ForLogLevel), - "pidfile": carapace.ActionFiles(), - "profile_options": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("cumulative", "calls", "callers").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "umask": fs.ActionFileModesNumeric(), - "user": os.ActionUsers(), + "childlogdir": carapace.ActionDirectories(), + "configuration": carapace.ActionFiles(), + "directory": carapace.ActionDirectories(), + "logfile": carapace.ActionFiles(), + "loglevel": carapace.ActionValues("trace", "debug", "info", "warn", "error", "critical").StyleF(style.ForLogLevel), + "pidfile": carapace.ActionFiles(), + "profile_options": carapace.ActionValues("cumulative", "calls", "callers").UniqueList(","), + "umask": fs.ActionFileModesNumeric(), + "user": os.ActionUsers(), }) } diff --git a/completers/tesseract_completer/cmd/root.go b/completers/tesseract_completer/cmd/root.go index 163ca44d61..5f1de02174 100644 --- a/completers/tesseract_completer/cmd/root.go +++ b/completers/tesseract_completer/cmd/root.go @@ -37,9 +37,7 @@ func init() { rootCmd.Flags().BoolP("version", "v", false, "Returns the current version of the tesseract(1) executable.") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "l": carapace.ActionMultiParts("+", func(c carapace.Context) carapace.Action { - return ActionLanguages().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "l": ActionLanguages().UniqueList("+"), "oem": ActionOcrEngineModes(), "psm": ActionAnalysisSubsets(), "tessdata-dir": carapace.ActionDirectories(), diff --git a/completers/tinygo_completer/cmd/root.go b/completers/tinygo_completer/cmd/root.go index 7066051a3b..2b2f871a41 100644 --- a/completers/tinygo_completer/cmd/root.go +++ b/completers/tinygo_completer/cmd/root.go @@ -47,13 +47,11 @@ func init() { rootCmd.Flags().BoolS("x", "x", false, "Print commands") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "gc": carapace.ActionValues("none", "leaking", "extalloc", "conservative"), - "o": carapace.ActionFiles(), - "opt": carapace.ActionValues("0", "1", "2", "s", "z"), - "panic": carapace.ActionValues("print", "trap"), - "port": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return net.ActionPorts().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "gc": carapace.ActionValues("none", "leaking", "extalloc", "conservative"), + "o": carapace.ActionFiles(), + "opt": carapace.ActionValues("0", "1", "2", "s", "z"), + "panic": carapace.ActionValues("print", "trap"), + "port": net.ActionPorts().UniqueList(","), "programmer": carapace.ActionValues("openocd", "msd", "command", "bmp"), "scheduler": carapace.ActionValues("none", "coroutines", "tasks"), "serial": carapace.ActionValues("none", "uart", "usb"), diff --git a/completers/tmux_completer/cmd/attachSession.go b/completers/tmux_completer/cmd/attachSession.go index cf70bb9c03..eeb070802f 100644 --- a/completers/tmux_completer/cmd/attachSession.go +++ b/completers/tmux_completer/cmd/attachSession.go @@ -26,9 +26,7 @@ func init() { carapace.Gen(attachSessionCmd).FlagCompletion(carapace.ActionMap{ "c": carapace.ActionDirectories(), - "f": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return tmux.ActionClientFlags().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "f": tmux.ActionClientFlags().UniqueList(","), "t": tmux.ActionSessions(), }) } diff --git a/completers/tmux_completer/cmd/root.go b/completers/tmux_completer/cmd/root.go index 6d00166fc6..485b2e8c8d 100644 --- a/completers/tmux_completer/cmd/root.go +++ b/completers/tmux_completer/cmd/root.go @@ -35,9 +35,7 @@ func init() { carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ "S": carapace.ActionFiles(), - "T": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return tmux.ActionFeatures().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "T": tmux.ActionFeatures().UniqueList(","), "c": carapace.ActionFiles(), "f": carapace.ActionFiles(), }) diff --git a/completers/top_completer/cmd/root.go b/completers/top_completer/cmd/root.go index b44de5b08f..2ede3d9092 100644 --- a/completers/top_completer/cmd/root.go +++ b/completers/top_completer/cmd/root.go @@ -59,9 +59,7 @@ func init() { "p", "pebibytes", ), "o": action.ActionFields(), - "p": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ps.ActionProcessIds().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "p": ps.ActionProcessIds().UniqueList(","), "u": os.ActionUsers(), }) } diff --git a/completers/tsc_completer/cmd/root.go b/completers/tsc_completer/cmd/root.go index cde083b6df..14557f6906 100644 --- a/completers/tsc_completer/cmd/root.go +++ b/completers/tsc_completer/cmd/root.go @@ -133,13 +133,11 @@ func init() { rootCmd.Flags().String("watchFile", "", "Specify how the TypeScript watch mode works.") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "baseUrl": carapace.ActionDirectories(), - "declarationDir": carapace.ActionDirectories(), - "fallbackPolling": carapace.ActionValues("fixedinterval", "priorityinterval", "dynamicpriority", "fixedchunksize"), - "jsx": carapace.ActionValues("preserve", "react-native", "react", "react-jsx", "react-jsxdev"), - "lib": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionLibs().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "baseUrl": carapace.ActionDirectories(), + "declarationDir": carapace.ActionDirectories(), + "fallbackPolling": carapace.ActionValues("fixedinterval", "priorityinterval", "dynamicpriority", "fixedchunksize"), + "jsx": carapace.ActionValues("preserve", "react-native", "react", "react-jsx", "react-jsxdev"), + "lib": action.ActionLibs().UniqueList(","), "mapRoot": carapace.ActionDirectories(), "module": carapace.ActionValues("none", "commonjs", "amd", "system", "umd", "es6", "es2015", "es2020", "esnext"), "moduleResolution": carapace.ActionValues("node", "classic"), diff --git a/completers/umount_completer/cmd/root.go b/completers/umount_completer/cmd/root.go index e79d62c373..051f1b1cb2 100644 --- a/completers/umount_completer/cmd/root.go +++ b/completers/umount_completer/cmd/root.go @@ -40,12 +40,8 @@ func init() { rootCmd.Flags().BoolP("version", "V", false, "display version") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "test-opts": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionOptions().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "types": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return fs.ActionFilesystemTypes().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "test-opts": action.ActionOptions().UniqueList(","), + "types": fs.ActionFilesystemTypes().UniqueList(","), }) carapace.Gen(rootCmd).PositionalCompletion( diff --git a/completers/useradd_completer/cmd/root.go b/completers/useradd_completer/cmd/root.go index f252d7039d..81c31eac12 100644 --- a/completers/useradd_completer/cmd/root.go +++ b/completers/useradd_completer/cmd/root.go @@ -48,9 +48,7 @@ func init() { carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ "base-dir": carapace.ActionDirectories(), "gid": os.ActionGroups(), - "groups": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionGroups().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "groups": os.ActionGroups().UniqueList(","), "home-dir": carapace.ActionDirectories(), "prefix": carapace.ActionDirectories(), "root": carapace.ActionDirectories(), diff --git a/completers/usermod_completer/cmd/root.go b/completers/usermod_completer/cmd/root.go index b1c76c40e8..c581a926b8 100644 --- a/completers/usermod_completer/cmd/root.go +++ b/completers/usermod_completer/cmd/root.go @@ -44,10 +44,8 @@ func init() { rootCmd.Flags().BoolP("unlock", "U", false, "unlock the user account") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "gid": os.ActionGroups(), - "groups": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionGroups().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "gid": os.ActionGroups(), + "groups": os.ActionGroups().UniqueList(","), "home": carapace.ActionDirectories(), "prefix": carapace.ActionDirectories(), "root": carapace.ActionDirectories(), diff --git a/completers/vagrant_completer/cmd/provision.go b/completers/vagrant_completer/cmd/provision.go index 7e48ead463..6faf6dcbf8 100644 --- a/completers/vagrant_completer/cmd/provision.go +++ b/completers/vagrant_completer/cmd/provision.go @@ -19,9 +19,7 @@ func init() { rootCmd.AddCommand(provisionCmd) carapace.Gen(provisionCmd).FlagCompletion(carapace.ActionMap{ - "provision-with": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProvisioners().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "provision-with": action.ActionProvisioners().UniqueList(","), }) carapace.Gen(provisionCmd).PositionalCompletion( diff --git a/completers/vagrant_completer/cmd/reload.go b/completers/vagrant_completer/cmd/reload.go index 1ed9752962..34844da94c 100644 --- a/completers/vagrant_completer/cmd/reload.go +++ b/completers/vagrant_completer/cmd/reload.go @@ -22,9 +22,7 @@ func init() { rootCmd.AddCommand(reloadCmd) carapace.Gen(reloadCmd).FlagCompletion(carapace.ActionMap{ - "provision-with": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProvisioners().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "provision-with": action.ActionProvisioners().UniqueList(","), }) carapace.Gen(reloadCmd).PositionalCompletion( diff --git a/completers/vagrant_completer/cmd/resume.go b/completers/vagrant_completer/cmd/resume.go index 9721a0cd63..9037325ba1 100644 --- a/completers/vagrant_completer/cmd/resume.go +++ b/completers/vagrant_completer/cmd/resume.go @@ -21,9 +21,7 @@ func init() { rootCmd.AddCommand(resumeCmd) carapace.Gen(resumeCmd).FlagCompletion(carapace.ActionMap{ - "provision-with": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProvisioners().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "provision-with": action.ActionProvisioners().UniqueList(","), }) carapace.Gen(resumeCmd).PositionalCompletion( diff --git a/completers/vagrant_completer/cmd/snapshot_pop.go b/completers/vagrant_completer/cmd/snapshot_pop.go index d203afd962..90779cc906 100644 --- a/completers/vagrant_completer/cmd/snapshot_pop.go +++ b/completers/vagrant_completer/cmd/snapshot_pop.go @@ -23,9 +23,7 @@ func init() { snapshotCmd.AddCommand(snapshot_popCmd) carapace.Gen(snapshot_popCmd).FlagCompletion(carapace.ActionMap{ - "provision-with": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProvisioners().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "provision-with": action.ActionProvisioners().UniqueList(","), }) carapace.Gen(snapshot_popCmd).PositionalCompletion( diff --git a/completers/vagrant_completer/cmd/snapshot_restore.go b/completers/vagrant_completer/cmd/snapshot_restore.go index 5dc6ef15b1..ea5485e01b 100644 --- a/completers/vagrant_completer/cmd/snapshot_restore.go +++ b/completers/vagrant_completer/cmd/snapshot_restore.go @@ -22,9 +22,7 @@ func init() { snapshotCmd.AddCommand(snapshot_restoreCmd) carapace.Gen(snapshot_restoreCmd).FlagCompletion(carapace.ActionMap{ - "provision-with": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProvisioners().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "provision-with": action.ActionProvisioners().UniqueList(","), }) carapace.Gen(snapshot_restoreCmd).PositionalCompletion( diff --git a/completers/vagrant_completer/cmd/up.go b/completers/vagrant_completer/cmd/up.go index 6e8569f31a..57e12c2a3e 100644 --- a/completers/vagrant_completer/cmd/up.go +++ b/completers/vagrant_completer/cmd/up.go @@ -28,10 +28,8 @@ func init() { rootCmd.AddCommand(upCmd) carapace.Gen(upCmd).FlagCompletion(carapace.ActionMap{ - "provider": action.ActionProviders(), - "provision-with": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionProvisioners().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "provider": action.ActionProviders(), + "provision-with": action.ActionProvisioners().UniqueList(","), }) carapace.Gen(upCmd).PositionalCompletion( diff --git a/completers/vercel_completer/cmd/root.go b/completers/vercel_completer/cmd/root.go index 8c8d5ec899..390afab147 100644 --- a/completers/vercel_completer/cmd/root.go +++ b/completers/vercel_completer/cmd/root.go @@ -43,9 +43,7 @@ func init() { carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ "global-config": carapace.ActionDirectories(), "local-config": carapace.ActionFiles(), - "regions": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return action.ActionRegions().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "regions": action.ActionRegions().UniqueList(","), }) carapace.Gen(rootCmd).PositionalCompletion( diff --git a/completers/watchexec_completer/cmd/root.go b/completers/watchexec_completer/cmd/root.go index 89f8251c09..ee52120474 100644 --- a/completers/watchexec_completer/cmd/root.go +++ b/completers/watchexec_completer/cmd/root.go @@ -48,9 +48,7 @@ func init() { rootCmd.Flags().BoolP("watch-when-idle", "W", false, "Deprecated alias for --on-busy-update=do-nothing, which will become the") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "exts": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return fs.ActionFilenameExtensions().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "exts": fs.ActionFilenameExtensions().UniqueList(","), "on-busy-update": carapace.ActionValues("do-nothing", "queue", "restart", "signal"), "shell": os.ActionShells(), "signal": ps.ActionKillSignals(), diff --git a/completers/wget_completer/cmd/root.go b/completers/wget_completer/cmd/root.go index b324a482ab..0c009e8787 100644 --- a/completers/wget_completer/cmd/root.go +++ b/completers/wget_completer/cmd/root.go @@ -176,34 +176,26 @@ func init() { rootCmd.Flags().Bool("xattr", false, "turn on storage of metadata in extended file attributes") carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{ - "accept": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return fs.ActionFilenameExtensions().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "accept": fs.ActionFilenameExtensions().UniqueList(","), "append-output": carapace.ActionFiles(), "body-file": carapace.ActionFiles(), "ca-certificate": carapace.ActionFiles(), "ca-directory": carapace.ActionDirectories(), "certificate": carapace.ActionFiles(), "certificate-type": carapace.ActionValues("PEM", "DER"), - "ciphers": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ssh.ActionCiphers().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + "ciphers": ssh.ActionCiphers().UniqueList(","), "compression": carapace.ActionValues("auto", "gzip", "none"), "config": carapace.ActionFiles(), "crl-file": carapace.ActionFiles(), "directory-prefix": carapace.ActionDirectories(), - "follow-tags": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return http.ActionTags().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "header": http.ActionRequestHeaders(), - "ignore-tags": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return http.ActionTags().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "input-file": carapace.ActionFiles(), - "load-cookies": carapace.ActionFiles(), - "method": http.ActionRequestMethods(), - "output-document": carapace.ActionFiles(), - "output-file": carapace.ActionFiles(), + "follow-tags": http.ActionTags().UniqueList(","), + "header": http.ActionRequestHeaders(), + "ignore-tags": http.ActionTags().UniqueList(","), + "input-file": carapace.ActionFiles(), + "load-cookies": carapace.ActionFiles(), + "method": http.ActionRequestMethods(), + "output-document": carapace.ActionFiles(), + "output-file": carapace.ActionFiles(), "pinnedpubkey": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if !strings.HasPrefix(c.CallbackValue, "sha256//") { return carapace.Batch( @@ -215,25 +207,21 @@ func init() { return carapace.ActionValues("sha256//").NoSpace() }) }), - "post-file": carapace.ActionFiles(), - "private-key": carapace.ActionFiles(), - "private-key-type": carapace.ActionValues("PEM", "DER"), - "progress": carapace.ActionValues("dot", "bar"), - "regex-type": carapace.ActionValues("posix", "pcre"), - "reject": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return fs.ActionFilenameExtensions().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "rejected-log": carapace.ActionFiles(), - "report-speed": carapace.ActionValues("bits"), - "retry-on-http-error": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return http.ActionStatusCodes().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "save-cookies": carapace.ActionFiles(), - "secure-protocol": carapace.ActionValues("auto", "SSLv2"), - "user-agent": http.ActionUserAgents(), - "warc-dedup": carapace.ActionFiles(), - "warc-file": carapace.ActionFiles(), - "warc-tempdir": carapace.ActionDirectories(), + "post-file": carapace.ActionFiles(), + "private-key": carapace.ActionFiles(), + "private-key-type": carapace.ActionValues("PEM", "DER"), + "progress": carapace.ActionValues("dot", "bar"), + "regex-type": carapace.ActionValues("posix", "pcre"), + "reject": fs.ActionFilenameExtensions().UniqueList(","), + "rejected-log": carapace.ActionFiles(), + "report-speed": carapace.ActionValues("bits"), + "retry-on-http-error": http.ActionStatusCodes().UniqueList(","), + "save-cookies": carapace.ActionFiles(), + "secure-protocol": carapace.ActionValues("auto", "SSLv2"), + "user-agent": http.ActionUserAgents(), + "warc-dedup": carapace.ActionFiles(), + "warc-file": carapace.ActionFiles(), + "warc-tempdir": carapace.ActionDirectories(), }) carapace.Gen(rootCmd).PositionalCompletion( diff --git a/completers/xdotool_completer/cmd/key.go b/completers/xdotool_completer/cmd/key.go index 345076538a..d8d3e55e59 100644 --- a/completers/xdotool_completer/cmd/key.go +++ b/completers/xdotool_completer/cmd/key.go @@ -25,8 +25,6 @@ func init() { }) carapace.Gen(keyCmd).PositionalAnyCompletion( - carapace.ActionMultiParts("+", func(c carapace.Context) carapace.Action { - return action.ActionKeys().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + action.ActionKeys().UniqueList("+"), ) } diff --git a/completers/xdotool_completer/cmd/keydown.go b/completers/xdotool_completer/cmd/keydown.go index 8ca37adc8f..7d50b8baf5 100644 --- a/completers/xdotool_completer/cmd/keydown.go +++ b/completers/xdotool_completer/cmd/keydown.go @@ -25,8 +25,6 @@ func init() { }) carapace.Gen(keydownCmd).PositionalAnyCompletion( - carapace.ActionMultiParts("+", func(c carapace.Context) carapace.Action { - return action.ActionKeys().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + action.ActionKeys().UniqueList("+"), ) } diff --git a/completers/xdotool_completer/cmd/keyup.go b/completers/xdotool_completer/cmd/keyup.go index e63633c86a..ed9019f143 100644 --- a/completers/xdotool_completer/cmd/keyup.go +++ b/completers/xdotool_completer/cmd/keyup.go @@ -25,8 +25,6 @@ func init() { }) carapace.Gen(keyupCmd).PositionalAnyCompletion( - carapace.ActionMultiParts("+", func(c carapace.Context) carapace.Action { - return action.ActionKeys().Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), + action.ActionKeys().UniqueList("+"), ) } diff --git a/completers/youtube-dl_completer/cmd/root.go b/completers/youtube-dl_completer/cmd/root.go index 3337b88c0f..77b7488c0a 100644 --- a/completers/youtube-dl_completer/cmd/root.go +++ b/completers/youtube-dl_completer/cmd/root.go @@ -197,14 +197,12 @@ func init() { return youtubedl.ActionFormats(c.Args[0]) }), "recode-video": carapace.ActionValues("mp4", "flv", "ogg", "webm", "mkv", "avi"), - "sub-format": carapace.ActionMultiParts("/", func(c carapace.Context) carapace.Action { - return carapace.ActionValues("ass", "srt", "best").Invoke(c).Filter(c.Parts).ToA().NoSpace() - }), - "sub-lang": carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { + "sub-format": carapace.ActionValues("ass", "srt", "best").UniqueList("/"), + "sub-lang": carapace.ActionCallback(func(c carapace.Context) carapace.Action { if len(c.Args) == 0 { return carapace.ActionMessage("missing url") } - return youtubedl.ActionSubLangs(c.Args[0]).Invoke(c).Filter(c.Parts).ToA().NoSpace() + return youtubedl.ActionSubLangs(c.Args[0]).UniqueList(",") }), }) } diff --git a/go.mod b/go.mod index 973b155a7f..cb2de65790 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.19 require ( github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 github.com/pelletier/go-toml v1.9.5 - github.com/rsteube/carapace v0.26.0 + github.com/rsteube/carapace v0.26.2 github.com/rsteube/carapace-spec v0.3.0 github.com/spf13/cobra v1.6.1 github.com/spf13/pflag v1.0.5 diff --git a/go.sum b/go.sum index 9dc56d4cd8..b37147cc6c 100644 --- a/go.sum +++ b/go.sum @@ -13,8 +13,8 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= 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/rsteube/carapace v0.26.0 h1:SUUn1wFZvlhWGTnc1FgjvbCvH9Ss1E6aFu5kjL75+KM= -github.com/rsteube/carapace v0.26.0/go.mod h1:/ALYHicIpak6TjQnKl7HupclqJydy2LQb6CkawYBxDo= +github.com/rsteube/carapace v0.26.2 h1:ny7CWBUnYoOG9uesN1feIfpY6aK3IAVTUFdhreRR74Q= +github.com/rsteube/carapace v0.26.2/go.mod h1:/ALYHicIpak6TjQnKl7HupclqJydy2LQb6CkawYBxDo= github.com/rsteube/carapace-pflag v0.0.4 h1:Onb0cLNLxg1xJr2EsMlBldAI5KkybrvZ89b5cRElZXI= github.com/rsteube/carapace-pflag v0.0.4/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/rsteube/carapace-spec v0.3.0 h1:7hTsTB7qmFJ7SvnsI3wOnp+V4APVuxy2AzmphIXm4xk= diff --git a/pkg/actions/net/http/http.go b/pkg/actions/net/http/http.go index 09a9e5343d..41fe45717b 100644 --- a/pkg/actions/net/http/http.go +++ b/pkg/actions/net/http/http.go @@ -83,29 +83,17 @@ func ActionRequestHeaderValues(header string) carapace.Action { switch header { // TODO complete more headers case "Accept": - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionMediaTypes().Invoke(c).Filter(c.Parts).ToMultiPartsA("/") - }) + return ActionMediaTypes().UniqueList(",") case "Accept-Encoding": - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionContentEncodingTokens().Invoke(c).Filter(c.Parts).ToA() - }) + return ActionContentEncodingTokens().UniqueList(",") case "Accept-Language": - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return os.ActionLanguages().Invoke(c).Filter(c.Parts).ToA() - }) + return os.ActionLanguages().UniqueList(",") case "Cache-Control": - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionCacheControlRequestDirectives() - }) + return ActionCacheControlRequestDirectives().UniqueList(",") case "Content-Encoding": - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionContentEncodingTokens().Invoke(c).Filter(c.Parts).ToA() - }) + return ActionContentEncodingTokens().UniqueList(",") case "Content-Type": - return carapace.ActionMultiParts(",", func(c carapace.Context) carapace.Action { - return ActionMediaTypes().Invoke(c).Filter(c.Parts).ToMultiPartsA("/") - }) + return ActionMediaTypes().UniqueList(",") case "Transfer-Encoding": return ActionTransferEncodingTokens() case "User-Agent":