Ai
1 Star 0 Fork 0

Exi/GO-Makefile 命令简化工具

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
rmdir.go 1.34 KB
一键复制 编辑 原始数据 按行查看 历史
package cmd
import (
"errors"
"fmt"
"os"
"strings"
"gitee.com/exi-red/maketools/util"
"github.com/spf13/cobra"
)
// 子命令 rd
const rd = "rd"
// 参数 指定目录
var rdFlagDir = Params{
Name: "dir",
Shorthand: "d",
Value: "",
Usage: "目录路径(支持多个),半角逗号分隔",
}
// 注册子命令
var rdCmd = &cobra.Command{
Use: rd,
Short: `删除指定目录`,
Example: fmt.Sprintf(` %s %s --%s "./dir,./dir2,..."`, ROOTNAME, rd, rdFlagDir.Name),
Run: func(cmd *cobra.Command, args []string) {
// 处理器执行
err := rdHandler(cmd)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
},
}
// 初始化
func init() {
// 注册参数
StringP(rdCmd, rdFlagDir)
// 添加到主命令
rootCmd.AddCommand(rdCmd)
}
// 删除目录处理器
func rdHandler(cmd *cobra.Command) error {
// 获取参数
dir, _ := cmd.Flags().GetString(rdFlagDir.Name)
if dir == "" {
return errors.New("directory not specified")
}
dirs := strings.Split(dir, ",")
for _, dir := range dirs {
dir = strings.TrimSpace(dir)
dir = util.WorkDirPath(dir)
if dir != "" {
fileInfo, err := os.Stat(dir)
if os.IsNotExist(err) {
continue // 路径不存在
}
if !fileInfo.IsDir() {
continue // 不是目录
}
err = os.RemoveAll(dir)
if err != nil {
return err
}
}
}
return nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/exi-red/maketools.git
git@gitee.com:exi-red/maketools.git
exi-red
maketools
GO-Makefile 命令简化工具
v1.0.13

搜索帮助