tvl-depot/templater/pass.go
Vincent Ambo 2f6e008121 feat templater: Add 'pass' lookup function
This introduces support for looking up secret values in the 'pass' command line
tool (https://www.passwordstore.org/).

Values like passwords can be interpolated from pass and even more complex
structures like certificates for Kubernetes Secrets can be retrieved and base64-
encoded as necessary.

Fixes #2
2017-02-09 15:44:18 +01:00

32 lines
646 B
Go

// 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
}