package main import ( "fmt" _ "oc-workflow/routers" "os" oclib "cloud.o-forge.io/core/oc-lib" "cloud.o-forge.io/core/oc-lib/tools" beego "github.com/beego/beego/v2/server/web" "github.com/goraz/onion" "golang.org/x/mod/modfile" ) const hostname = "oc-workflow" const defaultConfigFile = "/etc/oc/conf.json" func main() { configFile := "" var o *onion.Onion l3 := onion.NewEnvLayerPrefix("_", "OCWORKFLOW_") l2, err := onion.NewFileLayer(defaultConfigFile, nil) if err == nil { configFile = defaultConfigFile } if configFile == "" || l2 == nil { o = onion.New(l3) } else { o = onion.New(l2, l3) } tools.SetConfig( o.GetStringDefault("MONGO_URL", "mongodb://127.0.0.1:27017"), o.GetStringDefault("MONGO_DATABASE", "DC_myDC"), o.GetStringDefault("NATS_URL", "nats://localhost:4222"), ) fmt.Println("Config file:", o.GetStringDefault("HOSTNAME", "localhost")) // Init OC with hostname and port for discovery purpose oclib.Init(hostname, o.GetStringDefault("HOSTNAME", "localhost"), o.GetStringDefault("PORT", "8088")) /* PATHS ARE REFERENCE FOR INNER SERVICE OF DISTANT OC * PATHS ARE USED TO CALL OTHER OC SERVICES * NAMES ARE CANONICAL NAMES OF THE SERVICES */ oclib.AddPath(oclib.LibDataEnum(oclib.BOOKING), o.GetStringDefault("BOOKING_URL", ":8092")) oclib.AddPath(oclib.LibDataEnum(oclib.PEER), o.GetStringDefault("PEER_URL", ":8093")) oclib.AddPath(oclib.LibDataEnum(oclib.WORKFLOW), o.GetStringDefault("WORKFLOW_URL", ":"+o.GetStringDefault("PORT", "8088"))) // Normal beego init //if beego.BConfig.RunMode == "dev" { beego.BConfig.WebConfig.DirectoryIndex = true beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger" //} beego.Run() } func GetModuleName() string { goModBytes, err := os.ReadFile("go.mod") if err != nil { return "prrr" } modName := modfile.ModulePath(goModBytes) fmt.Fprintf(os.Stdout, "modName=%+v\n", modName) return modName }