package main import ( "fmt" "log" "os" "os/signal" "syscall" "th7/api" "th7/config" "th7/core" "th7/db" "th7/pcb" "th7/ports" "time" "github.com/fatih/color" ) func main() { var pcbPort ports.PCBPort var corePort ports.CorePort var dbPort ports.DBPort var apiPort ports.APIPort 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() color.Set(color.FgHiRed) fmt.Printf("Started on: %s\n", time.Now().Format(time.DateTime)) color.Unset() // if noweb is false and HTTP/REST API is enabled then start web service if !cfg.Board.NoWeb && cfg.API.Enabled { apiPort = api.NewGinAdapter(corePort, cfg) go apiPort.Run() color.Set(color.FgHiGreen) fmt.Printf("TH7 API is live on http://localhost:%d/\n", cfg.API.Port) color.Unset() } sig := <-kill log.Printf("Caught signal %v", sig) }