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() } }