From 232caedbedf801c6ccb7d6cf3eef133c91f1c76d Mon Sep 17 00:00:00 2001 From: Shunta Komatsu Date: Sun, 2 Aug 2020 21:57:12 +0900 Subject: [PATCH] :sparkles: Add --remove flag to hook command --- cli/hook.go | 21 +++++++++++++++++++++ cmd/gmoji/cmd/cmd_hook.go | 18 ++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/cli/hook.go b/cli/hook.go index d38a0af..9747a45 100644 --- a/cli/hook.go +++ b/cli/hook.go @@ -3,6 +3,7 @@ package cli import ( "fmt" "io/ioutil" + "os" "path/filepath" "github.com/fatih/color" @@ -28,6 +29,26 @@ gmoji --hook $1 return nil } +// RemoveHook removes the commit hook. +func (c CLI) RemoveHook() error { + p, err := c.hookPath() + if err != nil { + return err + } + + if _, err := os.Stat(p); os.IsNotExist(err) { + return fmt.Errorf("%s does not exist", p) + } + + if err := os.Remove(p); err != nil { + return err + } + + fmt.Printf("%s\n", color.GreenString("gmoji commit hook removed successfully")) + + return nil +} + func (c CLI) hookPath() (string, error) { gitRoot, err := c.GitRoot() if err != nil { diff --git a/cmd/gmoji/cmd/cmd_hook.go b/cmd/gmoji/cmd/cmd_hook.go index 065e4ae..6ba077f 100644 --- a/cmd/gmoji/cmd/cmd_hook.go +++ b/cmd/gmoji/cmd/cmd_hook.go @@ -5,12 +5,28 @@ import ( "github.com/spf13/cobra" ) +// HookOptions represents the options for hook command. +type HookOptions struct { + Remove bool +} + +var ( + hookOptions HookOptions +) + func runHook(cmd *cobra.Command, args []string) error { c, err := cli.NewCLI() if err != nil { return err } + if hookOptions.Remove { + if err := c.RemoveHook(); err != nil { + return err + } + return nil + } + if err := c.Hook(); err != nil { return err } @@ -26,5 +42,7 @@ var hookCmd = &cobra.Command{ } func init() { + hookCmd.Flags().BoolVarP(&hookOptions.Remove, "remove", "r", false, "remove the commit hook") + rootCmd.AddCommand(hookCmd) }