From 040dce04878fdb761e758f3f8badee7936e6be53 Mon Sep 17 00:00:00 2001 From: Peter Cardenas <16930781+PeterCardenas@users.noreply.github.com> Date: Sun, 16 Mar 2025 17:07:30 -0700 Subject: [PATCH 1/3] chore: allow prefixing unused parameters with underscore --- .golangci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.golangci.yml b/.golangci.yml index 2c6823e7f25..8a94956efa9 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -31,6 +31,11 @@ linters-settings: desc: Please keep tests unified using only github.com/stretchr/testify - pkg: log desc: Please keep logging unified using only github.com/sirupsen/logrus + revive: + rules: + - name: unused-parameter + arguments: + - allowRegex: "^_" linters: enable: - gosimple From d48f7c7d11262468addeea2f553fa299b1c5f0e8 Mon Sep 17 00:00:00 2001 From: Peter Cardenas <16930781+PeterCardenas@users.noreply.github.com> Date: Sun, 16 Mar 2025 17:10:15 -0700 Subject: [PATCH 2/3] feat: add --completion flag adds a --completion flag to generate shell completion scripts builtin to cobra. this includes completion for the --completion flag itself. --- cmd/root.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/cmd/root.go b/cmd/root.go index 2900ac5f775..113d6ad6975 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -65,6 +65,14 @@ func createRootCommand(ctx context.Context, input *Input, version string) *cobra SilenceUsage: true, } + rootCmd.Flags().StringP("completion", "", "", "Generate shell completion script for [bash|zsh|fish|powershell]") + err := rootCmd.RegisterFlagCompletionFunc("completion", func(_cmd *cobra.Command, _args []string, _toComplete string) ([]string, cobra.ShellCompDirective) { + return []string{"bash", "zsh", "fish", "powershell"}, cobra.ShellCompDirectiveNoFileComp + }) + if err != nil { + log.Fatal(err) + } + rootCmd.Flags().BoolP("watch", "w", false, "watch the contents of the local repo and run when files change") rootCmd.Flags().BoolP("list", "l", false, "list workflows") rootCmd.Flags().BoolP("graph", "g", false, "draw workflows") @@ -262,6 +270,24 @@ func generateManPage(cmd *cobra.Command) error { return nil } +func generateCompletion(cmd *cobra.Command, shell string) error { + if shell == "" { + return fmt.Errorf("shell is required (bash|zsh|fish|powershell)") + } + switch shell { + case "bash": + return cmd.Root().GenBashCompletion(os.Stdout) + case "zsh": + return cmd.Root().GenZshCompletion(os.Stdout) + case "fish": + return cmd.Root().GenFishCompletion(os.Stdout, true) + case "powershell": + return cmd.Root().GenPowerShellCompletion(os.Stdout) + default: + return fmt.Errorf("unsupported shell: %s, supported shells are: bash, zsh, fish, powershell", shell) + } +} + func listOptions(cmd *cobra.Command) error { flags := []Flag{} cmd.LocalFlags().VisitAll(func(f *pflag.Flag) { @@ -396,6 +422,10 @@ func newRunCommand(ctx context.Context, input *Input) func(*cobra.Command, []str if ok, _ := cmd.Flags().GetBool("man-page"); ok { return generateManPage(cmd) } + shell, err := cmd.Flags().GetString("completion") + if err == nil { + return generateCompletion(cmd, shell) + } if input.listOptions { return listOptions(cmd) } From b407c55e0e9fb42fba495e4fbbaa75e04df59203 Mon Sep 17 00:00:00 2001 From: Peter Cardenas <16930781+PeterCardenas@users.noreply.github.com> Date: Sun, 16 Mar 2025 17:38:41 -0700 Subject: [PATCH 3/3] fix: disallow files as completion for act --- cmd/root.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmd/root.go b/cmd/root.go index 113d6ad6975..90e674f1150 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -63,6 +63,9 @@ func createRootCommand(ctx context.Context, input *Input, version string) *cobra PersistentPostRun: cleanup(input), Version: version, SilenceUsage: true, + ValidArgsFunction: func(_cmd *cobra.Command, _args []string, _toComplete string) ([]string, cobra.ShellCompDirective) { + return nil, cobra.ShellCompDirectiveNoFileComp + }, } rootCmd.Flags().StringP("completion", "", "", "Generate shell completion script for [bash|zsh|fish|powershell]")