Skip to content

Commit d0708fc

Browse files
authored
chore: embed templates for internal commands (#2314)
1 parent e3ec3c2 commit d0708fc

File tree

9 files changed

+57
-47
lines changed

9 files changed

+57
-47
lines changed

internal/dns/docs/generator.go

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package main
55
import (
66
"bufio"
77
"bytes"
8+
"embed"
89
"errors"
910
"fmt"
1011
"go/format"
@@ -19,15 +20,21 @@ import (
1920
"github.com/go-acme/lego/v4/internal/dns/descriptors"
2021
)
2122

23+
//go:embed templates
24+
var templateFS embed.FS
25+
2226
const (
2327
root = "../../../"
2428

25-
mdTemplate = root + "internal/dns/docs/dns.md.tmpl"
26-
cliTemplate = root + "internal/dns/docs/dns.go.tmpl"
27-
cliOutput = root + "cmd/zz_gen_cmd_dnshelp.go"
28-
docOutput = root + "docs/content/dns"
29-
readmeTemplate = root + "internal/dns/docs/readme.md.tmpl"
30-
readmePath = root + "README.md"
29+
cliOutput = root + "cmd/zz_gen_cmd_dnshelp.go"
30+
docOutput = root + "docs/content/dns"
31+
readmePath = root + "README.md"
32+
)
33+
34+
const (
35+
mdTemplate = "templates/dns.md.tmpl"
36+
cliTemplate = "templates/dns.go.tmpl"
37+
readmeTemplate = "templates/readme.md.tmpl"
3138
)
3239

3340
const (
@@ -74,7 +81,7 @@ func generateDocumentation(m descriptors.Provider) error {
7481

7582
defer func() { _ = file.Close() }()
7683

77-
return template.Must(template.ParseFiles(mdTemplate)).Execute(file, m)
84+
return template.Must(template.ParseFS(templateFS, mdTemplate)).Execute(file, m)
7885
}
7986

8087
func generateCLIHelp(models *descriptors.Providers) error {
@@ -87,14 +94,14 @@ func generateCLIHelp(models *descriptors.Providers) error {
8794

8895
defer func() { _ = file.Close() }()
8996

90-
tlt := template.New(filepath.Base(cliTemplate)).Funcs(map[string]interface{}{
91-
"safe": func(src string) string {
92-
return strings.ReplaceAll(src, "`", "'")
93-
},
94-
})
95-
9697
b := &bytes.Buffer{}
97-
err = template.Must(tlt.ParseFiles(cliTemplate)).Execute(b, models)
98+
err = template.Must(
99+
template.New(filepath.Base(cliTemplate)).Funcs(map[string]interface{}{
100+
"safe": func(src string) string {
101+
return strings.ReplaceAll(src, "`", "'")
102+
},
103+
}).ParseFS(templateFS, cliTemplate),
104+
).Execute(b, models)
98105
if err != nil {
99106
return err
100107
}
@@ -110,7 +117,7 @@ func generateCLIHelp(models *descriptors.Providers) error {
110117
}
111118

112119
func generateReadMe(models *descriptors.Providers) error {
113-
tpl := html.Must(html.New(filepath.Base(readmeTemplate)).ParseFiles(readmeTemplate))
120+
tpl := html.Must(html.New(filepath.Base(readmeTemplate)).ParseFS(templateFS, readmeTemplate))
114121
providers := orderProviders(models)
115122

116123
file, err := os.Open(readmePath)

internal/dns/providers/generator.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package main
44

55
import (
66
"bytes"
7+
_ "embed"
78
"fmt"
89
"go/format"
910
"log"
@@ -18,10 +19,12 @@ import (
1819
const (
1920
root = "../../../"
2021

21-
srcTemplate = "internal/dns/providers/dns_providers.go.tmpl"
22-
outputPath = "providers/dns/zz_gen_dns_providers.go"
22+
outputPath = "providers/dns/zz_gen_dns_providers.go"
2323
)
2424

25+
//go:embed dns_providers.go.tmpl
26+
var srcTemplate string
27+
2528
func main() {
2629
err := generate()
2730
if err != nil {
@@ -42,16 +45,14 @@ func generate() error {
4245

4346
defer func() { _ = file.Close() }()
4447

45-
tmplFile := filepath.Join(root, srcTemplate)
46-
47-
tlt := template.New(filepath.Base(tmplFile)).Funcs(map[string]interface{}{
48-
"cleanName": func(src string) string {
49-
return strings.ReplaceAll(src, "-", "")
50-
},
51-
})
52-
5348
b := &bytes.Buffer{}
54-
err = template.Must(tlt.ParseFiles(tmplFile)).Execute(b, info)
49+
err = template.Must(
50+
template.New("").Funcs(map[string]interface{}{
51+
"cleanName": func(src string) string {
52+
return strings.ReplaceAll(src, "-", "")
53+
},
54+
}).Parse(srcTemplate),
55+
).Execute(b, info)
5556
if err != nil {
5657
return err
5758
}

internal/useragent/generator.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,31 @@ package main
22

33
import (
44
"bytes"
5+
"embed"
56
"fmt"
67
"go/ast"
78
"go/format"
89
"go/parser"
910
"go/token"
1011
"os"
12+
"path/filepath"
1113
"regexp"
1214
"strconv"
1315
"strings"
1416
"text/template"
1517
)
1618

19+
//go:embed templates
20+
var templateFS embed.FS
21+
1722
type Generator struct {
1823
baseUserAgent string
19-
template string
24+
templatePath string
2025
sourcePath string
2126
}
2227

23-
func NewGenerator(baseUserAgent string, tmpl string, sourcePath string) *Generator {
24-
return &Generator{baseUserAgent: baseUserAgent, template: tmpl, sourcePath: sourcePath}
28+
func NewGenerator(baseUserAgent string, templatePath string, sourcePath string) *Generator {
29+
return &Generator{baseUserAgent: baseUserAgent, templatePath: templatePath, sourcePath: sourcePath}
2530
}
2631

2732
func (g *Generator) Release(mode string) error {
@@ -58,7 +63,7 @@ func (g *Generator) Detach() error {
5863
}
5964

6065
func (g *Generator) writeUserAgentFile(filename, version, comment string) error {
61-
tmpl, err := template.New("ua").Parse(g.template)
66+
tmpl, err := template.New(filepath.Base(g.templatePath)).ParseFS(templateFS, g.templatePath)
6267
if err != nil {
6368
return err
6469
}

internal/useragent/main.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,18 @@ import (
88
"github.com/urfave/cli/v2"
99
)
1010

11+
const (
12+
dnsBaseUserAgent = "goacme-lego/"
13+
dnsSourceFile = "./providers/dns/internal/useragent/useragent.go"
14+
dnsTemplate = "templates/dns.go.tmpl"
15+
)
16+
17+
const (
18+
senderBaseUserAgent = "xenolf-acme/"
19+
senderSourceFile = "./acme/api/internal/sender/useragent.go"
20+
senderTemplate = "templates/sender.go.tmpl"
21+
)
22+
1123
func main() {
1224
app := cli.NewApp()
1325
app.Name = "lego-releaser"

internal/useragent/data_dns.go renamed to internal/useragent/templates/dns.go.tmpl

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
package main
2-
3-
const dnsBaseUserAgent = "goacme-lego/"
4-
5-
const dnsSourceFile = "./providers/dns/internal/useragent/useragent.go"
6-
7-
const dnsTemplate = `// Code generated by 'internal/useragent'; DO NOT EDIT.
1+
// Code generated by 'internal/useragent'; DO NOT EDIT.
82

93
package useragent
104

@@ -33,4 +27,3 @@ func Get() string {
3327
func SetHeader(h http.Header) {
3428
h.Set("User-Agent", Get())
3529
}
36-
`
Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
package main
2-
3-
const senderBaseUserAgent = "xenolf-acme/"
4-
5-
const senderSourceFile = "./acme/api/internal/sender/useragent.go"
6-
7-
const senderTemplate = `// Code generated by 'internal/useragent'; DO NOT EDIT.
1+
// Code generated by 'internal/useragent'; DO NOT EDIT.
82

93
package sender
104

@@ -17,5 +11,3 @@ const (
1711
// NOTE: Update this with each tagged release.
1812
ourUserAgentComment = "{{ .comment }}"
1913
)
20-
21-
`

0 commit comments

Comments
 (0)