MCPcopy
hub / github.com/cli/cli / ExtBrowse

Function ExtBrowse

pkg/cmd/extension/browse/browse.go:380–650  ·  view source on GitHub ↗
(opts ExtBrowseOpts)

Source from the content-addressed store, hash-verified

378}
379
380func ExtBrowse(opts ExtBrowseOpts) error {
381 if opts.Debug {
382 f, err := os.CreateTemp("", "extBrowse-*.txt")
383 if err != nil {
384 return err
385 }
386 defer os.Remove(f.Name())
387
388 opts.Logger = log.New(f, "", log.Lshortfile)
389 } else {
390 opts.Logger = log.New(io.Discard, "", 0)
391 }
392
393 opts.IO.StartProgressIndicator()
394 extEntries, err := getExtensions(opts)
395 opts.IO.StopProgressIndicator()
396 if err != nil {
397 return err
398 }
399
400 opts.Rg = newReadmeGetter(opts.Client, time.Hour*24)
401
402 app := tview.NewApplication()
403
404 outerFlex := tview.NewFlex()
405 innerFlex := tview.NewFlex()
406
407 header := tview.NewTextView().SetText(fmt.Sprintf("browsing %d gh extensions", len(extEntries)))
408 header.SetTextAlign(tview.AlignCenter).SetTextColor(tcell.ColorWhite)
409
410 filter := tview.NewInputField().SetLabel("filter: ")
411 filter.SetFieldBackgroundColor(tcell.ColorGray)
412 filter.SetBorderPadding(0, 0, 20, 20)
413
414 list := tview.NewList()
415
416 readme := tview.NewTextView()
417 readme.SetBorderPadding(1, 1, 0, 1)
418 readme.SetBorder(true).SetBorderColor(tcell.ColorPurple)
419
420 help := tview.NewTextView()
421 help.SetDynamicColors(true)
422 help.SetText("[::b]?[-:-:-]: help [::b]j/k[-:-:-]: move [::b]i[-:-:-]: install [::b]r[-:-:-]: remove [::b]w[-:-:-]: web [::b]↵[-:-:-]: view readme [::b]q[-:-:-]: quit")
423
424 cmdFlex := tview.NewFlex()
425
426 pages := tview.NewPages()
427
428 ui := uiRegistry{
429 App: app,
430 Outerflex: outerFlex,
431 List: list,
432 Pages: pages,
433 CmdFlex: cmdFlex,
434 }
435
436 extList := newExtList(opts, ui, extEntries)
437

Callers 1

NewCmdExtensionFunction · 0.92

Calls 15

getExtensionsFunction · 0.85
newReadmeGetterFunction · 0.85
newExtListFunction · 0.85
getSelectedReadmeFunction · 0.85
PrintlnMethod · 0.80
FilterMethod · 0.80
ScrollUpMethod · 0.80
ScrollDownMethod · 0.80
FindSelectedMethod · 0.80
InstallSelectedMethod · 0.80
RemoveSelectedMethod · 0.80
PageUpMethod · 0.80

Tested by

no test coverage detected