use CommandContext

This commit is contained in:
Tai Groot
2021-05-14 16:12:56 -07:00
parent 7762c3af12
commit 8bb696fb51
3 changed files with 44 additions and 0 deletions

40
util.go Normal file
View File

@@ -0,0 +1,40 @@
package systemctl
import (
"bytes"
"context"
"os/exec"
)
var systemctl string
const killed = 130
func init() {
path, err := exec.LookPath("systemctl")
if err != nil {
panic(ErrNotInstalled)
}
systemctl = path
}
func execute(ctx context.Context, args []string) (string, string, int, error) {
var (
err error
stderr bytes.Buffer
stdout bytes.Buffer
code int
output string
warnings string
)
cmd := exec.CommandContext(ctx, systemctl, args...)
cmd.Stdout = &stdout
cmd.Stderr = &stderr
err = cmd.Run()
output = stdout.String()
warnings = stderr.String()
code = cmd.ProcessState.ExitCode()
return output, warnings, code, err
}