cmd

package
v1.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 24, 2025 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Make = gcmd.Command{
		Name:  "make",
		Usage: "make",
		Brief: "创建模块文件",
		Arguments: []gcmd.Argument{
			{Name: "model", Short: "m", Brief: "模块名"},
			{Name: "id", Short: "i", Brief: "活动id"},
			{Name: "name", Short: "n", Brief: "服务文件名"},
		},
		Examples: "make -m=act -id=1:     创建活动1的接口与服务文件 \n" +
			"make -m=logic -n=test: 创建test的服务文件",
		Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {

			//g.Dump(parser.GetOptAll(), parser.GetArgAll())
			//return
			var model = parser.GetOpt("model").String()

			this := cMake{}
			switch model {
			case "act":
				var id = parser.GetOpt("id").Int()
				if id == 0 {
					return
				}
				err = this.Act(id)
			case "logic":
				var name = parser.GetOpt("name").String()
				if name == "" {
					return
				}
				err = this.Logic(name)
			}

			return
		},
	}
)
View Source
var (
	Update = gcmd.Command{
		Name:  "update",
		Usage: "update",
		Brief: "更新系统",
		Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {

			g.Log().Info(ctx, "准备上传更新文件")

			g.Cfg("hack").GetAdapter().(*gcfg.AdapterFile).SetFileName("hack/config.yaml")
			getFileName, err := g.Cfg("hack").Get(ctx, "gfcli.build.name")
			Filename := getFileName.String()

			var list []*serverCfg
			serverList := g.Cfg().MustGet(ctx, "server_list")
			serverList.Scan(&list)

			if parser.GetOpt("a").IsNil() {
				var temp []*serverCfg
				for _, v := range list {
					if v.Prod == false {
						temp = append(temp, v)
					}
				}
				list = temp
			} else {
				g.Dump("升级", parser.GetOpt("a"))
			}

			g.Dump("需要更新的服务器", list)
			//获取上传链接
			var url = make(map[string]string)
			filename := "linux_amd64/" + Filename

			client := g.Client()
			client.SetTimeout(time.Minute)
			client.SetDiscovery(nil)

			for _, v := range list {
				address := v.Address
				if v.S3 == "" {
					v.S3 = "default"
				}

				if _, ok := url[v.S3]; !ok {
					url[v.S3], err = UploadS3(v.S3, filename)
					if err != nil {
						g.Log().Error(ctx, err)
						return
					}
				}

				g.Log().Debugf(ctx, "准备同步服务器:%v,url=%v", v.Name, address+"/callback/update")
				get, err := client.Post(ctx, address+"/callback/update", &UpdateReq{
					FileUrl: url[v.S3],
				})
				if err != nil {
					g.Log().Debugf(ctx, "切换代理进行上传:err=%v", err)
					get, err = client.Proxy("http://192.168.50.114:10808").
						Post(ctx, address+"/callback/update", &UpdateReq{
							FileUrl: url[v.S3],
						})
				}
				if err != nil {
					g.Log().Error(ctx, err)
				}
				defer get.Close()
				g.Log().Debugf(ctx, "同步服务器:%v,完成=%v", v.Name, address)
			}

			return
		},
	}
)

Functions

func UploadS3

func UploadS3(typ string, filename string) (res string, err error)

Types

type UpdateReq

type UpdateReq struct {
	File    *ghttp.UploadFile `json:"file" binding:"required" dc:"文件"`
	FileUrl string            `json:"file_url" dc:"文件地址"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL