github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/cmd/server/main.go (about)

     1  package main
     2  
     3  import (
     4  	"flag"
     5  	"os"
     6  	"os/signal"
     7  	"syscall"
     8  
     9  	configUtils "github.com/easysoft/zendata/internal/pkg/config"
    10  	consts "github.com/easysoft/zendata/internal/pkg/const"
    11  	serverConfig "github.com/easysoft/zendata/internal/server/config"
    12  	"github.com/easysoft/zendata/internal/server/core/web"
    13  	serverConst "github.com/easysoft/zendata/internal/server/utils/const"
    14  	fileUtils "github.com/easysoft/zendata/pkg/utils/file"
    15  	i118Utils "github.com/easysoft/zendata/pkg/utils/i118"
    16  	logUtils "github.com/easysoft/zendata/pkg/utils/log"
    17  	"github.com/easysoft/zendata/pkg/utils/vari"
    18  	"github.com/fatih/color"
    19  )
    20  
    21  var (
    22  	flagSet *flag.FlagSet
    23  	uuid    = ""
    24  	root    string
    25  )
    26  
    27  func main() {
    28  	channel := make(chan os.Signal)
    29  	signal.Notify(channel, os.Interrupt, syscall.SIGTERM)
    30  	go func() {
    31  		<-channel
    32  		cleanup()
    33  		os.Exit(0)
    34  	}()
    35  
    36  	flagSet = flag.NewFlagSet("zd", flag.ContinueOnError)
    37  
    38  	flagSet.StringVar(&uuid, "uuid", "", "区分服务进程的唯一ID")
    39  
    40  	flagSet.IntVar(&vari.Port, "p", 0, "")
    41  	flagSet.IntVar(&vari.Port, "port", 0, "")
    42  	flagSet.StringVar(&root, "R", "", "")
    43  	flagSet.StringVar(&root, "root", "", "")
    44  	flagSet.BoolVar(&vari.Verbose, "verbose", false, "")
    45  
    46  	flagSet.Parse(os.Args[1:])
    47  
    48  	vari.GlobalVars.RunMode = consts.RunModeServer
    49  
    50  	configUtils.InitConfig(root)
    51  	vari.DB, _ = serverConfig.NewGormDB()
    52  
    53  	vari.AgentLogDir = vari.WorkDir + serverConst.AgentLogDir + consts.PthSep
    54  	err := fileUtils.MkDirIfNeeded(vari.AgentLogDir)
    55  	if err != nil {
    56  		logUtils.PrintToWithColor(i118Utils.I118Prt.Sprintf("perm_deny", vari.AgentLogDir), color.FgRed)
    57  		os.Exit(1)
    58  	}
    59  
    60  	if vari.Port == 0 {
    61  		vari.Port = consts.DefaultDataServicePort
    62  	}
    63  
    64  	webServer := web.Init()
    65  	if webServer == nil {
    66  		return
    67  	}
    68  
    69  	webServer.Run()
    70  }
    71  
    72  func init() {
    73  	cleanup()
    74  }
    75  
    76  func cleanup() {
    77  	color.Unset()
    78  }