10 type runitService struct {
16 func (r *runitService) Start(ctx context.Context) error {
17 if err := installRunit.Boot(ctx); err != nil {
21 script := &bytes.Buffer{}
22 fmt.Fprintf(script, "#!/bin/sh\n\nexec %q", r.cmd)
23 for _, arg := range r.args {
24 fmt.Fprintf(script, " %q", arg)
26 fmt.Fprintf(script, " 2>&1\n")
28 return atomicWriteFile(path.Join(r.svdir(ctx), "run"), script.Bytes(), 0755)
31 func (r *runitService) Running(ctx context.Context) (bool, error) {
32 if err := installRunit.Boot(ctx); err != nil {
35 return runStatusCmd("sv", "stat", r.svdir(ctx))
38 func (r *runitService) svdir(ctx context.Context) string {
39 return path.Join(cfg(ctx).RunitSvDir, r.name)