diff options
Diffstat (limited to 'templater/pass.go')
-rw-r--r-- | templater/pass.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/templater/pass.go b/templater/pass.go new file mode 100644 index 000000000000..f1dc82986174 --- /dev/null +++ b/templater/pass.go @@ -0,0 +1,32 @@ +// This file contains the implementation of a template function for retrieving variables from 'pass', the standard UNIX +// password manager. +package templater + +import ( + "fmt" + "os" + "os/exec" + + "github.com/polydawn/meep" +) + +type PassError struct { + meep.TraitAutodescribing + meep.TraitCausable + Output string +} + +func GetFromPass(key string) (string, error) { + fmt.Fprintf(os.Stderr, "Attempting to look up %s in pass\n", key) + pass := exec.Command("pass", "show", key) + + output, err := pass.CombinedOutput() + if err != nil { + return "", meep.New( + &PassError{Output: string(output)}, + meep.Cause(err), + ) + } + + return string(output), nil +} |