Skip to content

Commit

Permalink
Support CLI autocompletion for nested mounts (#8303)
Browse files Browse the repository at this point in the history
* Support CLI autocompletion for nested mounts

* Add test for nested autocomplete prediction
  • Loading branch information
spangenberg authored Feb 7, 2020
1 parent 462ef72 commit af3b190
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
12 changes: 11 additions & 1 deletion command/base_predict.go
Original file line number Diff line number Diff line change
Expand Up @@ -233,8 +233,18 @@ func (p *Predict) vaultPaths(includeFiles bool) complete.PredictFunc {

path := args.Last

// Trim path with potential mount
var relativePath string
for _, mount := range p.mounts() {
if strings.HasPrefix(path, mount) {
relativePath = strings.TrimPrefix(path, mount+"/")
break
}
}

// Predict path or mount depending on path separator
var predictions []string
if strings.Contains(path, "/") {
if strings.Contains(relativePath, "/") {
predictions = p.paths(path, includeFiles)
} else {
predictions = p.filter(p.mounts(), path)
Expand Down
18 changes: 18 additions & 0 deletions command/base_predict_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@ func TestPredictVaultPaths(t *testing.T) {
if _, err := client.Logical().Write("secret/zip/twoot", data); err != nil {
t.Fatal(err)
}
if err := client.Sys().Mount("level1a/level2a/level3a", &api.MountInput{Type: "kv"}); err != nil {
t.Fatal(err)
}
if err := client.Sys().Mount("level1a/level2a/level3b", &api.MountInput{Type: "kv"}); err != nil {
t.Fatal(err)
}

cases := []struct {
name string
Expand Down Expand Up @@ -182,6 +188,18 @@ func TestPredictVaultPaths(t *testing.T) {
false,
[]string{"secret/zip/t"},
},
{
"multi_nested",
complete.Args{
All: []string{"read", "level1a/level2a"},
Last: "level1a/level2a",
},
false,
[]string{
"level1a/level2a/level3a/",
"level1a/level2a/level3b/",
},
},
}

t.Run("group", func(t *testing.T) {
Expand Down

0 comments on commit af3b190

Please sign in to comment.