-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
70 lines (62 loc) · 1.7 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package main
import (
"errors"
"fmt"
"log"
"runtime"
"github.com/chain5j/chain5j-pkg/cli"
"github.com/chain5j/chain5j-pkg/color"
"github.com/chain5j/logger"
"github.com/chain5j/logger/zap"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
"github.com/spf13/viper"
"github.com/xwc1125/apisix-go/cmd"
"github.com/xwc1125/apisix-go/internal/pkg/version"
"github.com/xwc1125/apisix-go/params"
)
func main() {
if version.Build("App: " + params.App()) {
return
}
cpuNum := runtime.NumCPU() // 获得当前设备的cpu核心数
fmt.Println("CPU核心数:", cpuNum)
runtime.GOMAXPROCS(cpuNum) // 设置需要用到的cpu数量
initCli()
}
// 初始化命令行
func initCli() *cli.Cli {
rootCli := cli.NewCliWithViper(&cli.AppInfo{
App: params.App(),
Version: params.Version(),
Welcome: `欢迎使用 ` + color.Green(params.App()) + ` ,可以使用 ` + color.Red(`-h`) + ` 查看命令`,
}, viper.GetViper())
rootCli.RootCmd().Args = func(cmd *cobra.Command, args []string) error {
if len(args) < 1 {
fmt.Println(`欢迎使用 ` + color.Green(params.App()) + ` 可以使用 ` + color.Red(`-h`) + ` 查看命令`)
return errors.New(color.Red("requires at least one arg"))
}
return nil
}
err := rootCli.InitFlags(true, func(rootFlags *pflag.FlagSet) {
}, func(viper *viper.Viper) {
// 当config不为空时,才启用
logViper := viper.Sub("log")
logConfig := new(logger.LogConfig)
err := logViper.Unmarshal(&logConfig)
if err != nil {
panic(err)
}
zap.InitWithConfig(logConfig)
})
if err != nil {
log.Print("initCli", "err", err)
return nil
}
rootCli.AddCommands(cmd.NewServerCmd(rootCli))
err = rootCli.Execute()
if err != nil {
log.Fatal(err)
}
return rootCli
}