2023-10-01 22:13:34 +08:00
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
2023-10-02 05:07:33 +08:00
|
|
|
|
"github.com/xuxiaowei-com-cn/git-go/buildinfo"
|
2023-10-08 13:39:59 +08:00
|
|
|
|
"github.com/xuxiaowei-com-cn/gitlab-go/access_requests"
|
2023-10-09 12:51:18 +08:00
|
|
|
|
"github.com/xuxiaowei-com-cn/gitlab-go/boards"
|
2023-10-15 20:11:24 +08:00
|
|
|
|
"github.com/xuxiaowei-com-cn/gitlab-go/container_registry"
|
2023-10-08 12:35:46 +08:00
|
|
|
|
"github.com/xuxiaowei-com-cn/gitlab-go/instance_level_ci_variables"
|
2023-10-09 13:22:19 +08:00
|
|
|
|
"github.com/xuxiaowei-com-cn/gitlab-go/issues"
|
2023-10-05 01:16:43 +08:00
|
|
|
|
"github.com/xuxiaowei-com-cn/gitlab-go/job_artifacts"
|
2023-10-05 00:41:53 +08:00
|
|
|
|
"github.com/xuxiaowei-com-cn/gitlab-go/jobs"
|
2023-10-26 16:41:40 +08:00
|
|
|
|
"github.com/xuxiaowei-com-cn/gitlab-go/mix"
|
2023-10-04 23:41:28 +08:00
|
|
|
|
"github.com/xuxiaowei-com-cn/gitlab-go/pipelines"
|
2023-10-04 23:10:40 +08:00
|
|
|
|
"github.com/xuxiaowei-com-cn/gitlab-go/projects"
|
2023-10-02 05:07:33 +08:00
|
|
|
|
"gopkg.in/yaml.v3"
|
2023-10-01 22:13:34 +08:00
|
|
|
|
"log"
|
|
|
|
|
"os"
|
|
|
|
|
|
|
|
|
|
"github.com/urfave/cli/v2"
|
|
|
|
|
)
|
|
|
|
|
|
2023-10-02 05:07:33 +08:00
|
|
|
|
const (
|
2023-10-02 05:14:35 +08:00
|
|
|
|
Name = "gitlab-go"
|
|
|
|
|
Description = "基于 Go 语言开发的 GitLab 命令行工具"
|
|
|
|
|
URL = "https://github.com/xuxiaowei-com-cn/gitlab-go.git"
|
|
|
|
|
BugReportUrl = "https://github.com/xuxiaowei-com-cn/gitlab-go/issues"
|
2023-10-02 05:07:33 +08:00
|
|
|
|
OrganizationName = "徐晓伟工作室"
|
|
|
|
|
OrganizationUrl = "http://xuxiaowei.com.cn"
|
|
|
|
|
OrganizationEmail = "xuxiaowei@xuxiaowei.com.cn"
|
2023-10-08 09:59:13 +08:00
|
|
|
|
Copyright = "徐晓伟工作室 <xuxiaowei@xuxiaowei.com.cn>"
|
|
|
|
|
Author = "徐晓伟"
|
|
|
|
|
Email = "xuxiaowei@xuxiaowei.com.cn"
|
2023-10-02 05:07:33 +08:00
|
|
|
|
)
|
|
|
|
|
|
2023-10-02 04:06:40 +08:00
|
|
|
|
var (
|
2023-10-02 05:07:33 +08:00
|
|
|
|
BuildDate string // 构建时间,如:2023-07-19T12:20:54Z
|
|
|
|
|
Compiler string // 编译器,如:gc
|
|
|
|
|
GitCommitBranch string // 提交分支名称
|
|
|
|
|
GitCommitSha string // 项目为其构建的提交修订 fa3d7990104d7c1f16943a67f11b154b71f6a132
|
|
|
|
|
GitCommitShortSha string // 项目为其构建的提交修订的前八个字符 fa3d7990
|
|
|
|
|
GitCommitTag string // 提交标签名称
|
|
|
|
|
GitCommitTimestamp string // ISO 8601 格式的提交时间戳,如:2023-10-02T00:29:17+08:00
|
|
|
|
|
GitTreeState string // clean
|
|
|
|
|
GitVersion string // git 版本号,如:v1.27.4
|
|
|
|
|
GoVersion string // go 版本号,如:go1.20.6
|
|
|
|
|
Major string // 主版本,如:1
|
|
|
|
|
Minor string // 次版本,如:27
|
|
|
|
|
Revision string // 修订版本,如:4
|
|
|
|
|
Platform string // 平台,如:linux/amd64
|
2023-11-01 19:09:09 +08:00
|
|
|
|
InstanceUrl string // 实例地址
|
2023-10-02 05:07:33 +08:00
|
|
|
|
CiPipelineId string // 流水线,如:ID8754
|
|
|
|
|
CiJobId string // 作业ID,如:14468
|
2023-10-02 04:06:40 +08:00
|
|
|
|
)
|
2023-10-01 22:43:51 +08:00
|
|
|
|
|
2023-10-02 05:07:33 +08:00
|
|
|
|
func init() {
|
|
|
|
|
if GitVersion == "" {
|
|
|
|
|
GitVersion = "dev"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-10-01 22:13:34 +08:00
|
|
|
|
func main() {
|
|
|
|
|
app := &cli.App{
|
2023-10-08 09:59:13 +08:00
|
|
|
|
Name: Name,
|
|
|
|
|
Version: versionInfo(),
|
|
|
|
|
Authors: []*cli.Author{{Name: Author, Email: Email}},
|
|
|
|
|
Usage: Description,
|
|
|
|
|
Copyright: Copyright,
|
2023-10-04 22:26:06 +08:00
|
|
|
|
Commands: []*cli.Command{
|
2023-10-08 13:39:59 +08:00
|
|
|
|
access_requests.AccessRequests(),
|
2023-10-09 12:51:18 +08:00
|
|
|
|
boards.Boards(),
|
2023-10-15 20:11:24 +08:00
|
|
|
|
container_registry.ContainerRegistry(),
|
2023-10-08 12:35:46 +08:00
|
|
|
|
instance_level_ci_variables.InstanceLevelCiVariables(),
|
2023-10-09 13:22:19 +08:00
|
|
|
|
issues.Issues(),
|
2023-10-08 13:39:59 +08:00
|
|
|
|
job_artifacts.JobsArtifacts(),
|
|
|
|
|
jobs.Jobs(),
|
|
|
|
|
pipelines.Pipelines(),
|
|
|
|
|
projects.Projects(),
|
2023-10-26 16:41:40 +08:00
|
|
|
|
mix.Delete(),
|
2023-10-01 22:13:34 +08:00
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := app.Run(os.Args); err != nil {
|
|
|
|
|
log.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-10-02 05:07:33 +08:00
|
|
|
|
|
|
|
|
|
func versionInfo() string {
|
|
|
|
|
var info = buildinfo.Version{
|
2023-10-02 05:14:35 +08:00
|
|
|
|
Name: Name,
|
|
|
|
|
Description: Description,
|
|
|
|
|
URL: URL,
|
|
|
|
|
BugReportUrl: BugReportUrl,
|
2023-10-02 05:07:33 +08:00
|
|
|
|
BuildVersion: buildinfo.BuildVersion{
|
|
|
|
|
BuildDate: BuildDate,
|
|
|
|
|
Compiler: Compiler,
|
|
|
|
|
GitCommitSha: GitCommitSha,
|
|
|
|
|
GitCommitShortSha: GitCommitShortSha,
|
|
|
|
|
GitCommitTag: GitCommitTag,
|
|
|
|
|
GitCommitTimestamp: GitCommitTimestamp,
|
|
|
|
|
GitCommitBranch: GitCommitBranch,
|
|
|
|
|
GitTreeState: GitTreeState,
|
|
|
|
|
GitVersion: GitVersion,
|
|
|
|
|
GoVersion: GoVersion,
|
|
|
|
|
Major: Major,
|
|
|
|
|
Minor: Minor,
|
|
|
|
|
Revision: Revision,
|
|
|
|
|
Platform: Platform,
|
2023-11-01 19:09:09 +08:00
|
|
|
|
InstanceUrl: InstanceUrl,
|
2023-10-02 05:07:33 +08:00
|
|
|
|
CiPipelineId: CiPipelineId,
|
|
|
|
|
CiJobId: CiJobId,
|
|
|
|
|
},
|
|
|
|
|
Organization: buildinfo.Organization{
|
|
|
|
|
Name: OrganizationName,
|
|
|
|
|
Url: OrganizationUrl,
|
|
|
|
|
Email: OrganizationEmail,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if len(os.Args) > 1 && os.Args[1] == "--version" {
|
|
|
|
|
yamlData, err := yaml.Marshal(info)
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("版本信息无法转换为 YAML 格式:", err)
|
|
|
|
|
return ""
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return string(yamlData)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return info.BuildVersion.GitVersion
|
|
|
|
|
}
|