From 076b3d0a9af7e69c8e5232d49cfeeadcfd45e9ef Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Mon, 20 May 2024 19:33:46 +0900 Subject: Embed man page in the binary and show it on 'fzf --man' --- main.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'main.go') diff --git a/main.go b/main.go index 1e05345c..8ba0aed2 100644 --- a/main.go +++ b/main.go @@ -4,6 +4,7 @@ import ( _ "embed" "fmt" "os" + "os/exec" "strings" fzf "github.com/junegunn/fzf/src" @@ -28,6 +29,9 @@ var zshCompletion []byte //go:embed shell/key-bindings.fish var fishKeyBindings []byte +//go:embed man/man1/fzf.1 +var manPage []byte + func printScript(label string, content []byte) { fmt.Println("### " + label + " ###") fmt.Println(strings.TrimSpace(string(content))) @@ -76,6 +80,20 @@ func main() { } return } + if options.Man { + file := fzf.WriteTemporaryFile([]string{string(manPage)}, "\n") + if len(file) == 0 { + fmt.Print(string(manPage)) + return + } + defer os.Remove(file) + cmd := exec.Command("man", file) + cmd.Stdout = os.Stdout + if err := cmd.Run(); err != nil { + fmt.Print(string(manPage)) + } + return + } code, err := fzf.Run(options) exit(code, err) -- cgit v1.2.3