tvl-depot/templater/pass.go
2017-02-20 14:25:24 +01:00

35 lines
697 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"
"strings"
)
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),
)
}
trimmed := strings.TrimSpace(string(output))
return trimmed, nil
}