package main import ( "flag" "fmt" "os" "os/signal" "syscall" "github.com/mdiluz/rove/pkg/persistence" "github.com/mdiluz/rove/pkg/server" "github.com/mdiluz/rove/pkg/version" ) var ver = flag.Bool("version", false, "Display version number") var port = flag.Int("port", 8080, "The port to host on") var data = flag.String("data", os.TempDir(), "Directory to store persistant data") func main() { flag.Parse() // Print the version if requested if *ver { fmt.Println(version.Version) os.Exit(0) } fmt.Printf("Initialising version %s...\n", version.Version) // Set the persistence path persistence.SetPath(*data) // Create the server data s := server.NewServer( server.OptionPort(*port), server.OptionPersistentData()) // Initialise the server if err := s.Initialise(); err != nil { panic(err) } // Set up the close handler c := make(chan os.Signal) signal.Notify(c, os.Interrupt, syscall.SIGTERM) go func() { <-c fmt.Println("SIGTERM recieved, exiting...") if err := s.Close(); err != nil { panic(err) } os.Exit(0) }() fmt.Println("Running...") // Run the server s.Run() // Close the server if err := s.Close(); err != nil { panic(err) } }