summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2024-05-20 19:33:46 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2024-05-21 01:06:10 +0900
commit076b3d0a9af7e69c8e5232d49cfeeadcfd45e9ef (patch)
treeaf30be146de4df1b513b4145fa34ee3be5e6bbdf /main.go
parent7b0c9e04d381090ba2004f52fa7127cf2f4e3df4 (diff)
downloadfzf-076b3d0a9af7e69c8e5232d49cfeeadcfd45e9ef.tar.gz
Embed man page in the binary and show it on 'fzf --man'
Diffstat (limited to 'main.go')
-rw-r--r--main.go18
1 files changed, 18 insertions, 0 deletions
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)