diff --git a/comm/gameconfig.go b/comm/gameconfig.go index 91c8999ee..3f482c848 100644 --- a/comm/gameconfig.go +++ b/comm/gameconfig.go @@ -3,6 +3,9 @@ package comm //游戏区服配置 type GameConfig struct { AreaId string //区服id 每个区服id都必须是唯一 + AreaName string //区服名 + OpenServiceTime string //开服时间 + Channel string //渠道 Loglevel int32 //日志文件输出级别 MaxAgeTime int32 //日志文件保存时长 ConsulAddr []string //区服Consul diff --git a/services/cmd/main.go b/services/cmd/main.go index ad2cb2e21..4d89fef79 100644 --- a/services/cmd/main.go +++ b/services/cmd/main.go @@ -11,6 +11,7 @@ import ( "net" "os" "os/exec" + "path/filepath" "strconv" "strings" "time" @@ -28,6 +29,13 @@ var ( crosspath string //服务列表下标 sid string //服务列表下标 ) +var confCmd = &cobra.Command{ + Use: "conf", + Short: "生成配置", + Run: func(cmd *cobra.Command, args []string) { + conf() + }, +} var startCmd = &cobra.Command{ Use: "start", Short: "启动程序", @@ -42,6 +50,14 @@ var stopCmd = &cobra.Command{ stop() }, } +var restart = &cobra.Command{ + Use: "restart", + Short: "重启服务", + Run: func(cmd *cobra.Command, args []string) { + stop() + start() + }, +} func emptyRun(*cobra.Command, []string) {} @@ -57,7 +73,7 @@ func init() { RootCmd.PersistentFlags().StringVarP(&gmpath, "gm", "g", "./gm.json", "游戏区服配置") RootCmd.PersistentFlags().StringVarP(&crosspath, "cross", "c", "./cross.json", "游戏跨服配置") RootCmd.PersistentFlags().StringVarP(&sid, "sid", "i", "", "区服id") - RootCmd.AddCommand(startCmd, stopCmd) + RootCmd.AddCommand(confCmd, startCmd, stopCmd, restart) } func main() { @@ -81,6 +97,26 @@ func Execute() { } } +//生成配置 +func conf() { + if config, err := readergmconf(gmpath); err != nil { + log.Error("读取区服配置失败!", log.Field{Key: "err", Value: err}) + } else { + if ss, err := rederServiceSttings(config); err != nil { + log.Error("转换服务配置异常!", log.Field{Key: "err", Value: err}) + } else { + for _, v := range ss { + if sid == "" || fmt.Sprintf("%s_%s", v.Tag, sid) == v.Id { + if err = writeServiceConfig(fmt.Sprintf("./conf/%s.yaml", v.Id), v); err != nil { + log.Error("写入配置文件失败!", log.Field{Key: "err", Value: err}) + return + } + } + } + } + } +} + //启动程序 func start() { if config, err := readergmconf(gmpath); err != nil { @@ -348,6 +384,9 @@ func stopService(sseting *core.ServiceSttings) (err error) { //写入服务配置文件 func writeServiceConfig(filename string, sseting *core.ServiceSttings) (err error) { var data []byte + if err = os.MkdirAll(filepath.Dir(filename), 0755); err != nil { + return + } if data, err = yaml.Marshal(sseting); err != nil { return } else {