Skip to content

Commit 3229e09

Browse files
committed
add version command
1 parent 35d8248 commit 3229e09

File tree

6 files changed

+178
-1
lines changed

6 files changed

+178
-1
lines changed

docs/.vuepress/config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ module.exports = {
4646
"model",
4747
"util",
4848
"todo",
49+
"version",
4950
],
5051
},
5152
],

docs/guide/version.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# 版本
2+
3+
hade 提供了查询当前版本和获取最新版本日志的命令
4+
5+
## 查询当前版本
6+
7+
使用命令 `hade version`
8+
9+
```
10+
➜ hade git:(main) ✗ ./hade version
11+
hade version: 1.0.3
12+
```
13+
14+
## 获取最新的版本
15+
16+
使用命令 `hade version list`
17+
18+
```
19+
➜ hade git:(main) ✗ ./hade version list
20+
===============前置条件检测===============
21+
hade源码从github.com中下载,正在检测到github.com的连接
22+
github.Rate{Limit:60, Remaining:29, Reset:github.Timestamp{2022-12-11 17:43:48 +0800 CST}}
23+
hade源码从github.com中下载,github.com的连接正常
24+
===============前置条件检测结束===============
25+
26+
最新的6个版本
27+
-v1.0.2
28+
发布时间:2022-12-11 08:57:37
29+
修改说明:
30+
创建1.0.2
31+
-v1.0.1
32+
发布时间:2021-12-28 08:22:58
33+
修改说明:
34+
1 增加了一个计划版本
35+
-v1.0.0
36+
发布时间:2021-11-21 18:02:00
37+
修改说明:
38+
create release
39+
-v0.0.3
40+
发布时间:2021-10-08 23:13:52
41+
修改说明:
42+
完善new命令
43+
-v0.0.2
44+
发布时间:2021-10-06 09:19:44
45+
修改说明:
46+
1 增加了环境变量设置
47+
2 增加了前后端一体化
48+
-v0.0.1
49+
发布时间:2021-10-06 09:20:28
50+
修改说明:
51+
第一版本
52+
53+
更多历史版本请参考 https://github.com/gohade/hade/releases
54+
```

framework/command/kernel.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ func AddKernelCommands(root *cobra.Command) {
4040
root.AddCommand(initDeployCommand())
4141
// model
4242
root.AddCommand(model.InitModelCommand())
43+
// version
44+
root.AddCommand(initVersionCommand())
4345
}
4446

4547
// InitCronCommands 初始化Cron相关的命令

