MCPcopy Create free account
hub / github.com/cli/cli / StartPager

Method StartPager

pkg/iostreams/iostreams.go:216–262  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

214}
215
216func (s *IOStreams) StartPager() error {
217 if s.pagerCommand == "" || s.pagerCommand == "cat" || !s.IsStdoutTTY() {
218 return nil
219 }
220
221 pagerArgs, err := shlex.Split(s.pagerCommand)
222 if err != nil {
223 return err
224 }
225
226 pagerEnv := os.Environ()
227 for i := len(pagerEnv) - 1; i >= 0; i-- {
228 if strings.HasPrefix(pagerEnv[i], "PAGER=") {
229 pagerEnv = append(pagerEnv[0:i], pagerEnv[i+1:]...)
230 }
231 }
232 if _, ok := os.LookupEnv("LESS"); !ok {
233 pagerEnv = append(pagerEnv, "LESS=FRX")
234 }
235 if _, ok := os.LookupEnv("LV"); !ok {
236 pagerEnv = append(pagerEnv, "LV=-c")
237 }
238
239 pagerExe, err := safeexec.LookPath(pagerArgs[0])
240 if err != nil {
241 return err
242 }
243 pagerCmd := exec.Command(pagerExe, pagerArgs[1:]...)
244 pagerCmd.Env = pagerEnv
245 pagerCmd.Stdout = s.Out
246 pagerCmd.Stderr = s.ErrOut
247 pagedOut, err := pagerCmd.StdinPipe()
248 if err != nil {
249 return err
250 }
251 s.Out = &fdWriteCloser{
252 fd: s.Out.Fd(),
253 WriteCloser: &pagerWriter{pagedOut},
254 }
255 s.ContentOut = newContentWriter(s.Out, s.sanitizeContent)
256 err = pagerCmd.Start()
257 if err != nil {
258 return err
259 }
260 s.pagerProcess = pagerCmd.Process
261 return nil
262}
263
264func (s *IOStreams) StopPager() {
265 if s.pagerProcess == nil {

Callers 15

listRunFunction · 0.80
viewRunFunction · 0.80
listRunFunction · 0.80
listRunFunction · 0.80
viewRunFunction · 0.80
listRunFunction · 0.80
printLogsFunction · 0.80
listRunFunction · 0.80
followLogsFunction · 0.80
commitsRunFunction · 0.80
SearchIssuesFunction · 0.80
reposRunFunction · 0.80

Calls 4

IsStdoutTTYMethod · 0.95
newContentWriterFunction · 0.85
CommandMethod · 0.80
FdMethod · 0.65

Tested by 1

TestIOStreams_pagerFunction · 0.64