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

Method StartPager

pkg/iostreams/iostreams.go:217–263  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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