From f7504d57f925ebb345eda454512d4a3928c12ab4 Mon Sep 17 00:00:00 2001 From: Rogee Date: Sat, 21 Dec 2024 11:33:32 +0800 Subject: [PATCH] g --- cmd/fmt.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++ cmd/gen.go | 5 +++-- main.go | 1 + 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 cmd/fmt.go diff --git a/cmd/fmt.go b/cmd/fmt.go new file mode 100644 index 0000000..6c826d6 --- /dev/null +++ b/cmd/fmt.go @@ -0,0 +1,47 @@ +package cmd + +import ( + "fmt" + "os" + "os/exec" + + log "github.com/sirupsen/logrus" + "github.com/spf13/cobra" +) + +func CommandFmt(root *cobra.Command) { + cmd := &cobra.Command{ + Use: "fmt", + Short: "fmt codes", + RunE: commandFmtE, + } + + root.AddCommand(cmd) +} + +func commandFmtE(cmd *cobra.Command, args []string) error { + log.Info("开始格式化代码") + if _, err := exec.LookPath("gofumpt"); err != nil { + log.Info("gofumpt 不存在,正在安装...") + installCmd := exec.Command("go", "install", "mvdan.cc/gofumpt@latest") + installCmd.Stdout = os.Stdout + installCmd.Stderr = os.Stderr + if err := installCmd.Run(); err != nil { + return fmt.Errorf("安装 gofumpt 失败: %v", err) + } + if _, err := exec.LookPath("gofumpt"); err != nil { + return fmt.Errorf("gofumpt 已经安装,但是执行失败") + } + } + + log.Info("运行 gofumpt...") + gofumptCmd := exec.Command("gofumpt", "-l", "-extra", "-w", ".") + gofumptCmd.Stdout = os.Stdout + gofumptCmd.Stderr = os.Stderr + if err := gofumptCmd.Run(); err != nil { + return fmt.Errorf("运行 gofumpt 失败: %v", err) + } + + log.Info("格式化代码完成") + return nil +} diff --git a/cmd/gen.go b/cmd/gen.go index 06184ce..47100e5 100644 --- a/cmd/gen.go +++ b/cmd/gen.go @@ -4,8 +4,9 @@ import "github.com/spf13/cobra" func CommandGen(root *cobra.Command) { cmd := &cobra.Command{ - Use: "gen", - Short: "Generate code", + Use: "gen", + Short: "Generate code", + PersistentPostRunE: commandFmtE, } cmd.PersistentFlags().StringP("config", "c", "config.toml", "database config file") diff --git a/main.go b/main.go index 4e66f78..a6e6b08 100644 --- a/main.go +++ b/main.go @@ -17,6 +17,7 @@ func main() { cmd.CommandMigrate, cmd.CommandGen, cmd.CommandSwag, + cmd.CommandFmt, } for _, c := range cmds {