From 78f2dbdccbc2fcd303e2c874ac3bda32805c0229 Mon Sep 17 00:00:00 2001 From: Abin Simon Date: Thu, 16 Nov 2023 19:39:32 +0530 Subject: [PATCH] Add documentation for completion command --- src/cli/cli.go | 17 ++++++++++++++++- src/cli/utils/suggestions.go | 2 +- src/cmd/mdgen/mdgen.go | 3 ++- website/docs/support/known-issues.md | 2 +- website/sidebars.js | 3 ++- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/cli/cli.go b/src/cli/cli.go index b3a01f34c..b82beb95b 100644 --- a/src/cli/cli.go +++ b/src/cli/cli.go @@ -149,10 +149,25 @@ func BuildCommandTree(cmd *cobra.Command) { // harder to control it, for example skipping printing "Logging to file" // message func AddCompletion(cmd *cobra.Command) { + longMessage := `Generate shell completion script for Corso. + +These need to be hooked into your shell to enable completions for Corso. + +For bash, add the following line to your ` + "`~/.bashrc` \n" + // two spaces for markdown and \n for go + "`eval \"$(corso completion bash)\"` \n" + ` + +For zsh, add the following line to your ` + "`~/.zshrc` \n" + + "`eval \"$(corso completion zsh)\"` \n" + ` + +For fish, add the following line to your ` + "`~/.config/fish/config.fish` \n" + + "`corso completion fish | source` \n" + ` + +For powershell, add the following to your ` + "`$PROFILE` \n" + + "`Invoke-Expression \"$(corso completion powershell)\"`" completion := &cobra.Command{ Use: "completion [bash|zsh|fish|powershell]", Short: "Generate completion script", - Long: "To load completions", + Long: longMessage, DisableFlagsInUseLine: true, ValidArgs: []string{"bash", "zsh", "fish", "powershell"}, Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs), diff --git a/src/cli/utils/suggestions.go b/src/cli/utils/suggestions.go index c09f8e294..81be0dbc3 100644 --- a/src/cli/utils/suggestions.go +++ b/src/cli/utils/suggestions.go @@ -27,7 +27,7 @@ func SubcommandsRequiredWithSuggestions(cmd *cobra.Command, args []string) error cmd.SuggestionsMinimumDistance = 2 } // subcommand suggestions - suggestions = append(cmd.SuggestionsFor(args[0])) + suggestions = cmd.SuggestionsFor(args[0]) // subcommand alias suggestions (with distance, not exact) for _, c := range cmd.Commands() { diff --git a/src/cmd/mdgen/mdgen.go b/src/cmd/mdgen/mdgen.go index 54c16abef..1171d4fca 100644 --- a/src/cmd/mdgen/mdgen.go +++ b/src/cmd/mdgen/mdgen.go @@ -89,7 +89,8 @@ func fatal(err error) { // Adapted from https://github.com/spf13/cobra/blob/main/doc/md_docs.go for Corso specific formatting func genMarkdownCorso(cmd *cobra.Command, dir string) error { for _, c := range cmd.Commands() { - if !isAvailableCommand(c) || c.IsAdditionalHelpTopicCommand() { + if c.Use != "completion [bash|zsh|fish|powershell]" && + (!isAvailableCommand(c) || c.IsAdditionalHelpTopicCommand()) { continue } diff --git a/website/docs/support/known-issues.md b/website/docs/support/known-issues.md index 93bc2ef46..b1ba6fb0c 100644 --- a/website/docs/support/known-issues.md +++ b/website/docs/support/known-issues.md @@ -36,4 +36,4 @@ Below is a list of known Corso issues and limitations: * Restoring the data into a different Group from the one it was backed up from isn't currently supported -* CLI completions cannot autocomplete multiple values for flags +* CLI completions can't autocomplete multiple values for flags diff --git a/website/sidebars.js b/website/sidebars.js index a88abf6eb..329f78f78 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -54,7 +54,8 @@ const sidebars = { 'cli/corso-repo-connect-filesystem', 'cli/corso-repo-maintenance', 'cli/corso-repo-update-passphrase', - 'cli/corso-env'] + 'cli/corso-env', + 'cli/corso-completion'] }, { type: 'category',