gitlab-go/main.go

130 lines
3.9 KiB
Go
Raw Normal View History

package main
import (
"fmt"
"github.com/xuxiaowei-com-cn/git-go/buildinfo"
"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"
"github.com/xuxiaowei-com-cn/gitlab-go/container_registry"
"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"
"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"
"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"
"gopkg.in/yaml.v3"
"log"
"os"
"github.com/urfave/cli/v2"
)
const (
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"
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"
)
var (
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
CiPipelineId string // 流水线ID8754
CiJobId string // 作业ID14468
)
2023-10-01 22:43:51 +08:00
func init() {
if GitVersion == "" {
GitVersion = "dev"
}
}
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,
Commands: []*cli.Command{
access_requests.AccessRequests(),
2023-10-09 12:51:18 +08:00
boards.Boards(),
container_registry.ContainerRegistry(),
instance_level_ci_variables.InstanceLevelCiVariables(),
2023-10-09 13:22:19 +08:00
issues.Issues(),
job_artifacts.JobsArtifacts(),
jobs.Jobs(),
pipelines.Pipelines(),
projects.Projects(),
mix.Delete(),
},
}
if err := app.Run(os.Args); err != nil {
log.Fatal(err)
}
}
func versionInfo() string {
var info = buildinfo.Version{
Name: Name,
Description: Description,
URL: URL,
BugReportUrl: BugReportUrl,
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,
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
}