年底了,在急速的修复一些老项目的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
|
package cmd
import ( "fmt" "github.com/pfinal/pf_tools/pak" "github.com/spf13/cobra" "os" )
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 的时候判断了一下 是否指定 目录 如果没有指定 则使用当前目录, 这里没有做路径的判断, 需要根据实际情况进行修改
然后 整完这些以后 就可以运行:
安装到本地愉快的玩耍嘞, 顺带给工具 加上一个 help 的介绍,把 pf_cd 命令也添加到 pf_tools 的help 介绍里面去,如下:
最后
这里只是简单的介绍了一下 具体的实现可以查看源码:
https://github.com/PFinal-tool/pf_tools