package main import ( _"net/http" _ "net/http/pprof" "strconv" "strings" //"flag" //"log" "os" "fmt" "FRMS/internal/pkg/logging" "FRMS/internal/pkg/config" "FRMS/internal/pkg/server" ) type coordinator interface { Start() } func NewCoordinator(ch chan error) coordinator { return server.NewCentralCoordinator(ch) } func LoadConfig(fname string) Config { config.Load(fname) return config.LoadConfig() } type Config interface { UpdatePort(string, int) error } func main() { // lets get this bread // go func() { // fmt.Println(http.ListenAndServe("localhost:6060",nil)) // }() conf := LoadConfig("server") ch := make(chan error) // checking env envVars := os.Environ() for _, envString := range envVars { // looping over set ports initSplt := strings.Split(envString,"=") key := initSplt[0] val := initSplt[1] if strings.Contains(key,"PORT") { // parsing out correct port to update splt := strings.Split(key,"_") // LIS_PORT -> LIS, PORT portName := strings.ToLower(splt[0]) // LIS -> lis port, err := strconv.Atoi(val) if err != nil { panic(err) } if err := conf.UpdatePort(portName,port); err != nil { panic(err) } } } //fmt.Printf("Listening on %v\n", lport) c := NewCoordinator(ch) go c.Start() fmt.Println("Server Active!") logging.Debug(logging.DStart, "CCO 01 Server started") err := <-ch // blocking to wait for any errors and keep alive otherwise panic(err) }