framework/command/version.go

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
package command
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"github.com/AlecAivazis/survey/v2"
7+
"github.com/google/go-github/v39/github"
8+
"net/http"
9+
"net/url"
10+
"strings"
11+
12+
"github.com/gohade/hade/framework/cobra"
13+
"github.com/gohade/hade/framework/contract"
14+
)
15+
16+
// initEnvCommand 获取env相关的命令
17+
func initVersionCommand() *cobra.Command {
18+
versionCommand.AddCommand(versionListCommand)
19+
return versionCommand
20+
}
21+
22+
var versionCommand = &cobra.Command{
23+
Use: "version",
24+
Short: "当前hade的版本",
25+
Run: func(c *cobra.Command, args []string) {
26+
container := c.GetContainer()
27+
appService := container.MustMake(contract.AppKey).(contract.App)
28+
fmt.Println("hade version:", appService.Version())
29+
},
30+
}
31+
32+
var versionListCommand = &cobra.Command{
33+
Use: "list",
34+
Short: "获取最新的hade的版本",
35+
RunE: func(c *cobra.Command, args []string) error {
36+
// 检测到github的连接
37+
fmt.Println("===============前置条件检测===============")
38+
fmt.Println("hade源码从github.com中下载,正在检测到github.com的连接")
39+
var client *github.Client
40+
client = github.NewClient(nil)
41+
perPage := 10
42+
opts := &github.ListOptions{Page: 1, PerPage: perPage}
43+
releases, rsp, err := client.Repositories.ListReleases(context.Background(), "gohade", "hade", opts)
44+
fmt.Println(rsp.Rate.String())
45+
if err != nil {
46+
if _, ok := err.(*github.RateLimitError); ok {
47+
fmt.Println("错误提示:" + err.Error())
48+
fmt.Println("说明你的出口ip遇到github的调用限制,可以使用github.com帐号登录方式来增加调用次数")
49+
githubUserName := ""
50+
prompt := &survey.Input{
51+
Message: "请输入github帐号用户名:",
52+
}
53+
if err := survey.AskOne(prompt, &githubUserName); err != nil {
54+
fmt.Println("任务终止:" + err.Error())
55+
return nil
56+
}
57+
githubPassword := ""
58+
promptPwd := &survey.Password{
59+
Message: "请输入github帐号密码:",
60+
}
61+
if err := survey.AskOne(promptPwd, &githubPassword); err != nil {
62+
fmt.Println("任务终止:" + err.Error())
63+
return nil
64+
}
65+
66+
httpClient := &http.Client{
67+
Transport: &http.Transport{
68+
Proxy: func(req *http.Request) (*url.URL, error) {
69+
req.SetBasicAuth(githubUserName, githubPassword)
70+
return nil, nil
71+
},
72+
},
73+
}
74+
client = github.NewClient(httpClient)
75+
releases, rsp, err = client.Repositories.ListReleases(context.Background(), "gohade", "hade", opts)
76+
if err != nil {
77+
fmt.Println("错误提示:" + err.Error())
78+
fmt.Println("用户名密码错误,请重新开始")
79+
return nil
80+
}
81+
if len(releases) == 0 {
82+
fmt.Println("用户名密码错误,请重新开始")
83+
return nil
84+
}
85+
fmt.Println(rsp.Rate.String())
86+
} else {
87+
fmt.Println("github.com的连接异常:" + err.Error())
88+
return nil
89+
}
90+
}
91+
fmt.Println("hade源码从github.com中下载,github.com的连接正常")
92+
// 这里下面的client都是可用的了
93+
if rsp.LastPage != 0 {
94+
opts = &github.ListOptions{Page: rsp.LastPage, PerPage: perPage}
95+
releases, rsp, err = client.Repositories.ListReleases(context.Background(), "gohade", "hade", opts)
96+
if err != nil {
97+
fmt.Println("任务终止:" + err.Error())
98+
return nil
99+
}
100+
fmt.Println(rsp.Rate.String())
101+
}
102+
fmt.Println("===============前置条件检测结束===============")
103+
fmt.Printf("\n")
104+
fmt.Printf("最新的%v个版本\n", len(releases))
105+
for _, releaseTmp := range releases {
106+
fmt.Println("-" + releaseTmp.GetTagName())
107+
fmt.Println(" 发布时间:" + releaseTmp.GetPublishedAt().Format("2006-01-02 15:04:05"))
108+
fmt.Println(" 修改说明:")
109+
fmt.Println(" " + strings.ReplaceAll(releaseTmp.GetBody(), "\n", "\n "))
110+
}
111+
fmt.Printf("\n")
112+
113+
fmt.Printf("更多历史版本请参考 https://github.com/gohade/hade/releases\n")
114+
return nil
115+
},
116+
}

framework/provider/app/service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func (app HadeApp) AppID() string {
2525

2626
// Version 实现版本
2727
func (app HadeApp) Version() string {
28-
return "0.0.3"
28+
return HadeVersion
2929
}
3030

3131
// BaseFolder 表示基础目录,可以代表开发场景的目录,也可以代表运行时候的目录

framework/provider/app/version.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package app
2+
3+
// HadeVersion hade的版本
4+
const HadeVersion = "1.0.3"

0 commit comments

Comments
 (0)