From ee04c8740d8b1959857bb5bad9cbd9b559e90f16 Mon Sep 17 00:00:00 2001 From: Chris Scott Date: Mon, 25 Jan 2021 19:12:32 -0500 Subject: [PATCH 1/2] Add completion command. --- internal/cli/completion.go | 70 ++++++++++++++++++++++++++++++++++++++ internal/cli/root.go | 5 +++ 2 files changed, 75 insertions(+) create mode 100644 internal/cli/completion.go diff --git a/internal/cli/completion.go b/internal/cli/completion.go new file mode 100644 index 000000000..c91f1ee37 --- /dev/null +++ b/internal/cli/completion.go @@ -0,0 +1,70 @@ +package cli + +import ( + "os" + + "github.com/spf13/cobra" +) + +func completionCmd(cli *cli) *cobra.Command { + cmd := &cobra.Command{ + Use: "completion [bash|zsh|fish|powershell]", + Short: "generate completion script", + Long: `To load completions: + +Bash: + +$ source <(auth0 completion bash) + +# To load completions for each session, execute once: +Linux: + $ auth0 completion bash > /etc/bash_completion.d/auth0 +MacOS: + $ auth0 completion bash > /usr/local/etc/bash_completion.d/auth0 + +Zsh: + +# If shell completion is not already enabled in your environment you will need +# to enable it. You can execute the following once: + +$ echo "autoload -U compinit; compinit" >> ~/.zshrc + +# To load completions for each session, execute once: +$ auth0 completion zsh > "${fpath[1]}/_auth0" + +# You will need to start a new shell for this setup to take effect. + +Fish: + +$ auth0 completion fish | source + +# To load completions for each session, execute once: +$ auth0 completion fish > ~/.config/fish/completions/auth0.fish + +Powershell: + +PS> auth0 completion powershell | Out-String | Invoke-Expression + +# To load completions for every new session, run: +PS> auth0 completion powershell > auth0.ps1 +# and source this file from your powershell profile. +`, + DisableFlagsInUseLine: true, + ValidArgs: []string{"bash", "zsh", "fish", "powershell"}, + Args: cobra.ExactValidArgs(1), + Run: func(cmd *cobra.Command, args []string) { + switch args[0] { + case "bash": + cmd.Root().GenBashCompletion(os.Stdout) + case "zsh": + cmd.Root().GenZshCompletion(os.Stdout) + case "fish": + cmd.Root().GenFishCompletion(os.Stdout, true) + case "powershell": + cmd.Root().GenPowerShellCompletion(os.Stdout) + } + }, + } + + return cmd +} diff --git a/internal/cli/root.go b/internal/cli/root.go index f5ea1b149..5d30cff5d 100644 --- a/internal/cli/root.go +++ b/internal/cli/root.go @@ -58,6 +58,11 @@ func Execute() { rootCmd.AddCommand(rulesCmd(cli)) rootCmd.AddCommand(connectionsCmd(cli)) rootCmd.AddCommand(tryLoginCmd(cli)) + rootCmd.AddCommand(completionCmd(cli)) + + // TODO(cyx): backport this later on using latest auth0/v5. + // rootCmd.AddCommand(actionsCmd(cli)) + // rootCmd.AddCommand(triggersCmd(cli)) if err := rootCmd.ExecuteContext(context.TODO()); err != nil { cli.renderer.Errorf(err.Error()) From 57387dd7dcb4ff9f49c3b7795d9a2fe0778a9f9e Mon Sep 17 00:00:00 2001 From: Chris Scott Date: Mon, 25 Jan 2021 19:30:19 -0500 Subject: [PATCH 2/2] Handle errors --- internal/cli/completion.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/internal/cli/completion.go b/internal/cli/completion.go index c91f1ee37..f4a554b9f 100644 --- a/internal/cli/completion.go +++ b/internal/cli/completion.go @@ -55,13 +55,25 @@ PS> auth0 completion powershell > auth0.ps1 Run: func(cmd *cobra.Command, args []string) { switch args[0] { case "bash": - cmd.Root().GenBashCompletion(os.Stdout) + err := cmd.Root().GenBashCompletion(os.Stdout) + if err != nil { + cli.renderer.Errorf(err.Error()) + } case "zsh": - cmd.Root().GenZshCompletion(os.Stdout) + err := cmd.Root().GenZshCompletion(os.Stdout) + if err != nil { + cli.renderer.Errorf(err.Error()) + } case "fish": - cmd.Root().GenFishCompletion(os.Stdout, true) + err := cmd.Root().GenFishCompletion(os.Stdout, true) + if err != nil { + cli.renderer.Errorf(err.Error()) + } case "powershell": - cmd.Root().GenPowerShellCompletion(os.Stdout) + err := cmd.Root().GenPowerShellCompletion(os.Stdout) + if err != nil { + cli.renderer.Errorf(err.Error()) + } } }, }