iop/packages/go/hostsetup/systemd.go

27 lines
791 B
Go

package hostsetup
import (
"fmt"
"strings"
)
func renderUnit(spec AppSpec, opts SetupOptions) string {
var b strings.Builder
fmt.Fprintf(&b, "[Unit]\n")
fmt.Fprintf(&b, "Description=%s\n", spec.Description)
fmt.Fprintf(&b, "After=network-online.target\n")
fmt.Fprintf(&b, "Wants=network-online.target\n\n")
fmt.Fprintf(&b, "[Service]\n")
fmt.Fprintf(&b, "Type=simple\n")
fmt.Fprintf(&b, "User=%s\n", opts.User)
fmt.Fprintf(&b, "Group=%s\n", opts.Group)
fmt.Fprintf(&b, "ExecStart=%s serve --config %s\n", opts.BinaryPath, opts.ConfigPath)
fmt.Fprintf(&b, "WorkingDirectory=%s\n", opts.DataDir)
fmt.Fprintf(&b, "Restart=on-failure\n")
fmt.Fprintf(&b, "RestartSec=5\n\n")
fmt.Fprintf(&b, "[Install]\n")
fmt.Fprintf(&b, "WantedBy=multi-user.target\n")
return b.String()
}