80 lines
1.8 KiB
Go
80 lines
1.8 KiB
Go
// Package command ...
|
|
//
|
|
// Description : command ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2022-05-21 17:31
|
|
package command
|
|
|
|
import (
|
|
"errors"
|
|
"path/filepath"
|
|
"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+"/"+dirPath, "//", "/")
|
|
}
|
|
paramList := make([]string, 0)
|
|
if d.recursiveCreate {
|
|
paramList = append(paramList, "-p")
|
|
}
|
|
paramList = append(paramList, dirPath)
|
|
return Execute(d.workDir, "mkdir", paramList)
|
|
}
|
|
|
|
// Delete 删除目录
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 20:12 2022/6/14
|
|
func (d *dir) Delete(dirPath string) *define.Result {
|
|
if strings.HasPrefix(dirPath, string(filepath.Separator)) && !strings.HasPrefix(dirPath, d.workDir) {
|
|
return &define.Result{
|
|
WorkDir: d.workDir,
|
|
CmdPath: "",
|
|
Param: nil,
|
|
Error: errors.New("仅允许删除工作目录下的子目录"),
|
|
Output: nil,
|
|
StartTime: 0,
|
|
FinishTime: 0,
|
|
}
|
|
}
|
|
return Execute(d.workDir, "rm", []string{"-rf", dirPath})
|
|
}
|