// ©AngelaMos | 2026 // main.go package main import ( "archive/zip" "flag" "fmt" "log" "os" "path/filepath" ) const ( contentTypesXML = ` ` packageRelsXML = ` ` documentXML = ` Internal document - confidential. Do not redistribute. ` documentRelsXML = ` ` footer2XML = ` INCLUDEPICTURE "HONEY_TRACK_URL" \d \* MERGEFORMAT ` pathContentTypes = "[Content_Types].xml" pathPackageRels = "_rels/.rels" pathDocument = "word/document.xml" pathDocumentRels = "word/_rels/document.xml.rels" pathFooter2 = "word/footer2.xml" dirPerm os.FileMode = 0o755 filePerm os.FileMode = 0o644 ) type entry struct { name string body string method uint16 } func entries() []entry { return []entry{ {name: pathContentTypes, body: contentTypesXML, method: zip.Store}, {name: pathPackageRels, body: packageRelsXML, method: zip.Deflate}, {name: pathDocument, body: documentXML, method: zip.Deflate}, {name: pathDocumentRels, body: documentRelsXML, method: zip.Store}, {name: pathFooter2, body: footer2XML, method: zip.Deflate}, } } func main() { out := flag.String("out", "", "output path for template.docx") flag.Parse() if *out == "" { log.Fatal("usage: builddocxtemplate -out ") } if err := buildTemplate(*out); err != nil { log.Fatalf("build docx template: %v", err) } fmt.Printf("wrote %s\n", *out) } func buildTemplate(out string) (err error) { cleaned := filepath.Clean(out) if mkErr := os.MkdirAll(filepath.Dir(cleaned), dirPerm); mkErr != nil { return fmt.Errorf("mkdir parent: %w", mkErr) } f, oErr := os.OpenFile( cleaned, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, filePerm, ) if oErr != nil { return fmt.Errorf("open output: %w", oErr) } defer func() { if cerr := f.Close(); cerr != nil && err == nil { err = fmt.Errorf("close output: %w", cerr) } }() w := zip.NewWriter(f) for _, e := range entries() { hdr := &zip.FileHeader{Name: e.name, Method: e.method} fw, cErr := w.CreateHeader(hdr) if cErr != nil { return fmt.Errorf("create %s: %w", e.name, cErr) } if _, wErr := fw.Write([]byte(e.body)); wErr != nil { return fmt.Errorf("write %s: %w", e.name, wErr) } } if zErr := w.Close(); zErr != nil { return fmt.Errorf("close zip writer: %w", zErr) } return nil }