package main import ( "fmt" "log" "os" "os/signal" "syscall" "th7/config" "th7/core" "th7/db" "th7/db/logger" "th7/pcb" "th7/ports" "th7/web" ) 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) config, err := config.Load() if err != nil { log.Fatalf("Error loading config: %v", err) } fmt.Println(config) pcbPort, err = pcb.NewAdapter(config.Board.Led) if err != nil { log.Fatalf("Fatal error: %v\n", err) } defer pcbPort.Deinit() dbPort, err = db.NewAdapter(config.DB) if err != nil { log.Fatalf("Fatal error: %v\n", err) } defer dbPort.Close() corePort, err = core.NewAdapter(pcbPort, config) if err != nil { log.Fatalf("Error starting TH7 Adapter: %v\n", err) } logger := logger.NewLogger(corePort, dbPort, config.Board.Logfreq) defer logger.Stop() webPort = web.NewGinAdapter(corePort) go webPort.Run() sig := <-kill log.Printf("Caught signal %v", sig) }