command/git.go

151 lines
3.3 KiB
Go

// Package command ...
//
// Description : command ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2022-06-14 20:02
package command
import "git.zhangdeman.cn/zhangdeman/command/define"
// Git ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 20:09 2022/6/14
func Git(workDir string, gitCmdPath string) *git {
if len(gitCmdPath) == 0 {
gitCmdPath = "git"
}
return &git{
workDir: workDir,
gitCmdPath: gitCmdPath,
}
}
type git struct {
workDir string
gitCmdPath string
}
// Init 对应 git init 命令
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 20:10 2022/6/14
func (g *git) Init() *define.Result {
// 删除已有git信息
_ = Dir(g.workDir).Delete(".git")
return Execute(g.workDir, g.gitCmdPath, []string{"init"})
}
// RemoteAddOrigin 对应 git remote add origin xxxx 命令
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 20:20 2022/6/14
func (g *git) RemoteAddOrigin(gitRepoAddress string) *define.Result {
return Execute(g.workDir, g.gitCmdPath, []string{"remote", "add", "origin", gitRepoAddress})
}
// SetUpstreamOrigin 对应 git push --set-upstream origin xxx 命令
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 20:22 2022/6/14
func (g *git) SetUpstreamOrigin(origin string) *define.Result {
return Execute(g.workDir, g.gitCmdPath, []string{"push", "--set-upstream ", "origin", origin})
}
// Add 对应 git add xxx 命令
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 20:24 2022/6/14
func (g *git) Add(fileList ...string) *define.Result {
if len(fileList) == 0 {
fileList = []string{"*"}
}
param := []string{"add"}
for _, item := range fileList {
param = append(param, item)
}
return Execute(g.workDir, g.gitCmdPath, param)
}
// Commit 对应 git commit -m 'xxxx'
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 20:26 2022/6/14
func (g *git) Commit(comment string) *define.Result {
if len(comment) == 0 {
comment = "add some code"
}
return Execute(g.workDir, g.gitCmdPath, []string{"commit", "-m", comment})
}
// Push 对应 git push
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 20:28 2022/6/14
func (g *git) Push(force bool) *define.Result {
param := []string{
"push",
}
if force {
param = append(param, "-f")
}
return Execute(g.workDir, g.gitCmdPath, param)
}
// AddGitignore 添加 .gitignore 文件
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 20:31 2022/6/14
func (g *git) AddGitignore(fileList ...string) *define.Result {
baseFileContent := `# Created by .ignore support plugin (hsz.mobi)
### Go template
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
*.xlsx
# Test binary, built with "go test -c"
*.test
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
# Dependency directories (remove the comment below to include it)
# vendor/
# goland的相关配置
.idea
# vscode 的相关配置
.vscode
# 构建后的产物目录
release
*_test.go
*.txt
`
for _, item := range fileList {
baseFileContent = baseFileContent + "\n" + item
}
// 将信息写入文件
return &define.Result{
WorkDir: g.workDir,
CmdPath: "",
Param: nil,
Error: File(g.workDir, ".gitignore").Write([]byte(baseFileContent)),
Output: nil,
StartTime: 0,
FinishTime: 0,
}
}