--version/-V on the CLI, version in /api/health via Server.SetVersion, Makefile/Dockerfile ldflags stamping from git describe, and a release workflow on v* tags: both binaries for linux/darwin (amd64+arm64) and windows/amd64 with SHA256SUMS attached to the Gitea release (idempotent — reuses an existing hand-written release and skips already-uploaded assets), plus version-tagged Docker images. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
41 lines
845 B
Go
41 lines
845 B
Go
// Command server starts the ExploreDNS HTTP API server.
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
"time"
|
|
|
|
"gitea.hansenits.com.au/hits/ExploreDNS/web/api"
|
|
)
|
|
|
|
// version is stamped at build time via -ldflags "-X main.version=...".
|
|
var version = "dev"
|
|
|
|
func main() {
|
|
addr := flag.String("addr", ":8080", "listen address (host:port)")
|
|
flag.Parse()
|
|
|
|
srv := api.NewServer(*addr)
|
|
srv.SetVersion(version)
|
|
if err := srv.Start(); err != nil {
|
|
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
log.Printf("ExploreDNS API server %s listening on %s", version, srv.Addr())
|
|
|
|
quit := make(chan os.Signal, 1)
|
|
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
|
<-quit
|
|
|
|
log.Println("Shutting down...")
|
|
if err := srv.Shutdown(15 * time.Second); err != nil {
|
|
log.Printf("Shutdown error: %v", err)
|
|
}
|
|
}
|