summaryrefslogtreecommitdiff
path: root/man/manview/manview.go
blob: 777f2cdbfa34bd347ffd6c09b8f2a27a480c8033 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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()
	}
}