ref: master
./main.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
// SPDX-FileCopyrightText: Adam Evyčędo // // SPDX-License-Identifier: AGPL-3.0-or-later package main import ( "apiote.xyz/p/szczanieckiej/config" "apiote.xyz/p/szczanieckiej/server" "apiote.xyz/p/szczanieckiej/traffic" "context" "embed" "fmt" "log" "os" "os/signal" "syscall" ) //go:embed translations var feedTranslations embed.FS func main() { if len(os.Args) == 1 { fmt.Println("szczanieckiej [-c <config>] <command> ") os.Exit(1) } configFilePath := "/etc/szczanieckiej.toml" command := os.Args[1] if os.Args[1] == "-c" { configFilePath = os.Args[2] command = os.Args[3] } cfg, err := config.Read(configFilePath) if err != nil { log.Printf("Error while reading config file, %v\n", err) os.Exit(1) } t := traffic.Traffic{} traffic.EnableFeeds(cfg, &t) switch command { case "convert": err := traffic.Prepare(cfg, t, -1, feedTranslations) if err != nil { log.Println(err) os.Exit(1) } case "serve": fmt.Println("The wheels on the bus go round and round") c := make(chan os.Signal, 1) d := make(chan bool) i := make(chan bool, 1) signal.Notify(c, os.Interrupt, syscall.SIGUSR1) go traffic.Initialise(c, d, i, cfg, &t) c <- syscall.SIGUSR1 srv := server.RoutePreinit(cfg) <-i if err := srv.Shutdown(context.Background()); err != nil { panic(err) } srv = server.Route(cfg, &t) <-d if err := srv.Shutdown(context.Background()); err != nil { panic(err) } fmt.Println("\nNothing Arrived") } } |