/
system_adapter.go
61 lines (46 loc) · 1.32 KB
/
system_adapter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package adapters
import (
"os"
"os/exec"
"github.com/Adhara-Tech/enval/pkg/exerrors"
"github.com/Adhara-Tech/enval/pkg/manifestchecker"
)
type DefaultSystemAdapter struct {
}
func NewDefaultSystemAdapter() *DefaultSystemAdapter {
return &DefaultSystemAdapter{}
}
func (systemAdapter DefaultSystemAdapter) CheckCommandAvailable(command string) (bool, error) {
_, err := exec.LookPath(command)
if err != nil {
if execError, ok := err.(*exec.Error); ok {
if execError.Err == exec.ErrNotFound {
return false, nil
}
}
return false, exerrors.Wrap(err, exerrors.InternalEnvalErrorKind)
}
return true, nil
}
func (systemAdapter DefaultSystemAdapter) ExecuteCommand(commandName string, params []string) (string, error) {
cmd := exec.Command(commandName, params...)
versionString, err := cmd.CombinedOutput()
if err != nil {
return "", exerrors.Wrap(err, exerrors.InternalEnvalErrorKind)
}
return string(versionString), nil
}
func (systemAdapter DefaultSystemAdapter) CheckDirExist(path string) (bool, error) {
fileInfo, err := os.Stat(path)
if err != nil {
if os.IsNotExist(err) {
return false, nil
}
return false, exerrors.Wrap(err, exerrors.InternalEnvalErrorKind)
}
if !fileInfo.IsDir() {
return false, nil
}
return true, nil
}
var _ manifestchecker.SystemAdapter = (*DefaultSystemAdapter)(nil)