preliminary version of enable complete

This commit is contained in:
Tai Groot 2021-05-14 16:44:39 -07:00
parent f9f44604e1
commit 2517125d98
Signed by: taigrr
GPG Key ID: D00C269A87614812
3 changed files with 47 additions and 14 deletions

View File

@ -14,4 +14,7 @@ var (
// ErrInsufficientPermissions means the calling executable was invoked without enough permissions to run the selected command
ErrInsufficientPermissions = errors.New("insufficient permissions for action")
// ErrDoesNotExist means the unit specified doesn't exist or can't be found
ErrDoesNotExist = errors.New("Unit does not exist")
)

View File

@ -1,68 +1,88 @@
package systemctl
import "context"
import (
"context"
"errors"
"strconv"
)
// TODO
func IsFailed(ctx context.Context, unit string) (bool, error) {
func IsFailed(ctx context.Context, unit string, usermode bool) (bool, error) {
return false, nil
}
// TODO
func IsActive(ctx context.Context, unit string) (bool, error) {
func IsActive(ctx context.Context, unit string, usermode bool) (bool, error) {
return false, nil
}
// TODO
func Status(ctx context.Context, unit string) (bool, error) {
func Status(ctx context.Context, unit string, usermode bool) (bool, error) {
return false, nil
}
// TODO
func Restart(ctx context.Context, unit string) error {
func Restart(ctx context.Context, unit string, usermode bool) error {
return nil
}
// TODO
func Start(ctx context.Context, unit string) error {
func Start(ctx context.Context, unit string, usermode bool) error {
return nil
}
// TODO
func Stop(ctx context.Context, unit string) error {
func Stop(ctx context.Context, unit string, usermode bool) error {
return nil
}
// TODO
func Enable(ctx context.Context, unit string) error {
func Enable(ctx context.Context, unit string, usermode bool) error {
var args = []string{"enable", "--system", unit}
if usermode {
args[1] = "--user"
}
_, stderr, code, err := execute(ctx, args)
if err != nil {
return err
}
err = filterErr(stderr)
if err != nil {
return err
}
if code != 0 {
return errors.New("received error code " + strconv.Itoa(code))
}
return nil
}
// TODO
func Disable(ctx context.Context, unit string) error {
func Disable(ctx context.Context, unit string, usermode bool) error {
return nil
}
// TODO
func IsEnabled(ctx context.Context, unit string) (bool, error) {
func IsEnabled(ctx context.Context, unit string, usermode bool) (bool, error) {
return false, nil
}
// TODO
func DaemonReload(ctx context.Context, unit string) error {
func DaemonReload(ctx context.Context, unit string, usermode bool) error {
return nil
}
//TODO
func Show(ctx context.Context, unit string, property string) (string, error) {
func Show(ctx context.Context, unit string, property string, usermode bool) (string, error) {
return "", nil
}
//TODO
func Mask(ctx context.Context, unit string) error {
func Mask(ctx context.Context, unit string, usermode bool) error {
return nil
}
func Unmask(ctx context.Context, unit string) error {
func Unmask(ctx context.Context, unit string, usermode bool) error {
return nil
}

10
util.go
View File

@ -4,6 +4,7 @@ import (
"bytes"
"context"
"os/exec"
"regexp"
)
var systemctl string
@ -38,3 +39,12 @@ func execute(ctx context.Context, args []string) (string, string, int, error) {
return output, warnings, code, err
}
func filterErr(stderr string) error {
matched, _ := regexp.MatchString(`does not exist`, stderr)
if matched {
return ErrDoesNotExist
}
return nil
}