package main import ( "fmt" "log" "os" "os/signal" "syscall" "th7/config" "th7/core" "th7/db" "th7/pcb" "th7/ports" "th7/web" "time" "github.com/fatih/color" ) func main() { var pcbPort ports.PCBPort var corePort ports.CorePort var dbPort ports.DBPort var webPort ports.WebPort var err error kill := make(chan os.Signal, 1) signal.Notify(kill, syscall.SIGTERM, syscall.SIGINT, syscall.SIGHUP, syscall.SIGQUIT) cfg, err := config.Load() if err != nil { log.Fatalf("Error loading config: %v", err) } pcbPort, err = pcb.NewAdapter(cfg) if err != nil { log.Fatalf("Fatal error: %v\n", err) } defer pcbPort.Deinit() corePort, err = core.NewAdapter(pcbPort, cfg) if err != nil { log.Fatalf("Error starting TH7 Adapter: %v\n", err) } dbPort, err = db.NewAdapter(corePort, cfg) if err != nil { log.Fatalf("Fatal error: %v\n", err) } defer dbPort.Close() // if noweb is false, then start web service if !cfg.Board.NoWeb { webPort = web.NewGinAdapter(corePort, cfg) go webPort.Run() } color.Set(color.FgHiRed) fmt.Printf("Started on: %s\n", time.Now().Format(time.DateTime)) color.Unset() if !cfg.Board.NoWeb { color.Set(color.FgHiGreen) fmt.Printf("TH7 web view is live on http://localhost:%d/\n", cfg.Board.Port) color.Unset() } sig := <-kill log.Printf("Caught signal %v", sig) }