11 type runitService struct {
17 func (r *runitService) Start(ctx context.Context) error {
18 if err := installRunit.Boot(ctx); err != nil {
22 if err := os.MkdirAll(svdir, 0755); err != nil {
25 tmp, err := ioutil.TempFile(svdir, "run~")
29 fmt.Fprintf(tmp, "#!/bin/sh\n\nexec %q", r.cmd)
30 for _, arg := range r.args {
31 fmt.Fprintf(tmp, " %q", arg)
33 fmt.Fprintf(tmp, " 2>&1\n")
35 if err := os.Chmod(tmp.Name(), 0755); err != nil {
39 if err := os.Rename(tmp.Name(), path.Join(svdir, "run")); err != nil {
46 func (r *runitService) Running(ctx context.Context) (bool, error) {
47 if err := installRunit.Boot(ctx); err != nil {
50 return runStatusCmd("sv", "stat", r.svdir(ctx))
53 func (r *runitService) svdir(ctx context.Context) string {
54 return path.Join(cfg(ctx).RunitSvDir, r.name)