Skip to content

Commit 8a7590f

Browse files
author
Dominik Przybyl
committed
fixed vault-cli status code
1 parent f1952fc commit 8a7590f

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

cmd/aem/vault.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ func (c *CLI) vaultCmd() *cobra.Command {
1313
Run: func(cmd *cobra.Command, args []string) {
1414
vaultCli := pkg.NewVaultCli(c.aem)
1515
vaultCliArgs := os.Args[1:]
16-
_ = vaultCli.CommandShell(vaultCliArgs)
16+
if err := vaultCli.CommandShell(vaultCliArgs); err != nil {
17+
c.Error(err)
18+
return
19+
}
1720
},
1821
Args: cobra.ArbitraryArgs,
1922
FParseErrWhitelist: cobra.FParseErrWhitelist{

pkg/vault_cli.go

+23-7
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/wttech/aemc/pkg/common/httpx"
99
"github.com/wttech/aemc/pkg/common/osx"
1010
"github.com/wttech/aemc/pkg/common/pathx"
11+
"io"
1112
"os"
1213
"path/filepath"
1314
"strings"
@@ -42,7 +43,8 @@ func (v VaultCli) dir() string {
4243

4344
func (v VaultCli) execDir() string {
4445
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
4648
}
4749

4850
func (v VaultCli) lock() osx.Lock[VaultCliLock] {
@@ -60,12 +62,10 @@ func (v VaultCli) Prepare() error {
6062
return nil
6163
}
6264
log.Infof("preparing new Vault '%s'", v.DownloadURL)
63-
err = v.prepare()
64-
if err != nil {
65+
if err = v.prepare(); err != nil {
6566
return err
6667
}
67-
err = lock.Lock()
68-
if err != nil {
68+
if err = lock.Lock(); err != nil {
6969
return err
7070
}
7171
log.Infof("prepared new Vault '%s'", v.DownloadURL)
@@ -102,10 +102,26 @@ func (v VaultCli) CommandShell(args []string) error {
102102
}
103103
cmd := execx.CommandShell(args)
104104
cmd.Dir = v.execDir()
105+
vcw := &VaultCliWriter{writer: v.aem.output, status: 0}
106+
v.aem.SetOutput(vcw)
105107
v.aem.CommandOutput(cmd)
106-
err := cmd.Run()
107-
if err != nil {
108+
if err := cmd.Run(); err != nil {
108109
return fmt.Errorf("cannot run Vault command: %w", err)
109110
}
111+
if vcw.status != 0 {
112+
return fmt.Errorf("")
113+
}
110114
return nil
111115
}
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

Comments
 (0)