GoBlog/main.go

83 lines
1.3 KiB
Go
Raw Normal View History

2020-07-28 19:17:07 +00:00
package main
2020-08-01 15:49:46 +00:00
import (
"log"
"os"
"os/signal"
2020-10-07 15:35:52 +00:00
jsoniter "github.com/json-iterator/go"
2020-08-01 15:49:46 +00:00
)
2020-07-28 19:17:07 +00:00
2020-10-07 15:35:52 +00:00
var json = jsoniter.ConfigCompatibleWithStandardLibrary
2020-07-28 19:17:07 +00:00
func main() {
// Initialize config
log.Println("Initialize configuration...")
2020-07-28 19:17:07 +00:00
err := initConfig()
if err != nil {
log.Fatal(err)
}
// Execute pre-start hooks
preStartHooks()
// Initialize everything else
log.Println("Initialize database...")
2020-07-28 19:17:07 +00:00
err = initDatabase()
if err != nil {
log.Fatal(err)
2020-08-01 15:49:46 +00:00
return
2020-07-28 19:17:07 +00:00
}
log.Println("Initialize server components...")
2020-08-01 15:49:46 +00:00
initMinify()
initMarkdown()
2020-09-19 10:57:14 +00:00
err = initTemplateAssets() // Needs minify
if err != nil {
log.Fatal(err)
return
}
err = initTemplateStrings()
if err != nil {
log.Fatal(err)
return
}
err = initRendering() // Needs assets
if err != nil {
log.Fatal(err)
return
}
2020-10-15 19:12:28 +00:00
err = initRegexRedirects()
2020-10-15 18:54:43 +00:00
if err != nil {
log.Fatal(err)
return
}
initCache()
2020-08-01 15:49:46 +00:00
// Start cron hooks
startHourlyHooks()
2020-08-01 15:49:46 +00:00
// Prepare graceful shutdown
quit := make(chan os.Signal, 1)
// Start the server
go func() {
log.Println("Starting server...")
2020-08-01 15:49:46 +00:00
err = startServer()
2020-07-28 19:52:56 +00:00
if err != nil {
2020-08-01 15:49:46 +00:00
log.Println("Failed to start server:")
log.Println(err)
2020-07-28 19:52:56 +00:00
}
2020-08-01 15:49:46 +00:00
quit <- os.Interrupt
2020-07-28 19:17:07 +00:00
}()
2020-08-01 15:49:46 +00:00
// Graceful shutdown
signal.Notify(quit, os.Interrupt)
<-quit
log.Println("Stopping...")
// Close DB
err = closeDb()
if err != nil {
log.Fatal(err)
2020-08-01 15:49:46 +00:00
return
}
2020-07-28 19:17:07 +00:00
}