1package gpgconf
2
3import (
4	"bufio"
5	"bytes"
6	"os"
7	"os/exec"
8	"strings"
9)
10
11// Path returns the path to a GPG component
12func Path(key string) (string, error) {
13	buf := &bytes.Buffer{}
14	cmd := exec.Command("gpgconf")
15	cmd.Stdout = buf
16	cmd.Stderr = os.Stderr
17
18	if err := cmd.Run(); err != nil {
19		return "", err
20	}
21
22	key = strings.TrimSpace(strings.ToLower(key))
23	sc := bufio.NewScanner(buf)
24	for sc.Scan() {
25		p := strings.Split(strings.TrimSpace(sc.Text()), ":")
26		if len(p) < 3 {
27			continue
28		}
29		if key == p[0] {
30			return p[2], nil
31		}
32	}
33
34	return "", nil
35}
36