12 type runitService struct {
18 func (r *runitService) Start(ctx context.Context) error {
19 if err := installRunit.Boot(ctx); err != nil {
23 var script bytes.Buffer
24 fmt.Fprintf(script, "#!/bin/sh\n\nexec %q", r.cmd)
25 for _, arg := range r.args {
26 fmt.Fprintf(script, " %q", arg)
28 fmt.Fprintf(script, " 2>&1\n")
30 return atomicWriteFile(path.Join(r.svdir(ctx), "run"), script.Bytes(), 0755)
33 func (r *runitService) Running(ctx context.Context) (bool, error) {
34 if err := installRunit.Boot(ctx); err != nil {
37 return runStatusCmd("sv", "stat", r.svdir(ctx))
40 func (r *runitService) svdir(ctx context.Context) string {
41 return path.Join(cfg(ctx).RunitSvDir, r.name)