MCPcopy
hub / github.com/esm-dev/esm.sh / render

Method render

cli/command_add.go:464–519  ·  view source on GitHub ↗
(resetCursor bool)

Source from the content-addressed store, hash-verified

462}
463
464func (ui *subModuleSelectUI) render(resetCursor bool) {
465 start := 0
466 maxLines := ui.maxLines()
467 if ui.cursor >= maxLines {
468 start = ui.cursor - maxLines + 1
469 }
470 if start+maxLines > len(ui.subModules) {
471 start = max(len(ui.subModules)-maxLines, 0)
472 }
473 end := min(start+maxLines, len(ui.subModules))
474 visibleLines := ui.subModules[start:end]
475 stdout := os.Stdout
476
477 if resetCursor {
478 term.MoveCursorUp(len(visibleLines) + 1)
479 }
480 stdout.Write(CR)
481 stdout.WriteString(term.Cyan("Select sub-modules of " + term.Underline(ui.mainImport.Specifier(true))))
482 stdout.Write(EOL)
483 for i := range visibleLines {
484 index := start + i
485 state := ui.state[index]
486 stdout.Write(CR)
487 term.ClearLineRight()
488 switch state {
489 case 0:
490 if index == ui.cursor {
491 stdout.WriteString("○")
492 } else {
493 stdout.WriteString(term.Dim("○"))
494 }
495 case 1:
496 stdout.WriteString(term.Green("✔"))
497 case 2:
498 stdout.WriteString(term.Dim(ui.spinnerChars[ui.spinnerIndex]))
499 case 3:
500 stdout.WriteString(term.Red("✖︎"))
501 }
502 stdout.Write([]byte{' '})
503 specifier := ui.toSpecifier(index, false)
504 if index == ui.cursor {
505 stdout.WriteString(specifier)
506 } else {
507 stdout.WriteString(term.Dim(specifier))
508 }
509 stdout.Write(EOL)
510 }
511
512 stdout.Write(CR)
513 stdout.WriteString("[a]")
514 stdout.WriteString(term.Dim(" add all "))
515 stdout.WriteString("[space]")
516 stdout.WriteString(term.Dim(" add/remove "))
517 stdout.WriteString("[enter]")
518 stdout.WriteString(term.Dim(" confirm"))
519}
520
521func (ui *subModuleSelectUI) toSpecifier(subModuleIndex int, withVersion bool) string {

Callers 2

showMethod · 0.95
startSpinnerMethod · 0.95

Calls 4

maxLinesMethod · 0.95
toSpecifierMethod · 0.95
WriteMethod · 0.80
SpecifierMethod · 0.80

Tested by

no test coverage detected