//go:build mage // +build mage package main import ( "flag" "os" "github.com/openimsdk/gomake/mageutil" ) var Default = Build var Aliases = map[string]any{ "buildcc": BuildWithCustomConfig, "startcc": StartWithCustomConfig, } var ( customRootDir = "." // workDir in mage, default is "./"(project root directory) customSrcDir = "cmd" // source code directory, default is "cmd" customOutputDir = "_output" // output directory, default is "_output" customConfigDir = "config" // configuration directory, default is "config" customToolsDir = "tools" // tools source code directory, default is "tools" ) // Build support specifical binary build. // // Example: `mage build openim-api openim-rpc-user seq` func Build() { flag.Parse() bin := flag.Args() if len(bin) != 0 { bin = bin[1:] } mageutil.Build(bin, nil) } func BuildWithCustomConfig() { flag.Parse() bin := flag.Args() if len(bin) != 0 { bin = bin[1:] } config := &mageutil.PathOptions{ RootDir: &customRootDir, OutputDir: &customOutputDir, SrcDir: &customSrcDir, ToolsDir: &customToolsDir, } mageutil.Build(bin, config) } func Start() { mageutil.InitForSSC() err := setMaxOpenFiles() if err != nil { mageutil.PrintRed("setMaxOpenFiles failed " + err.Error()) os.Exit(1) } flag.Parse() bin := flag.Args() if len(bin) != 0 { bin = bin[1:] } mageutil.StartToolsAndServices(bin, nil) } func StartWithCustomConfig() { mageutil.InitForSSC() err := setMaxOpenFiles() if err != nil { mageutil.PrintRed("setMaxOpenFiles failed " + err.Error()) os.Exit(1) } flag.Parse() bin := flag.Args() if len(bin) != 0 { bin = bin[1:] } config := &mageutil.PathOptions{ RootDir: &customRootDir, OutputDir: &customOutputDir, ConfigDir: &customConfigDir, } mageutil.StartToolsAndServices(bin, config) } func Stop() { mageutil.StopAndCheckBinaries() } func Check() { mageutil.CheckAndReportBinariesStatus() }