27 lines
791 B
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()
|
|
}
|