Files
ci/main.go
2026-06-18 21:19:47 +08:00

57 lines
1.1 KiB
Go

package main
import (
"embed"
"flag"
"fmt"
"log"
"os"
"os/signal"
"syscall"
"ci/internal/server"
)
//go:embed web/dist
var frontend embed.FS
func main() {
port := flag.String("port", "8080", "HTTP server port")
dataDir := flag.String("data", "data", "Data directory path")
flag.Parse()
// Check if frontend is embedded (non-empty)
var embeddedFS *embed.FS
if _, err := frontend.ReadDir("web/dist"); err == nil {
embeddedFS = &frontend
fmt.Println("Using embedded frontend")
} else {
fmt.Println("Embedded frontend not found, using dev mode (web/dist)")
}
config := server.Config{
Port: *port,
DataDir: *dataDir,
}
srv, err := server.New(config, embeddedFS)
if err != nil {
log.Fatalf("Failed to create server: %v", err)
}
// Graceful shutdown on interrupt
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
go func() {
<-quit
fmt.Println("\nShutting down...")
srv.Shutdown()
os.Exit(0)
}()
fmt.Printf("CI/CD Server starting on http://localhost:%s\n", config.Port)
if err := srv.Run(); err != nil {
log.Fatalf("Server error: %v", err)
}
}