summaryrefslogtreecommitdiff
path: root/man/manview/manview.go
diff options
context:
space:
mode:
authorewy <ewy0@protonmail.com>2026-06-01 19:37:34 +0200
committerewy <ewy0@protonmail.com>2026-06-01 19:37:34 +0200
commit3d46b9546e1ccf131ce4dbcbfc12f6e37fa301ea (patch)
tree54bd9343fe51734b7e2377a844065f317bc51cc3 /man/manview/manview.go
parent46d032cd21b0e8e2c94a32333d3805ec76980cca (diff)
default to manpage view for help
Diffstat (limited to 'man/manview/manview.go')
-rw-r--r--man/manview/manview.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/man/manview/manview.go b/man/manview/manview.go
new file mode 100644
index 0000000..777f2cd
--- /dev/null
+++ b/man/manview/manview.go
@@ -0,0 +1,36 @@
+package manview
+
+import (
+ "embed"
+ _ "embed"
+ "github.com/ewy1/pik/spool"
+ "os"
+ "os/exec"
+ "strings"
+ "text/template"
+)
+
+//go:embed templates
+var pageTemplates embed.FS
+
+var page = template.Must(template.ParseFS(pageTemplates, "templates/*"))
+
+func View(fallback string) error {
+ man, manErr := exec.LookPath("man")
+ if manErr != nil {
+ _, err := spool.Print("%v\n", fallback)
+ return err
+ } else {
+ t := &strings.Builder{}
+ err := page.Execute(t, NewData())
+ if err != nil {
+ return err
+ }
+ reader := strings.NewReader(t.String())
+ cmd := exec.Command(man, "-l", "-")
+ cmd.Stdin = reader
+ cmd.Stdout = os.Stdout
+ cmd.Stderr = os.Stderr
+ return cmd.Run()
+ }
+}