Skip to content

Commit f7c46e6

Browse files
committed
纯工具模式完成
1 parent f37f691 commit f7c46e6

File tree

5 files changed

+50
-42
lines changed

5 files changed

+50
-42
lines changed

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,13 @@
3030

3131
具备 Web 框架的基础能力
3232

33+
- go 1.21+
34+
3335
- gin v1.9.1
34-
- middleware
36+
- gorm v1.25.9
3537
- swagger
36-
- vue
38+
- vue3
39+
- ,,,
3740

3841
## 服务提供者
3942

app/console/kernel.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,42 @@ package console
22

33
import (
44
"github.com/chenbihao/gob/app/console/command/demo"
5+
"github.com/chenbihao/gob/framework"
56
"github.com/chenbihao/gob/framework/cobra"
7+
"github.com/chenbihao/gob/framework/command"
68
)
79

10+
// RunRootCommand 初始化根Command并运行
11+
func RunRootCommand(container framework.Container) error {
12+
// 根Command
13+
var rootCmd = &cobra.Command{
14+
// 定义根命令的关键字
15+
Use: "gob",
16+
// 简短介绍
17+
Short: "gob 命令",
18+
// 根命令的详细介绍
19+
Long: "gob 框架提供的命令行工具,使用这个命令行工具能很方便执行框架自带命令,也能很方便编写业务命令",
20+
// 根命令的执行函数
21+
RunE: func(cmd *cobra.Command, args []string) error {
22+
cmd.InitDefaultHelpFlag()
23+
return cmd.Help()
24+
},
25+
// 不需要出现cobra默认的completion子命令
26+
CompletionOptions: cobra.CompletionOptions{DisableDefaultCmd: true},
27+
}
28+
29+
// 为根Command设置服务容器
30+
rootCmd.SetContainer(container)
31+
32+
// 绑定框架的命令
33+
command.AddKernelCommands(rootCmd)
34+
// 绑定业务的命令
35+
AddAppCommand(rootCmd)
36+
37+
// 执行RootCommand
38+
return rootCmd.Execute()
39+
}
40+
841
// 绑定业务的命令(业务定义的命令我们使用 `app/console/kernel.go` 中的 `AddAppCommand`进行挂载)
942
func AddAppCommand(rootCmd *cobra.Command) {
1043
// demo 例子

app/http/kernel.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func NewHttpEngine(container framework.Container) (*gin.Engine, error) {
1515
// 默认启动一个 Web 引擎 (Default 包含 Logger and Recovery)
1616
r := gin.Default()
1717

18-
// 设置容器
18+
// 设置框架容器
1919
r.SetContainer(container)
2020

2121
// 业务绑定路由操作

framework/command/kernel.go

Lines changed: 9 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,29 @@
11
package command
22

33
import (
4-
"github.com/chenbihao/gob/app/console"
5-
"github.com/chenbihao/gob/framework"
64
"github.com/chenbihao/gob/framework/cobra"
75
"github.com/chenbihao/gob/framework/command/model"
86
"github.com/chenbihao/gob/framework/contract"
97
"github.com/robfig/cron/v3"
108
)
119

12-
// RunRootCommand 初始化根Command并运行
13-
func RunRootCommand(container framework.Container) error {
14-
// 根Command
15-
var rootCmd = &cobra.Command{
16-
// 定义根命令的关键字
17-
Use: "gob",
18-
// 简短介绍
19-
Short: "gob 命令",
20-
// 根命令的详细介绍
21-
Long: "gob 框架提供的命令行工具,使用这个命令行工具能很方便执行框架自带命令,也能很方便编写业务命令",
22-
// 根命令的执行函数
23-
RunE: func(cmd *cobra.Command, args []string) error {
24-
cmd.InitDefaultHelpFlag()
25-
return cmd.Help()
26-
},
27-
// 不需要出现cobra默认的completion子命令
28-
CompletionOptions: cobra.CompletionOptions{DisableDefaultCmd: true},
29-
}
30-
31-
// 为根Command设置服务容器
32-
rootCmd.SetContainer(container)
33-
34-
// 绑定框架的命令
35-
if container.MustMake(contract.AppKey).(contract.App).IsToolMode() {
36-
AddKernelToolCommands(rootCmd)
10+
// AddKernelCommands will add all command/* to root command
11+
func AddKernelCommands(root *cobra.Command) {
12+
if root.GetContainer().MustMake(contract.AppKey).(contract.App).IsToolMode() {
13+
AddKernelOnlyToolCommands(root)
3714
} else {
38-
AddKernelCommands(rootCmd)
39-
// 绑定业务的命令
40-
console.AddAppCommand(rootCmd)
15+
AddKernelAllCommands(root)
4116
}
42-
43-
// 执行RootCommand
44-
return rootCmd.Execute()
4517
}
4618

47-
// AddKernelToolCommands will add all command/* to root command
48-
func AddKernelToolCommands(root *cobra.Command) {
19+
// AddKernelToolCommands 添加 纯工具模式支持的命令到 root (go install 时运行的全局工具命令,尚未适配)
20+
func AddKernelOnlyToolCommands(root *cobra.Command) {
4921
root.AddCommand(initNewCommand()) // 挂载 new 命令
5022
root.AddCommand(initVersionCommand()) // 挂载 version 命令
5123
}
5224

53-
// AddKernelCommands will add all command/* to root command
54-
func AddKernelCommands(root *cobra.Command) {
25+
// AddKernelToolCommands 添加 command/* root
26+
func AddKernelAllCommands(root *cobra.Command) {
5527
InitCronCommands(root)
5628
root.AddCommand(initAppCommand()) // 挂载 app 命令
5729
root.AddCommand(initEnvCommand()) // 挂载 env 命令

main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package main
22

33
import (
4+
"github.com/chenbihao/gob/app/console"
45
"github.com/chenbihao/gob/app/http"
56
"github.com/chenbihao/gob/framework"
6-
"github.com/chenbihao/gob/framework/command"
77
"github.com/chenbihao/gob/framework/provider/app"
88
"github.com/chenbihao/gob/framework/provider/cache"
99
"github.com/chenbihao/gob/framework/provider/config"
@@ -42,5 +42,5 @@ func main() {
4242
_ = container.Bind(&kernel.KernelProvider{HttpEngine: engine})
4343
}
4444
// 运行root命令
45-
_ = command.RunRootCommand(container)
45+
_ = console.RunRootCommand(container)
4646
}

0 commit comments

Comments
 (0)