Help us shape the future of Go! Take the 2026 Go Developer Survey

listview

package
v1.40.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 23, 2026 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Overview

Package listview provides lazy terminal list navigation and loaded-page rendering.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ContentFits

func ContentFits(content string, width, height int) bool

ContentFits counts the original output's terminal rows, leaving one row for the shell prompt. Hardwrap treats tabs as zero-width controls; terminal output instead advances to the next eight-column tab stop.

func RenderLabels

func RenderLabels(items []gjson.Result, transform transformers.Transformer, opts clioutput.ReadableOptions) (string, error)

RenderLabels preserves complete values independently of table widths.

func RenderTable

func RenderTable(ctx context.Context, operation string, items []gjson.Result, width int, diagnostics bool) (string, bool, error)

RenderTable only presents loaded API items. The caller owns routing, automatic-terminal selection, fetching, cancellation, and fallback output.

func Run

func Run(opts Options, fetch func() (Page, error), cancel context.CancelFunc) error

Run owns the terminal event loop and restores it before final printing.

func ShowPages

func ShowPages[P JSONListPage[P]](first func(context.Context) (P, error), itemsToDisplay int64, opts Options, cursorField string) error

ShowPages requests pages only when the viewer needs them. The first request receives the same cancelable context as all subsequent SDK requests. cursorField is empty for item-ID cursors, or the SDK's envelope cursor field.

Types

type JSONListPage

type JSONListPage[P any] interface {
	comparable
	RawJSON() string
	GetNextPage() (P, error)
}

JSONListPage is implemented by the SDK's explicit API page types.

type Model

type Model struct {
	// contains filtered or unexported fields
}

Model owns navigation state and the lifetime of its single fetch worker.

func New

func New(opts Options, fetch func() (Page, error), cancel context.CancelFunc, width, height int) *Model

New constructs the loaded-page event model without taking terminal ownership. The caller must call Finish after its event loop restores the terminal.

func (*Model) Finish

func (m *Model) Finish(outputErr, runErr error) error

Finish cancels and joins the worker, retains failures, and prints after restoration.

func (*Model) Init

func (m *Model) Init() tea.Cmd

func (*Model) Update

func (m *Model) Update(message tea.Msg) (tea.Model, tea.Cmd)

func (*Model) View

func (m *Model) View() tea.View

type Options

type Options struct {
	Context     context.Context
	Stdout      io.Writer
	RenderPage  func([]gjson.Result, int) (string, error)
	RenderPrint func([]gjson.Result) (string, error)
	PrintHint   func(count, width int) string
	Interrupt   func(error) error
}

Options supplies presentation and feature policy for the shared viewer. Context and render functions must be non-nil. Stdout must be a terminal file when used by Run; New also permits buffered output for an embedded event loop.

type Page

type Page struct {
	Items []gjson.Result
	More  bool
}

Page contains loaded records and whether another page can be requested.

type PaginationError

type PaginationError struct{}

PaginationError is a fixed diagnostic that never includes API cursors or response data.

func (*PaginationError) Error

func (*PaginationError) Error() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL