package main import ( "artNet/driver" "artNet/server" "flag" "fmt" "os" "github.com/gin-gonic/gin" ) const DriverName string = "ArtNetDriver" func main() { // cli flags port := flag.Uint("port-http", 8110, "http server listening port") cfgDir := flag.String("cfg", "./cfg", "config directory") workingDir := flag.String("workingDirectory", ".", "current working directory") debug := flag.Bool("debug", false, "debug logging") flag.Parse() //change working directory only if value is given if *workingDir != "." && *workingDir != "" { os.Chdir(*workingDir) } //initialize new ArtNet driver artNetDriver, err := driver.NewDriver(*cfgDir, DriverName, *debug) if err != nil { artNetDriver.Log.Error("main", "error initialize new artnet driver "+err.Error()) panic(err) } //initialize new server artNetDriver.Log.Debug("main", "initialize new server instance") s := server.NewServer() //set routes artNetDriver.Log.Debug("main", "setting routes") s.Routes.GET("/ws", artNetDriver.Websocket) s.Routes.GET("/buses/all", artNetDriver.GetAllBuses) s.Routes.POST("/buses/create", artNetDriver.CreateBus) s.Routes.POST("/buses/remove", artNetDriver.RemoveBus) s.Routes.POST("/buses/start", artNetDriver.Start) s.Routes.POST("/buses/stop", artNetDriver.Stop) s.Routes.GET("/", func(c *gin.Context) { c.String(200, "ArtNet Driver WebSocket Server is running!") }) artNetDriver.Log.Info("main", fmt.Sprintf("listen on %d", *port)) // start http server if err := s.ServeHttp(*port); err != nil { artNetDriver.Log.Error("main", "error http server "+err.Error()) panic(err) } }