package templates import ( "bytes" "text/template" ) var serviceTemplate = `[Unit] Description={{.Name}} After=network.target [Service] Type=simple User={{.User}} WorkingDirectory={{.WorkDir}} EnvironmentFile={{.EnvFile}} ExecStart={{.BinaryPath}} {{.Args}} Restart=always RestartSec=5s NoNewPrivileges=true PrivateTmp=true [Install] WantedBy=multi-user.target ` var appCaddyTemplate = `{{.Domain}} { reverse_proxy 127.0.0.1:{{.Port}} } ` var staticCaddyTemplate = `{{.Domain}} { root * {{.RootDir}} file_server encode gzip } ` // SystemdService generates a systemd service unit file func SystemdService(data map[string]string) (string, error) { tmpl, err := template.New("service").Parse(serviceTemplate) if err != nil { return "", err } var buf bytes.Buffer if err := tmpl.Execute(&buf, data); err != nil { return "", err } return buf.String(), nil } // AppCaddy generates a Caddy config for a Go app func AppCaddy(data map[string]string) (string, error) { tmpl, err := template.New("caddy").Parse(appCaddyTemplate) if err != nil { return "", err } var buf bytes.Buffer if err := tmpl.Execute(&buf, data); err != nil { return "", err } return buf.String(), nil } // StaticCaddy generates a Caddy config for a static site func StaticCaddy(data map[string]string) (string, error) { tmpl, err := template.New("caddy").Parse(staticCaddyTemplate) if err != nil { return "", err } var buf bytes.Buffer if err := tmpl.Execute(&buf, data); err != nil { return "", err } return buf.String(), nil }