From 865c6dc23099e129cb3ba9709b2926734144e605 Mon Sep 17 00:00:00 2001 From: tjp Date: Tue, 23 Jan 2024 22:42:18 -0700 Subject: Printer abstraction --- actions.go | 37 +++++++------------------------------ 1 file changed, 7 insertions(+), 30 deletions(-) (limited to 'actions.go') diff --git a/actions.go b/actions.go index c11e677..c80445b 100644 --- a/actions.go +++ b/actions.go @@ -559,43 +559,20 @@ func parseURL(str string, state *BrowserState, defaultScheme string) (*url.URL, } func print(state *BrowserState) error { - if state.Quiet { - return nil - } - - defer func() { state.Modal = nil }() - - if state.Body == nil && state.Modal == nil { - return ErrMustBeOnAPage - } - out := []byte(state.Formatted) if state.Modal != nil { - out = state.Modal + defer func() { state.Modal = nil }() + return state.Printer.PrintModal(state, state.Modal) } - if state.Modal != nil || state.Pager == "never" { - _, err := os.Stdout.Write(out) - return err + if state.Body == nil { + return ErrMustBeOnAPage } - lessarg := []string{} - switch state.Pager { - case "auto": - lessarg = []string{"-F"} - fallthrough - case "always": - less, err := exec.LookPath("less") - if err != nil { - return err - } - cmd := exec.Command(less, lessarg...) - cmd.Stdin = bytes.NewBuffer(out) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - return cmd.Run() + if state.Quiet { + return nil } - return errors.New("invalid 'pager' value in configuration") + return state.Printer.PrintPage(state, state.Formatted) } func Print(state *BrowserState) error { -- cgit v1.2.3