From cf05f1bc0a03d02a07ee28d2d25b828f23371327 Mon Sep 17 00:00:00 2001 From: "Luke T. Shumaker" Date: Tue, 20 May 2025 18:24:33 -0400 Subject: gen-posix: Atomic updates --- cmd/gen-posix/main.go | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'cmd/gen-posix/main.go') diff --git a/cmd/gen-posix/main.go b/cmd/gen-posix/main.go index 66a2588..354fd3f 100644 --- a/cmd/gen-posix/main.go +++ b/cmd/gen-posix/main.go @@ -1,6 +1,8 @@ package main import ( + "bytes" + "fmt" "html/template" "os" ) @@ -179,12 +181,28 @@ var tmpl = `{{define "document"}}{{if .}} ` -func main() { - err := template.Must(template.New("page").Parse(tmpl)).Execute(os.Stdout, map[string]interface{}{ +func mainWithError() error { + tmpl := template.Must(template.New("page").Parse(tmpl)) + + var out bytes.Buffer + if err := tmpl.Execute(&out, map[string]interface{}{ "Vendors": Vendors, "Editions": Editions, - }) - if err != nil { - panic(err) + }); err != nil { + return err + } + if err := os.WriteFile("public/posix/index.new.html", out.Bytes(), 0666); err != nil { + return err + } + if err := os.Rename("public/posix/index.new.html", "public/posix/index.html"); err != nil { + return err + } + return nil +} + +func main() { + if err := mainWithError(); err != nil { + fmt.Fprintf(os.Stderr, "%s: error: %v\n", os.Args[0], err) + os.Exit(1) } } -- cgit v1.2.3-54-g00ecf