diff --git a/dir.go b/dir.go new file mode 100644 index 0000000..5c00f2a --- /dev/null +++ b/dir.go @@ -0,0 +1,57 @@ +// Package command ... +// +// Description : command ... +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 2022-05-21 17:31 +package command + +import ( + "strings" + + "git.zhangdeman.cn/zhangdeman/command/define" +) + +// Dir 目录操作实例 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 17:33 2022/5/21 +func Dir(workDir string) *dir { + return &dir{ + workDir: workDir, + } +} + +type dir struct { + workDir string // 工作目录 + recursiveCreate bool // 创建目录时,是否递归创建 +} + +// RecursiveCreate 递归创建目录 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 17:37 2022/5/21 +func (d *dir) RecursiveCreate() *dir { + d.recursiveCreate = true + return d +} + +// Create 创建目录, 若 dirPath 以 / 开头, 则为据对路径, 否则是相对 workDir 的相对路径 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 17:42 2022/5/21 +func (d *dir) Create(dirPath string) define.Result { + if !strings.HasPrefix(dirPath, "/") { + dirPath = strings.ReplaceAll(d.workDir, "//", "/") + } + paramList := make([]string, 0) + if d.recursiveCreate { + paramList = append(paramList, "-p") + } + paramList = append(paramList, dirPath) + return Execute(d.workDir, "mkdir", paramList) +}