From 6fefddaa486b1c45c08061e7b8271e8521b5e841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Fr=C3=B6ssman?= Date: Thu, 20 Jun 2019 14:21:28 +0200 Subject: [PATCH] Add glob support for playbook files --- plugin.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/plugin.go b/plugin.go index 39f827a..5cd6575 100644 --- a/plugin.go +++ b/plugin.go @@ -5,6 +5,7 @@ import ( "io/ioutil" "os" "os/exec" + "path/filepath" "strconv" "strings" @@ -64,6 +65,10 @@ type ( ) func (p *Plugin) Exec() error { + if err := p.playbooks(); err != nil { + return err + } + if err := p.ansibleConfig(); err != nil { return err } @@ -167,6 +172,25 @@ func (p *Plugin) vaultPass() error { return nil } +func (p *Plugin) playbooks() error { + var playbooks []string + for _, p := range p.Config.Playbooks { + files, err := filepath.Glob(p) + // can there be a invalid glob pattern that still is a valid file name? + // just add it back to the list and let ansible return error out instead. + if err != nil { + playbooks = append(playbooks, p) + continue + } + playbooks = append(playbooks, files...) + } + if len(playbooks) == 0 { + return errors.New("failed to find playbook files") + } + p.Config.Playbooks = playbooks + return nil +} + func (p *Plugin) versionCommand() *exec.Cmd { args := []string{ "--version",