Golang提升效率的小工具

204 阅读2分钟

年底了,在急速的修复一些老项目的Bug, 更新迭代的次数较多, 由于之前的老项目没有使用 Git 来部署, 还是使用的 原始的 FTP拖追那一套, 由于本地开发使用的是 mac, 每次代码上线需要把更新的代码 打包成 .zip 发给运维, 由于每次发给运维的压缩文件中都有 .DS_Store 文件, 运维每次解压之后还要手动删除,被吐槽了N多次, 然后 每次发送之前都得

ls -a

然后手动删除 .DS_Store 文件有点麻烦, 于是 写了一个小工具, 用来删除 .DS_Store 文件, 提升效率.

效果如下

实现思路

实现思路很简单, 就是 变量项目下的所有目录, 找到 .DS_Store 文件, 然后删除

type ClearPath struct {    Path string}func (c *ClearPath) removeAllFilesWithFilename(dirPath, filename string) error {    err := filepath.Walk(dirPath, func(path string, info os.FileInfo, err error) error {        if err != nil {            return err        }        if !info.IsDir() && info.Name() == filename {            err := os.Remove(path)            if err != nil {                return err            }            fmt.Println("Deleted:", path)        }        return nil    })    return err}func (c *ClearPath) ClearDotDSStore() {    filename := ".DS_Store"    err := c.removeAllFilesWithFilename(c.Path, filename)    if err != nil {        fmt.Println("Error:", err)        return    }}

使用了 filepath.Walk 来遍历 指定的目录 然后 删除 .DS_Store 文件

前面也介绍了使用

开发终端小工具

这里就直接集成进去了

运行

cobra-cli add:

cobra-cli add pf_cd  # 添加一个 pf_cd 命令进去 

生成指定的

pfCd.go

文件, 然后对文件进行修改:

/*Copyright © 2024 NAME HERE <EMAIL ADDRESS>*/package cmdimport (    "fmt"    "github.com/pfinal/pf_tools/pak"    "github.com/spf13/cobra"    "os")// pfCdCmd represents the pfCd commandvar pfCdCmd = &cobra.Command{    Use:   "pf_cd",    Short: "清除目录中的.DS_Store 文件",    Long:  `清除mac 目录中生成的.DS_Store 文件`,    Run: func(cmd *cobra.Command, args []string) {        var path string        if len(args) > 0 {            path = args[0]        } else {            path, _ = os.Getwd()        }        fmt.Printf("清除目录的.DS_Store 文件: %s\n", path)        clearPath := pak.ClearPath{Path: path}        clearPath.ClearDotDSStore()    },}func init() {    rootCmd.AddCommand(pfCdCmd)}

Run 的时候判断了一下 是否指定 目录 如果没有指定 则使用当前目录, 这里没有做路径的判断, 需要根据实际情况进行修改

然后 整完这些以后 就可以运行:

go install

安装到本地愉快的玩耍嘞, 顺带给工具 加上一个 help 的介绍,把 pf_cd 命令也添加到 pf_tools 的help 介绍里面去,如下:

最后

这里只是简单的介绍了一下 具体的实现可以查看源码:

github.com/PFinal-tool…