Documentation ¶
Index ¶
- func AsyncIterate[T any](ctx context.Context, clearAfter bool, items []T, ...)
- func AsyncIterateWithErr[T any](ctx context.Context, clearAfter bool, doneText string, items []T, ...) error
- func Failed(ctx context.Context, e error)
- func Log(ctx context.Context, s string)
- func LogStatus(ctx context.Context, s Status, str string)
- func Logf(ctx context.Context, format string, args ...interface{})
- func LogfStatus(ctx context.Context, s Status, format string, args ...interface{})
- func NewContext(ctx context.Context, sl StatusLine) context.Context
- func SingleLine(ctx context.Context, showStatusChar bool) (context.Context, func(clear bool))
- type ResumeFn
- type Status
- type StatusLine
- type StatusLogger
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AsyncIterate ¶
func AsyncIterate[T any](ctx context.Context, clearAfter bool, items []T, cb func(context.Context, int, T))
AsyncIterate runs a callback for each item in a separate goroutine, passing a context with a StatusLine for each item.
func AsyncIterateWithErr ¶
func AsyncIterateWithErr[T any](ctx context.Context, clearAfter bool, doneText string, items []T, cb func(context.Context, int, T) error) error
AsyncIterateWithErr runs a callback for each item in a separate goroutine, passing a context with a StatusLine for each item. If any callback returns an error, the first error is returned and the remaining goroutines are canceled. If doneText is non-empty, each line will have its status set to this after its task successfully finishes.
func Failed ¶
Failed marks the current line as failed, and prints *the first line* of the error provided. The assumption is that the full error will be printed elsewhere. Panics if ctx doesn't contain a StatusLine.
func LogStatus ¶
LogStatus into the StatusLine ctx carries. Panics if ctx doesn't contain a StatusLine.
func LogfStatus ¶
LogfStatus into the StatusLine ctx carries. Panics if ctx doesn't contain a StatusLine.
func NewContext ¶
func NewContext(ctx context.Context, sl StatusLine) context.Context
NewContext derives a Context that carries sl from ctx.
Types ¶
type StatusLine ¶
type StatusLine interface { Log(s string) Logf(format string, args ...interface{}) LogStatus(s Status, str string) LogfStatus(s Status, format string, args ...interface{}) Failed(e error) // contains filtered or unexported methods }
func FromContext ¶
func FromContext(ctx context.Context) StatusLine
FromContext returns the StatusLine ctx carries. It panics in case ctx carries no StatusLine.
func FromContextOptional ¶
func FromContextOptional(ctx context.Context) StatusLine
FromContextOptional returns the StatusLine ctx carries if any, or nil.
type StatusLogger ¶
type StatusLogger interface { // Destroy destroys the logger. // If clear is true, it will remove the status lines from the terminal. // Otherwise, it will leave them in place with a clear divider. Destroy(clear bool) // Line returns a StatusLine for the given line number. Line(idx int) StatusLine // Pause clears the status lines and prevents redraw until the returned resume function is called. // This allows you to write multiple lines to the terminal without overlapping the status area. Pause() ResumeFn }