puncture/goapp/cmd/server/main.go

42 lines
893 B
Go

package main
import (
"flag"
"fmt"
"log"
"os"
"puncture-go/internal/server"
)
func main() {
host := flag.String("host", getenv("PUNCTURE_HOST", "0.0.0.0"), "bind host")
port := flag.Int("port", getenvInt("PUNCTURE_PORT", 9122), "bind port")
assetRoot := flag.String("asset-root", getenv("PUNCTURE_ASSET_ROOT", "./assets"), "asset root directory")
flag.Parse()
addr := server.ParseAddr(*host, *port)
log.Printf("starting puncture-go server on %s", addr)
if err := server.Run(addr, *assetRoot); err != nil {
log.Fatalf("server failed: %v", err)
}
}
func getenv(key, fallback string) string {
if v := os.Getenv(key); v != "" {
return v
}
return fallback
}
func getenvInt(key string, fallback int) int {
v := os.Getenv(key)
if v == "" {
return fallback
}
var parsed int
if _, err := fmt.Sscanf(v, "%d", &parsed); err != nil {
return fallback
}
return parsed
}