34 lines
469 B
Go
34 lines
469 B
Go
package fzf
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
func SelectWithFzf(items []string) (string, error) {
|
|
cmd := exec.Command("fzf", "--ansi")
|
|
|
|
var input bytes.Buffer
|
|
|
|
for _, item := range items {
|
|
input.WriteString(item + "\n")
|
|
}
|
|
|
|
cmd.Stdin = &input
|
|
|
|
var output bytes.Buffer
|
|
cmd.Stdout = &output
|
|
cmd.Stderr = os.Stderr
|
|
|
|
err := cmd.Run()
|
|
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
selected := strings.TrimSpace(output.String())
|
|
|
|
return selected, nil
|
|
}
|