8
8
"github.com/wttech/aemc/pkg/common/httpx"
9
9
"github.com/wttech/aemc/pkg/common/osx"
10
10
"github.com/wttech/aemc/pkg/common/pathx"
11
+ "io"
11
12
"os"
12
13
"path/filepath"
13
14
"strings"
@@ -42,7 +43,8 @@ func (v VaultCli) dir() string {
42
43
43
44
func (v VaultCli ) execDir () string {
44
45
vaultDir , _ , _ := strings .Cut (filepath .Base (v .DownloadURL ), "-bin" )
45
- return filepath .Join (v .dir (), vaultDir , "bin" )
46
+ execDir , _ := filepath .Abs (filepath .Join (v .dir (), vaultDir , "bin" ))
47
+ return execDir
46
48
}
47
49
48
50
func (v VaultCli ) lock () osx.Lock [VaultCliLock ] {
@@ -60,12 +62,10 @@ func (v VaultCli) Prepare() error {
60
62
return nil
61
63
}
62
64
log .Infof ("preparing new Vault '%s'" , v .DownloadURL )
63
- err = v .prepare ()
64
- if err != nil {
65
+ if err = v .prepare (); err != nil {
65
66
return err
66
67
}
67
- err = lock .Lock ()
68
- if err != nil {
68
+ if err = lock .Lock (); err != nil {
69
69
return err
70
70
}
71
71
log .Infof ("prepared new Vault '%s'" , v .DownloadURL )
@@ -102,10 +102,26 @@ func (v VaultCli) CommandShell(args []string) error {
102
102
}
103
103
cmd := execx .CommandShell (args )
104
104
cmd .Dir = v .execDir ()
105
+ vcw := & VaultCliWriter {writer : v .aem .output , status : 0 }
106
+ v .aem .SetOutput (vcw )
105
107
v .aem .CommandOutput (cmd )
106
- err := cmd .Run ()
107
- if err != nil {
108
+ if err := cmd .Run (); err != nil {
108
109
return fmt .Errorf ("cannot run Vault command: %w" , err )
109
110
}
111
+ if vcw .status != 0 {
112
+ return fmt .Errorf ("" )
113
+ }
110
114
return nil
111
115
}
116
+
117
+ type VaultCliWriter struct {
118
+ writer io.Writer
119
+ status int
120
+ }
121
+
122
+ func (vcw * VaultCliWriter ) Write (p []byte ) (int , error ) {
123
+ if strings .Contains (string (p ), "[ERROR]" ) {
124
+ vcw .status = 1
125
+ }
126
+ return vcw .writer .Write (p )
127
+ }
0 commit comments