summaryrefslogtreecommitdiffstats
path: root/internal/templates/templates.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/templates/templates.go')
-rw-r--r--internal/templates/templates.go82
1 files changed, 82 insertions, 0 deletions
diff --git a/internal/templates/templates.go b/internal/templates/templates.go
new file mode 100644
index 0000000..d90163d
--- /dev/null
+++ b/internal/templates/templates.go
@@ -0,0 +1,82 @@
1package templates
2
3import (
4 "bytes"
5 "text/template"
6)
7
8var serviceTemplate = `[Unit]
9Description={{.Name}}
10After=network.target
11
12[Service]
13Type=simple
14User={{.User}}
15WorkingDirectory={{.WorkDir}}
16EnvironmentFile={{.EnvFile}}
17ExecStart={{.BinaryPath}} --port={{.Port}}
18Restart=always
19RestartSec=5s
20NoNewPrivileges=true
21PrivateTmp=true
22
23[Install]
24WantedBy=multi-user.target
25`
26
27var appCaddyTemplate = `{{.Domain}} {
28 reverse_proxy 127.0.0.1:{{.Port}}
29}
30`
31
32var staticCaddyTemplate = `{{.Domain}} {
33 root * {{.RootDir}}
34 file_server
35 encode gzip
36}
37`
38
39// SystemdService generates a systemd service unit file
40func SystemdService(data map[string]string) (string, error) {
41 tmpl, err := template.New("service").Parse(serviceTemplate)
42 if err != nil {
43 return "", err
44 }
45
46 var buf bytes.Buffer
47 if err := tmpl.Execute(&buf, data); err != nil {
48 return "", err
49 }
50
51 return buf.String(), nil
52}
53
54// AppCaddy generates a Caddy config for a Go app
55func AppCaddy(data map[string]string) (string, error) {
56 tmpl, err := template.New("caddy").Parse(appCaddyTemplate)
57 if err != nil {
58 return "", err
59 }
60
61 var buf bytes.Buffer
62 if err := tmpl.Execute(&buf, data); err != nil {
63 return "", err
64 }
65
66 return buf.String(), nil
67}
68
69// StaticCaddy generates a Caddy config for a static site
70func StaticCaddy(data map[string]string) (string, error) {
71 tmpl, err := template.New("caddy").Parse(staticCaddyTemplate)
72 if err != nil {
73 return "", err
74 }
75
76 var buf bytes.Buffer
77 if err := tmpl.Execute(&buf, data); err != nil {
78 return "", err
79 }
80
81 return buf.String(), nil
82}