package main import ( "fmt" "git.wh64.net/wh64/static-deployer/config" "github.com/devproje/commando" "github.com/devproje/commando/option" "github.com/devproje/commando/types" "github.com/gin-gonic/gin" "os" ) var ( hash = "unknown" branch = "unknown" version = "unknown" ) func daemon(n *commando.Node) error { cnf := config.Get() debug, err := option.ParseBool(*n.MustGetOpt("debug"), n) if err != nil { return err } if cnf.Environment == "production" { gin.SetMode(gin.ReleaseMode) } else if debug || cnf.Environment != "production" { gin.SetMode(gin.DebugMode) } else { return fmt.Errorf("unknown environment: %s", cnf.Environment) } app := gin.Default() app.NoRoute(func(ctx *gin.Context) { ctx.HTML(200, "index.html", nil) }) fmt.Printf("web server binding at: http://%s:%d\n", cnf.Service.Host, cnf.Service.Port) if err = app.Run(fmt.Sprintf("%s:%d", cnf.Service.Host, cnf.Service.Port)); err != nil { return err } return nil } func main() { config.DefineVersion("%s-%s (%s)", version, branch, hash) cnf := config.Get() fmt.Printf("Static Deployer %s\n", cnf.Version) command := commando.NewCommando(os.Args[1:]) command.Root("daemon", "running webserver daemon", daemon, types.OptionData{ Name: "debug", Desc: "enable debug mode", Short: []string{"-d"}, Type: types.BOOLEAN, }) if err := command.Execute(); err != nil { _, _ = fmt.Fprintln(os.Stderr, err) os.Exit(1) } }