package main import ( "git.timovolkmann.de/gyrogpsc/core" "git.timovolkmann.de/gyrogpsc/database" "git.timovolkmann.de/gyrogpsc/web" "github.com/spf13/viper" "log" "time" ) func main() { conf := configurationFromFile() repo := database.NewRepository(conf) disp := core.NewDispatcher() service := core.TrackingService(repo, disp, conf) go func() { service.NewTracking(core.TCP, core.SERIAL) time.Sleep(5 * time.Second) service.StartRecord() time.Sleep(15 * time.Second) service.StopRecord() }() web.CreateServer(service, disp, conf) } func configurationFromFile() *core.Configuration { viper.SetDefault("collectors.port_tcp", ":3010") viper.SetDefault("collectors.port_serial", "/dev/tty.usbmodem14201") viper.SetDefault("webserver.port", ":3011") viper.SetDefault("pipeline.publishIntervalMs", 50) viper.SetDefault("pipeline.syncUpdateIntervalMs", 494) viper.SetConfigName("gpsconfig") // name of config file (without extension) viper.SetConfigType("yaml") viper.AddConfigPath(".") viper.AddConfigPath("./../../") if err := viper.ReadInConfig(); err != nil { log.Println("couldn't find config file. using standard configuration") } log.Println(viper.AllKeys()) log.Println(viper.AllSettings()) c := core.Configuration{} if err := viper.Unmarshal(&c); err != nil { log.Println("couldn't load config...") log.Println(err) } log.Println(c) return &c }