blob: 668104bdad1b4350b5a47862c51a281d9c2c9821 [file] [log] [blame]
Philipp Schrader5562df72022-02-16 20:56:51 -08001package main
2
3import (
4 "flag"
5 "fmt"
Philipp Schrader8747f1b2022-02-23 23:56:22 -08006 "log"
Philipp Schrader5562df72022-02-16 20:56:51 -08007 "os"
8 "os/signal"
9 "syscall"
10
Philipp Schrader8747f1b2022-02-23 23:56:22 -080011 "github.com/frc971/971-Robot-Code/scouting/db"
Philipp Schradercdb5cfc2022-02-20 14:57:07 -080012 "github.com/frc971/971-Robot-Code/scouting/webserver/requests"
Philipp Schrader5562df72022-02-16 20:56:51 -080013 "github.com/frc971/971-Robot-Code/scouting/webserver/server"
14 "github.com/frc971/971-Robot-Code/scouting/webserver/static"
15)
16
17func main() {
18 portPtr := flag.Int("port", 8080, "The port number to bind to.")
19 dirPtr := flag.String("directory", ".", "The directory to serve at /.")
20 flag.Parse()
21
Philipp Schrader8747f1b2022-02-23 23:56:22 -080022 database, err := db.NewDatabase()
23 if err != nil {
24 log.Fatal("Failed to connect to database: ", err)
25 }
26
Philipp Schrader5562df72022-02-16 20:56:51 -080027 scoutingServer := server.NewScoutingServer()
28 static.ServePages(scoutingServer, *dirPtr)
Philipp Schrader8747f1b2022-02-23 23:56:22 -080029 requests.HandleRequests(database, scoutingServer)
Philipp Schrader5562df72022-02-16 20:56:51 -080030 scoutingServer.Start(*portPtr)
31 fmt.Println("Serving", *dirPtr, "on port", *portPtr)
32
33 // Block until the user hits Ctrl-C.
34 sigint := make(chan os.Signal, 1)
35 signal.Notify(sigint, syscall.SIGINT)
36 fmt.Println("Waiting for CTRL-C or SIGINT.")
37 <-sigint
38
39 fmt.Println("Shutting down.")
40 scoutingServer.Stop()
41 fmt.Println("Successfully shut down.")
42}