summaryrefslogtreecommitdiff
path: root/man/manview/manview.go
diff options
context:
space:
mode:
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()
+ }
+}