datagraph/main.go
2025-08-21 10:51:13 +02:00

76 lines
1.3 KiB
Go

package main
import (
// External
werr "git.gibonuddevalla.se/go/wrappederror"
// Standard
"embed"
"flag"
"fmt"
"os"
"path"
)
const VERSION = "v3"
var (
flagConfigFile string
flagVersion bool
flagDev bool
config Config
//go:embed sql
sqlFS embed.FS
//go:embed views
viewFS embed.FS
//go:embed static
staticFS embed.FS
scriptScheduler ScriptScheduler
)
func initCmdline() {
confDir, err := os.UserConfigDir()
if err != nil {
logger.Error("application", "error", err)
os.Exit(1)
}
configFilename := path.Join(confDir, "datagraph.yaml")
flag.StringVar(&flagConfigFile, "config", configFilename, "Filename of configuration file")
flag.BoolVar(&flagVersion, "version", false, "Display version and exit")
flag.BoolVar(&flagDev, "dev", false, "Reload HTML templates from disk for every request")
flag.Parse()
}
func main() {
werr.Init()
initLog()
initCmdline()
if flagVersion {
fmt.Println(VERSION)
os.Exit(0)
}
logger.Info("application", "version", VERSION)
readConfig()
err := initDB()
if err != nil {
logger.Error("database", "error", err)
os.Exit(1)
}
scriptScheduler = NewScriptScheduler()
go scriptScheduler.Loop()
err = initWebserver()
if err != nil {
logger.Error("webserver", "error", err)
os.Exit(1)
}
}