增加执行系统命令的文档

This commit is contained in:
白茶清欢 2021-11-12 16:34:32 +08:00
parent 2c436b1a6c
commit 82f944f28a
2 changed files with 100 additions and 0 deletions

42
cmd/define.go Normal file
View File

@ -0,0 +1,42 @@
// Package cmd...
//
// Description : cmd...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-11-12 2:18 下午
package cmd
// Config 配置
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:19 下午 2021/11/12
type Config struct {
WorkDir string `json:"work_dir"` // 工作目录
Command string `json:"command"` // 指令
Script string `json:"script"` // 脚本
ParameterList []Parameter `json:"parameter_list"` // 参数列表
}
// Parameter ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:21 下午 2021/11/12
type Parameter struct {
Key string `json:"key"`
Value string `json:"value"`
}
// Result ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:25 下午 2021/11/12
type Result struct {
WorkDir string `json:"work_dir"`
Err error `json:"err"`
Output []byte `json:"output"`
ExecuteCommand string `json:"execute_command"`
}

58
cmd/execute.go Normal file
View File

@ -0,0 +1,58 @@
// Package cmd...
//
// Description : cmd...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-11-12 2:21 下午
package cmd
import (
"os/exec"
"strings"
"git.zhangdeman.cn/zhangdeman/gopkg/util"
)
// Execute 执行指令
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:22 下午 2021/11/12
func Execute(cmdConfig Config) *Result {
if len(cmdConfig.WorkDir) == 0 {
cmdConfig.WorkDir, _ = util.GetProjectPath()
}
paramList := buildCmdParameter(cmdConfig.Script, cmdConfig.ParameterList)
cmdInstance := exec.Command(cmdConfig.Command, paramList...)
// 设置指令的工作目录
cmdInstance.Dir = cmdConfig.WorkDir
result := &Result{
Err: nil,
Output: nil,
WorkDir: cmdConfig.WorkDir,
ExecuteCommand: cmdConfig.Command + " " + strings.Join(paramList, " "),
}
result.Output, result.Err = cmdInstance.CombinedOutput()
return result
}
// buildCmdParameter 构建参数列表
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:53 下午 2021/11/12
func buildCmdParameter(script string, parameterList []Parameter) []string {
paramList := make([]string, 0)
if len(script) > 0 {
paramList = append(paramList, script)
}
for _, item := range parameterList {
if len(item.Key) == 0 {
paramList = append(paramList, item.Value)
continue
}
paramList = append(paramList, item.Key+"="+item.Value)
}
return paramList
}