Golang提升效率的小工具

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

效果如下

实现思路

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

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:

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

生成指定的 pfCd.go 文件, 然后对文件进行修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
Copyright © 2024 NAME HERE <EMAIL ADDRESS>
*/
package cmd

import (
"fmt"
"github.com/pfinal/pf_tools/pak"
"github.com/spf13/cobra"
"os"
)

// pfCdCmd represents the pfCd command
var 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 的时候判断了一下 是否指定 目录 如果没有指定 则使用当前目录, 这里没有做路径的判断, 需要根据实际情况进行修改

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

1
go install

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

最后

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

https://github.com/PFinal-tool/pf_tools