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