static-deployer/app.go
2025-04-24 22:16:52 +09:00

66 lines
1.4 KiB
Go

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)
}
}