package main import ( "os" "os/signal" "syscall" "github.com/pikami/cosmium/api" "github.com/pikami/cosmium/api/config" "github.com/pikami/cosmium/internal/repositories" ) func main() { configuration := config.ParseFlags() repository := repositories.NewDataRepository(repositories.RepositoryOptions{ InitialDataFilePath: configuration.InitialDataFilePath, PersistDataFilePath: configuration.PersistDataFilePath, }) server := api.NewApiServer(repository, configuration) server.Start() waitForExit(server, repository, configuration) } func waitForExit(server *api.ApiServer, repository *repositories.DataRepository, config config.ServerConfig) { sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) // Block until a exit signal is received <-sigs // Stop the server server.Stop() if config.PersistDataFilePath != "" { repository.SaveStateFS(config.PersistDataFilePath) } }