Documentation ¶
Index ¶
- Constants
- Variables
- func AskUser(question string, standardAnswers []string) (string, error)
- func CheckoutBranch(worktree *git.Worktree, branchName string) error
- func CloneRepoViaSSH(repoPath, URL, username, repoName string, publicKeys *ssh.PublicKeys) (*git.Repository, error)
- func CreateFile(file string) error
- func CreateLocalBranch(repo *git.Repository, branchs []fs.FileInfo) []string
- func Delay(second float32)
- func DeleteFile(filePath string) error
- func FileExist(filePath string) bool
- func FolderEmpty(dir string) bool
- func GetCallerInfo() (string, int)
- func GetCurrentUserInfo() (*user.User, error)
- func GetDefaultBranchName(repo *git.Repository, publicKeys *ssh.PublicKeys) (string, []string)
- func GetHostname() string
- func GetLanguage() string
- func GetLocalRepoSubmoduleInfo(worktree *git.Worktree) (git.Submodules, error)
- func GetPublicKeysByGit(pemFile string) (*ssh.PublicKeys, error)
- func GetPublicKeysBySSH(pemFile string) (transport.AuthMethod, error)
- func GetRepoBranchInfo(worktree *git.Worktree, isSubmodule bool, submoduleName string, which string) ([]fs.FileInfo, error)
- func GetRepoHeadRef(repo *git.Repository) *plumbing.Reference
- func GetTomlConfig(filePath string) (*toml.Tree, error)
- func GetUserInfoById(userId int) (*user.User, error)
- func GetUserInfoByName(userName string) (*user.User, error)
- func GetVariable(key string) string
- func IsLocalRepo(path string) (bool, *git.Repository, *plumbing.Reference)
- func ModifyGitConfig(configFile, originalLink, newLink string) error
- func MultipleSelectionFilter(choices, highlights []string, negatives string) ([]string, error)
- func Notification()
- func ProgramInfo() map[string]string
- func PullRepo(repo *git.Repository, publicKeys *ssh.PublicKeys) (worktree *git.Worktree, leftCommit, rightCommit *object.Commit, err error)
- func RunCommandToBuffer(command string, args []string) (string, string, error)
- func RunCommandToOS(command string, args []string) error
- func SetVariable(key, value string) error
- func UpperFirstChar(str string) string
- func WriteTomlConfig(filePath string) (int64, error)
- type Config
- type GitConfig
- type SSHConfig
- type ScriptConfig
- type StorageConfig
Constants ¶
const ( Name string = "Curator" // 程序名 Version string = "v1.3.5" // 程序版本 Project string = "github.com/yhyj/curator" // 项目地址 )
Variables ¶
var ( FgBlackText = color.FgBlack.Render // 前景色 - 黑色 FgWhiteText = color.FgWhite.Render // 前景色 - 白色 FgLightWhiteText = color.FgLightWhite.Render // 前景色 - 亮白色 FgGrayText = color.FgGray.Render // 前景色 - 灰色 FgRedText = color.FgRed.Render // 前景色 - 红色 FgLightRedText = color.FgLightRed.Render // 前景色 - 亮红色 FgGreenText = color.FgGreen.Render // 前景色 - 绿色 FgLightGreenText = color.FgLightGreen.Render // 前景色 - 亮绿色 FgYellowText = color.FgYellow.Render // 前景色 - 黄色 FgLightYellowText = color.FgLightYellow.Render // 前景色 - 亮黄色 FgBlueText = color.FgBlue.Render // 前景色 - 蓝色 FgLightBlueText = color.FgLightBlue.Render // 前景色 - 亮蓝色 FgMagentaText = color.FgMagenta.Render // 前景色 - 品红 FgLightMagentaText = color.FgLightMagenta.Render // 前景色 - 亮品红 FgCyanText = color.FgCyan.Render // 前景色 - 青色 FgLightCyanText = color.FgLightCyan.Render // 前景色 - 亮青色 BgBlackText = color.BgBlack.Render // 背景色 - 黑色 BgWhiteText = color.BgWhite.Render // 背景色 - 白色 BgLightWhiteText = color.BgLightWhite.Render // 背景色 - 亮白色 BgGrayText = color.BgGray.Render // 背景色 - 灰色 BgRedText = color.BgRed.Render // 背景色 - 红色 BgLightRedText = color.BgLightRed.Render // 背景色 - 亮红色 BgGreenText = color.BgGreen.Render // 背景色 - 绿色 BgLightGreenText = color.BgLightGreen.Render // 背景色 - 亮绿色 BgYellowText = color.BgYellow.Render // 背景色 - 黄色 BgLightYellowText = color.BgLightYellow.Render // 背景色 - 亮黄色 BgBlueText = color.BgBlue.Render // 背景色 - 蓝色 BgLightBlueText = color.BgLightBlue.Render // 背景色 - 亮蓝色 BgMagentaText = color.BgMagenta.Render // 背景色 - 品红 BgLightMagentaText = color.BgLightMagenta.Render // 背景色 - 亮品红 BgCyanText = color.BgCyan.Render // 背景色 - 青色 BgLightCyanText = color.BgLightCyan.Render // 背景色 - 亮青色 InfoText = color.Info.Render // Info 文本 NoteText = color.Note.Render // Note 文本 LightText = color.Light.Render // Light 文本 ErrorText = color.Error.Render // Error 文本 DangerText = color.Danger.Render // Danger 文本 NoticeText = color.Notice.Render // Notice 文本 SuccessText = color.Success.Render // Success 文本 CommentText = color.Comment.Render // Comment 文本 PrimaryText = color.Primary.Render // Primary 文本 WarnText = color.Warn.Render // Warn 文本 QuestionText = color.Question.Render // Question 文本 SecondaryText = color.Secondary.Render // Secondary 文本 )
var ( RunFlag = "🐙" // 运行状态符号 - 运行中 LatestFlag = "🌟" // 运行状态符号 - 已是最新 SuccessFlag = "✅" // 运行状态符号 - 成功 WarningFlag = "⚠️" // 运行状态符号 - 警告 ErrorFlag = "❌" // 运行状态符号 - 失败 )
var ( NiceFlag = "\u25CF" // 标识符号 - 代表已实现 MeanFlag = "\u25CB" // 标识符号 - 代表未实现 )
var ( CursorOnFlag = "👉" // 选择器符号 - 光标所在 CursorOffFlag = " " // 选择器符号 - 光标不在 SelectedFlag = "•" // 选择器符号 - 已选中 UnselectedFlag = " " // 选择器符号 - 已选中 SelectAllFlag = "⭐️" // 选择器符号 - 全选 )
var ( SeparatorBaseLength = 50 // 分隔符基础长度 Separator1st = "=" // 分隔符 - 1级 Separator2st = "-" // 分隔符 - 2级 Separator3st = "·" // 分隔符 - 3级 Indicator = "-->" // 分隔符 - 指示器 )
var ( BranchFlag = "🌿" // Git 符号 - 分支 SubmoduleFlag = "📦" // Git 符号 - 子模块 )
var ( JoinerIng = "├──" // 条目连接符号 - 中间条目 JoinerFinish = "└──" // 条目连接符号 - 最后条目 )
var ( MultiSelectTips = "Please select from the following %s (multi-select)\n" // 提示词 - 多选 SingleSelectTips = "Please select from the following %s (single-select)\n" // 提示词 - 单选 KeyTips = "Press '%s' to select, '%s' to run, '%s' to quit\n" // 提示词 - 按键 SelectAllTips = "Select All" // 提示词 - 全选 )
var ( GitCommitHash string = "Unknown" // Git 提交 Hash BuildTime string = "Unknown" // 编译时间 BuildBy string = "Unknown" // 编译者 )
var Arch = runtime.GOARCH // 系统架构
var (
ConfigFile = filepath.Join(configDir, programDir, configFile) // 配置文件路径
)
var DelayTime float32 = 0.01
默认延时
var (
ErrorInfoFlag = "•" // 身份符号 - 报错信息
)
var Language = GetLanguage() // 系统语言
var Notifier []string // 通知器
var (
OverWriteTips = "%s file already exists, do you want to overwrite it?" // 提示词 - 文件已存在是否覆写
)
var Platform = runtime.GOOS // 操作系统
var Sep = string(filepath.Separator) // 路径分隔符
var UserInfo, _ = GetUserInfoByName(UserName) // 用户信息
var UserName = func() string { if GetVariable("SUDO_USER") != "" { return GetVariable("SUDO_USER") } return GetVariable("USER") }()
用户名,当程序提权运行时,使用 SUDO_USER 变量获取提权前的用户名
var WaitSpinner = spinner.New(spinner.CharSets[11], 100*time.Millisecond) // 等待动画
Functions ¶
func AskUser ¶ added in v1.2.2
AskUser 询问用户
参数:
- question: 问题
- standardAnswers: 期望回答的切片(最后一个选项是默认值),例如 [y, N] 代表期望输入 y 或 n,最后一个选项是默认值(大写为了提示用户其为默认值)
返回:
- 回答
- 错误信息
func CheckoutBranch ¶ added in v1.1.0
CheckoutBranch 切换到指定分支
参数:
- worktree: 存储库的 git 工作树对象
- branchName: 分支名
返回:
- 错误信息
func CloneRepoViaSSH ¶
func CloneRepoViaSSH(repoPath, URL, username, repoName string, publicKeys *ssh.PublicKeys) (*git.Repository, error)
CloneRepoViaSSH 使用 SSH 协议将远端存储库克隆到本地
参数:
- repoPath: 本地存储库路径
- URL: 远端存储库地址(仅包括主地址,例如:github.com)
- username: 远端存储库用户名
- repoName: 远端存储库名称
- publicKeys: ssh 公钥
返回:
- 本地存储库对象
- 错误信息
func CreateLocalBranch ¶
CreateLocalBranch 本地存储库根据远程分支创建本地分支
- 远程分支 refs/remotes/${remote}/<remoteBranchName>
- 本地分支 refs/heads/<localBranchName>
参数:
- repo: 本地存储库对象
- branchs: 远程分支信息
返回:
- 错误信息切片
func GetDefaultBranchName ¶ added in v1.1.0
func GetDefaultBranchName(repo *git.Repository, publicKeys *ssh.PublicKeys) (string, []string)
GetDefaultBranchName 获取默认分支名
参数:
- repo: 本地存储库对象
- publicKeys: ssh 公钥
返回:
- 默认分支名
- 错误信息切片
func GetLanguage ¶ added in v1.1.4
func GetLanguage() string
GetLanguage 获取系统语言
返回:
- 系统语言,目前仅支持 zh 或 en
func GetLocalRepoSubmoduleInfo ¶
func GetLocalRepoSubmoduleInfo(worktree *git.Worktree) (git.Submodules, error)
GetLocalRepoSubmoduleInfo 获取本地存储库子模块信息
参数:
- worktree: 存储库的 git 工作树对象
返回:
- 子模块信息
- 错误信息
func GetPublicKeysByGit ¶
func GetPublicKeysByGit(pemFile string) (*ssh.PublicKeys, error)
GetPublicKeysByGit 使用 go-git 自带的方法获取 ssh 公钥
参数:
- pemFile: 私钥文件路径
返回:
- ssh 公钥
- 错误信息
func GetPublicKeysBySSH ¶
func GetPublicKeysBySSH(pemFile string) (transport.AuthMethod, error)
GetPublicKeysBySSH 使用 crypto/ssh 模块获取 ssh 公钥
参数:
- pemFile: 私钥文件路径
返回:
- ssh 公钥
- 错误信息
func GetRepoBranchInfo ¶
func GetRepoBranchInfo(worktree *git.Worktree, isSubmodule bool, submoduleName string, which string) ([]fs.FileInfo, error)
GetRepoBranchInfo 获取本地存储库的[本地|远程]分支信息
参数:
- worktree: 存储库的 git 工作树对象
- isSubmodule: 该存储库是否作为子模块
- submoduleName: 当该存储库作为子模块时需要存储库名
- which: 'local' or 'remote',指定要获取的是本地分支还是远程分支
返回:
- 分支信息
- 错误信息
func GetRepoHeadRef ¶ added in v1.0.1
GetRepoHeadRef 获取本地存储库对象 HEAD 指向的引用
参数:
- repo: 本地存储库对象
返回:
- HEAD 引用
func GetTomlConfig ¶ added in v0.13.1
GetTomlConfig 读取 toml 配置文件
参数:
- filePath: toml 配置文件路径
返回:
- toml 配置树
- 错误信息
func IsLocalRepo ¶
IsLocalRepo 检测是不是本地存储库,是的话返回本地存储库对象及其 HEAD 指向的引用
参数:
- path: 本地存储库路径
返回:
- 是否本地存储库
- 本地存储库对象
- HEAD 引用
func ModifyGitConfig ¶ added in v0.13.1
ModifyGitConfig 修改 .git/config 文件,确保 [remote "origin"] 的 url 字段是以 'git@' 开头,并添加两行 pushurl
参数:
- configFile: .git/config 文件路径
- originalLink: 需要替换的原始链接
- newLink: 替换上去的新链接
返回:
- 错误信息
func MultipleSelectionFilter ¶ added in v0.12.7
MultipleSelectionFilter 多选筛选器,接受一个可选项切片,返回一个已选项切片,允许全选
参数:
- choices: 可选项
- highlights: 高亮项
- negatives: 希望选择器在运行后输出的信息
返回:
- 已选项
- 错误信息
func PullRepo ¶ added in v0.11.0
func PullRepo(repo *git.Repository, publicKeys *ssh.PublicKeys) (worktree *git.Worktree, leftCommit, rightCommit *object.Commit, err error)
PullRepo 拉取远端存储库的更改到本地
参数:
- repo: 本地存储库对象
返回:
- 存储库的 git 工作树对象
- 拉取前本地最新 Commit 的 Hash 值
- 拉取后本地最新 Commit 的 Hash 值
- 错误信息
func RunCommandToBuffer ¶ added in v1.3.0
RunCommandToBuffer 运行命令,将命令的 Stdout 和 Stderr 定向到字节缓冲区
- 命令的 Stdout 和 Stderr 末尾自带的换行符已去除
参数:
- command: 命令
- args: 命令参数(每个以空格分隔的参数作为切片的一个元素)
返回:
- Stdout 缓冲区内容
- Stderr 缓冲区内容
- 错误信息
func RunCommandToOS ¶ added in v1.3.0
RunCommandToOS 运行命令,将命令的 Stdin, Stdout 和 Stderr 定向到系统标准输入、标准输出和标准错误
参数:
- command: 命令
- args: 命令参数(每个以空格分隔的参数作为切片的一个元素)
返回:
- 错误信息
func WriteTomlConfig ¶ added in v0.13.1
WriteTomlConfig 写入 toml 配置文件
参数:
- filePath: toml 配置文件路径
返回:
- 写入的字节数
- 错误信息
Types ¶
type Config ¶ added in v0.13.1
type Config struct { Git GitConfig `toml:"git"` Script ScriptConfig `toml:"script"` SSH SSHConfig `toml:"ssh"` Storage StorageConfig `toml:"storage"` }
用于转换 Toml 配置树的结构体
func LoadConfigToStruct ¶ added in v0.13.1
LoadConfigToStruct 将 Toml 配置树加载到结构体
参数:
- configTree: 解析 toml 配置文件得到的配置树
返回:
- 结构体
- 错误信息
type ScriptConfig ¶ added in v0.13.1
type ScriptConfig struct {
RunQueue []string `toml:"run_queue"`
}
type StorageConfig ¶ added in v0.13.1
type StorageConfig struct {
Path string `toml:"path"`
}