MCPcopy Index your code
hub / github.com/cli/cli / StartPager

Method StartPager

pkg/iostreams/iostreams.go:205–250  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

203}
204
205func (s *IOStreams) StartPager() error {
206 if s.pagerCommand == "" || s.pagerCommand == "cat" || !s.IsStdoutTTY() {
207 return nil
208 }
209
210 pagerArgs, err := shlex.Split(s.pagerCommand)
211 if err != nil {
212 return err
213 }
214
215 pagerEnv := os.Environ()
216 for i := len(pagerEnv) - 1; i >= 0; i-- {
217 if strings.HasPrefix(pagerEnv[i], "PAGER=") {
218 pagerEnv = append(pagerEnv[0:i], pagerEnv[i+1:]...)
219 }
220 }
221 if _, ok := os.LookupEnv("LESS"); !ok {
222 pagerEnv = append(pagerEnv, "LESS=FRX")
223 }
224 if _, ok := os.LookupEnv("LV"); !ok {
225 pagerEnv = append(pagerEnv, "LV=-c")
226 }
227
228 pagerExe, err := safeexec.LookPath(pagerArgs[0])
229 if err != nil {
230 return err
231 }
232 pagerCmd := exec.Command(pagerExe, pagerArgs[1:]...)
233 pagerCmd.Env = pagerEnv
234 pagerCmd.Stdout = s.Out
235 pagerCmd.Stderr = s.ErrOut
236 pagedOut, err := pagerCmd.StdinPipe()
237 if err != nil {
238 return err
239 }
240 s.Out = &fdWriteCloser{
241 fd: s.Out.Fd(),
242 WriteCloser: &pagerWriter{pagedOut},
243 }
244 err = pagerCmd.Start()
245 if err != nil {
246 return err
247 }
248 s.pagerProcess = pagerCmd.Process
249 return nil
250}
251
252func (s *IOStreams) StopPager() {
253 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 3

IsStdoutTTYMethod · 0.95
CommandMethod · 0.80
FdMethod · 0.65

Tested by 1

TestIOStreams_pagerFunction · 0.64