/
policy.go
51 lines (38 loc) · 1007 Bytes
/
policy.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
package secret
import (
"fmt"
"github.com/FalcoSuessgott/vkv/pkg/utils"
"github.com/FalcoSuessgott/vkv/pkg/vault"
"github.com/juju/ansiterm"
)
const (
header = "PATH\tCREATE\tREAD\tUPDATE\tDELETE\tLIST\tROOT\n"
tabChar = '\t'
minWidth = 4
tabWidth = 8
padding = 2
)
func (p *Printer) printPolicy(secrets map[string]interface{}) error {
transformMap := make(map[string]interface{})
utils.TransformMap("", secrets, &transformMap)
capMap := make(map[string]*vault.Capability)
for k := range transformMap {
c, err := p.vaultClient.GetCapabilities(k)
if err != nil {
return err
}
capMap[k] = c
}
return p.printCapabilities(capMap)
}
func (p *Printer) printCapabilities(caps map[string]*vault.Capability) error {
t := ansiterm.NewTabWriter(p.writer, minWidth, tabWidth, padding, tabChar, uint(ansiterm.Default))
fmt.Fprint(t, header)
for p, c := range caps {
fmt.Fprintf(t, "%s\t%s", p, c.String())
}
if err := t.Flush(); err != nil {
return err
}
return nil
}