2022-01-06 23:34:37 +08:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"git.icechen.cn/pkg/wujian_develop_tool/config"
|
|
|
|
"git.icechen.cn/pkg/wujian_develop_tool/util"
|
|
|
|
"os"
|
|
|
|
|
|
|
|
"git.icechen.cn/pkg/wujian_develop_tool/template/service/deploy"
|
|
|
|
|
|
|
|
"git.icechen.cn/pkg/wujian_develop_tool/template/service/docker/golang"
|
|
|
|
|
|
|
|
"github.com/fatih/color"
|
|
|
|
|
|
|
|
_ "embed"
|
|
|
|
"github.com/urfave/cli/v2"
|
|
|
|
)
|
|
|
|
|
|
|
|
// ActionListService Service应用列表
|
|
|
|
func ActionListService(c *cli.Context) error {
|
|
|
|
if err := config.Init(c); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
color.Green("Service应用列表:")
|
|
|
|
for _, service := range config.Config.HasService {
|
|
|
|
color.Green("\t%s", service.Name)
|
|
|
|
color.Green("\t\t路径:\t%s", service.Root)
|
|
|
|
color.Green("\t\t类型:\t%s", service.Type)
|
|
|
|
color.Green("\t\t端口:\t%s", service.Port)
|
|
|
|
c := color.New(color.Bold, color.FgRed)
|
|
|
|
c.EnableColor()
|
|
|
|
_, err := c.Println(healthService(service))
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
fmt.Print("\n")
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// ActionNewService 创建Service应用
|
|
|
|
func ActionNewService(c *cli.Context) error {
|
|
|
|
if err := config.Init(c); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
appList := c.Args().Slice()
|
|
|
|
if len(appList) == 0 {
|
|
|
|
appName := ""
|
|
|
|
for {
|
2022-01-06 23:37:09 +08:00
|
|
|
appName = util.ReadLineWithMessage("请输入要创建的service名称: ")
|
2022-01-06 23:34:37 +08:00
|
|
|
if appName != "" {
|
|
|
|
break
|
|
|
|
} else {
|
|
|
|
color.Red("应用名称不能为空!")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
appList = append(appList, appName)
|
|
|
|
}
|
|
|
|
for _, newApp := range appList {
|
2022-01-06 23:37:09 +08:00
|
|
|
color.Green("正在创建[%s]Service应用...", newApp)
|
2022-01-06 23:34:37 +08:00
|
|
|
app := config.Config.Service.GetApp(newApp)
|
|
|
|
app = config.Service{
|
|
|
|
Name: newApp,
|
2022-01-06 23:37:09 +08:00
|
|
|
Root: "app/service/" + newApp,
|
2022-01-06 23:34:37 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
if util.ExistDir(app.Root) && !util.ReadBoolWithMessage(app.Root+"目录已存在,是否要覆盖app文件目录(y/n): ") {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
err := os.MkdirAll(app.Root, os.ModePerm)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
app.AliasName = util.ReadLineWithMessage("请输入应用的简短描述(别名): ")
|
|
|
|
for {
|
|
|
|
app.Type = util.ReadLineWithMessage("请输入应用的类型(默认golang): ")
|
|
|
|
if app.Type == "golang" || app.Type == "" {
|
|
|
|
app.Type = "golang"
|
|
|
|
break
|
|
|
|
} else {
|
|
|
|
color.Red("暂不支持: [%s]类型", app.Type)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for {
|
|
|
|
app.Port = util.ReadLineWithMessage("请输入应用暴露的端口: ")
|
|
|
|
if app.Port != "" {
|
|
|
|
break
|
|
|
|
} else {
|
|
|
|
color.Red("端口号不能为空!")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
err = deploy.GenDeploy(config.Config.Name, app)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
err = golang.GenDockerfile(newApp)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
err = config.Config.AppendService(app)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2022-01-06 23:37:09 +08:00
|
|
|
color.Green("[%s]Service应用创建成功!!!\n\n", newApp)
|
2022-01-06 23:34:37 +08:00
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// ActionFixService 修复Service应用
|
|
|
|
func ActionFixService(c *cli.Context) error {
|
|
|
|
color.Red("开发中...")
|
|
|
|
return nil
|
|
|
|
}
|