Documentation ¶
Index ¶
- Variables
- type Position
- type Progress
- func (p *Progress) AppendTracker(tracker *Tracker)
- func (p *Progress) AppendTrackers(trackers []*Tracker)
- func (p *Progress) IsRenderInProgress() bool
- func (p *Progress) Length() int
- func (p *Progress) LengthActive() int
- func (p *Progress) Render()
- func (p *Progress) SetAutoStop(autoStop bool)
- func (p *Progress) SetOutputWriter(writer io.Writer)
- func (p *Progress) SetSortBy(sortBy SortBy)
- func (p *Progress) SetStyle(style Style)
- func (p *Progress) SetTrackerLength(length int)
- func (p *Progress) SetTrackerPosition(position Position)
- func (p *Progress) SetUpdateFrequency(frequency time.Duration)
- func (p *Progress) ShowPercentage(show bool)
- func (p *Progress) ShowTime(show bool)
- func (p *Progress) ShowTracker(show bool)
- func (p *Progress) ShowValue(show bool)
- func (p *Progress) Stop()
- func (p *Progress) Style() *Style
- type SortBy
- type Style
- type StyleChars
- type StyleColors
- type StyleOptions
- type Tracker
- type Units
- type Writer
Constants ¶
This section is empty.
Variables ¶
var ( // DefaultLengthTracker defines a sane value for a Tracker's length. DefaultLengthTracker = 20 // DefaultUpdateFrequency defines a sane value for the frequency with which // all the Tracker's get updated on the screen. DefaultUpdateFrequency = time.Millisecond * 250 )
var ( // StyleDefault uses ASCII text to render the Trackers. StyleDefault = Style{ Name: "StyleDefault", Chars: StyleCharsDefault, Colors: StyleColorsDefault, Options: StyleOptionsDefault, } // StyleBlocks uses UNICODE Block Drawing characters to render the Trackers. StyleBlocks = Style{ Name: "StyleBlocks", Chars: StyleCharsBlocks, Colors: StyleColorsDefault, Options: StyleOptionsDefault, } // StyleCircle uses UNICODE Circle runes to render the Trackers. StyleCircle = Style{ Name: "StyleCircle", Chars: StyleCharsCircle, Colors: StyleColorsDefault, Options: StyleOptionsDefault, } // StyleRhombus uses UNICODE Rhombus runes to render the Trackers. StyleRhombus = Style{ Name: "StyleRhombus", Chars: StyleCharsRhombus, Colors: StyleColorsDefault, Options: StyleOptionsDefault, } )
var ( // StyleCharsDefault uses simple ASCII characters. StyleCharsDefault = StyleChars{ BoxLeft: "[", BoxRight: "]", Finished: "#", Finished25: ".", Finished50: ".", Finished75: ".", Unfinished: ".", } // StyleCharsBlocks uses UNICODE Block Drawing characters. StyleCharsBlocks = StyleChars{ BoxLeft: "║", BoxRight: "║", Finished: "█", Finished25: "░", Finished50: "▒", Finished75: "▓", Unfinished: "░", } // StyleCharsCircle uses UNICODE Circle characters. StyleCharsCircle = StyleChars{ BoxLeft: "(", BoxRight: ")", Finished: "●", Finished25: "○", Finished50: "○", Finished75: "○", Unfinished: "◌", } // StyleCharsRhombus uses UNICODE Rhombus characters. StyleCharsRhombus = StyleChars{ BoxLeft: "<", BoxRight: ">", Finished: "◆", Finished25: "◈", Finished50: "◈", Finished75: "◈", Unfinished: "◇", } )
var ( // StyleColorsDefault defines sane color choices - None. StyleColorsDefault = StyleColors{} // StyleColorsExample defines a few choice color options. Use this is just as // an example to customize the Tracker/text colors. StyleColorsExample = StyleColors{ Done: text.Colors{text.FgWhite, text.BgBlack}, Message: text.Colors{text.FgWhite, text.BgBlack}, Percent: text.Colors{text.FgHiRed, text.BgBlack}, Stats: text.Colors{text.FgHiBlack, text.BgBlack}, Time: text.Colors{text.FgGreen, text.BgBlack}, Tracker: text.Colors{text.FgYellow, text.BgBlack}, Value: text.Colors{text.FgCyan, text.BgBlack}, } )
var ( // StyleOptionsDefault defines sane defaults for the Options. Use this as an // example to customize the Tracker rendering. StyleOptionsDefault = StyleOptions{ DoneString: "done!", MessageTrackerSeparator: "...", PercentFormat: "%5.2f%%", TimeDonePrecision: time.Millisecond, TimeInProgressPrecision: time.Microsecond, } )
Functions ¶
This section is empty.
Types ¶
type Position ¶
type Position int
Position defines the position of the Tracker with respect to the Tracker's Message.
type Progress ¶
type Progress struct {
// contains filtered or unexported fields
}
Progress helps track progress for one or more tasks.
func (*Progress) AppendTracker ¶
AppendTracker appends a single Tracker for tracking. The Tracker gets added to a queue, which gets picked up by the Render logic in the next rendering cycle.
func (*Progress) AppendTrackers ¶
AppendTrackers appends one or more Trackers for tracking.
func (*Progress) IsRenderInProgress ¶
IsRenderInProgress returns true if a call to Render() was made, and is still in progress and has not ended yet.
func (*Progress) LengthActive ¶
LengthActive returns the number of Trackers actively tracked (not done yet).
func (*Progress) Render ¶
func (p *Progress) Render()
Render renders the Progress tracker and handles all existing trackers and those that are added dynamically while render is in progress.
func (*Progress) SetAutoStop ¶
SetAutoStop toggles the auto-stop functionality. Auto-stop set to true would mean that the Render() function will automatically stop once all currently active Trackers reach their final states. When set to false, the client code will have to call Progress.Stop() to stop the Render() logic. Default: false.
func (*Progress) SetOutputWriter ¶
SetOutputWriter redirects the output of Render to an io.writer object like os.Stdout or os.Stderr or a file. Warning: redirecting the output to a file may not work well as the Render() logic moves the cursor around a lot.
func (*Progress) SetSortBy ¶
SetSortBy defines the sorting mechanism to use to sort the Active Trackers before rendering the. Default: no-sorting == sort-by-insertion-order.
func (*Progress) SetTrackerLength ¶
SetTrackerLength sets the text-length of all the Trackers.
func (*Progress) SetTrackerPosition ¶
SetTrackerPosition sets the position of the tracker with respect to the Tracker message text.
func (*Progress) SetUpdateFrequency ¶
SetUpdateFrequency sets the update frequency while rendering the trackers. the lower the value, the more number of times the Trackers get refreshed. A sane value would be 250ms.
func (*Progress) ShowPercentage ¶
ShowPercentage toggles showing the Percent complete for each Tracker.
func (*Progress) ShowTracker ¶
ShowTracker toggles showing the Tracker (the progress bar).
type SortBy ¶
type SortBy int
SortBy helps sort a list of Trackers by various means.
const ( // SortByNone doesn't do any sorting == sort by insertion order. SortByNone SortBy = iota // SortByMessage sorts by the Message alphabetically in ascending order. SortByMessage // SortByMessageDsc sorts by the Message alphabetically in descending order. SortByMessageDsc // SortByPercent sorts by the Percentage complete in ascending order. SortByPercent // SortByPercentDsc sorts by the Percentage complete in descending order. SortByPercentDsc // SortByValue sorts by the Value in ascending order. SortByValue // SortByValueDsc sorts by the Value in descending order. SortByValueDsc )
type Style ¶
type Style struct { Name string Chars StyleChars Colors StyleColors Options StyleOptions }
Style declares how to render the Progress/Trackers.
type StyleChars ¶
type StyleChars struct { BoxLeft string BoxRight string Finished string Finished25 string Finished50 string Finished75 string Unfinished string }
StyleChars defines the characters/strings to use for rendering the Tracker.
type StyleColors ¶
type StyleColors struct { Done text.Colors Message text.Colors Percent text.Colors Stats text.Colors Time text.Colors Tracker text.Colors Value text.Colors }
StyleColors defines what colors to use for various parts of the Progress and Tracker texts.
type StyleOptions ¶
type StyleOptions struct { DoneString string MessageTrackerSeparator string PercentFormat string TimeDonePrecision time.Duration TimeInProgressPrecision time.Duration }
StyleOptions defines misc. options to control how the Tracker or its parts gets rendered.
type Tracker ¶
type Tracker struct { // Message should contain a short description of the "task" Message string // Total should be set to the (expected) Total/Final value to be reached Total int64 // Units defines the type of the "value" being tracked Units Units // contains filtered or unexported fields }
Tracker helps track the progress of a single task. The way to use it is to instantiate a Tracker with a valid Message, a valid (expected) Total, and Units values. This should then be fed to the Progress Writer with the Writer.AppendTracker() method. When the task that is being done has progress, increment the value using the Tracker.Increment(value) method.
func (*Tracker) IsDone ¶
IsDone returns true if the tracker is done (value has reached the expected Total set during initialization).
func (*Tracker) MarkAsDone ¶
func (t *Tracker) MarkAsDone()
MarkAsDone forces completion of the tracker by updating the current value as the expected Total value.
func (*Tracker) PercentDone ¶
PercentDone returns the currently completed percentage value.
type Units ¶
type Units int
Units defines the "type" of the value being tracked by the Tracker.
const ( // UnitsDefault doesn't define any units. The value will be treated as any // other number. UnitsDefault Units = iota // UnitsBytes defines the value as a storage unit. Values will be converted // and printed in one of these forms: B, KB, MB, GB, TB, PB UnitsBytes // UnitsCurrencyDollar defines the value as a Dollar amount. Values will be // converted and printed in one of these forms: $x.yz, $x.yzK, $x.yzM, // $x.yzB, $x.yzT UnitsCurrencyDollar // UnitsCurrencyEuro defines the value as a Euro amount. Values will be // converted and printed in one of these forms: ₠x.yz, ₠x.yzK, ₠x.yzM, // ₠x.yzB, ₠x.yzT UnitsCurrencyEuro // UnitsCurrencyPound defines the value as a Pound amount. Values will be // converted and printed in one of these forms: £x.yz, £x.yzK, £x.yzM, // £x.yzB, £x.yzT UnitsCurrencyPound )
type Writer ¶
type Writer interface { AppendTracker(tracker *Tracker) AppendTrackers(trackers []*Tracker) IsRenderInProgress() bool Length() int LengthActive() int SetAutoStop(autoStop bool) SetOutputWriter(output io.Writer) SetSortBy(sortBy SortBy) SetStyle(style Style) SetTrackerLength(length int) SetTrackerPosition(position Position) ShowPercentage(show bool) ShowTime(show bool) ShowTracker(show bool) ShowValue(show bool) SetUpdateFrequency(frequency time.Duration) Stop() Style() *Style Render() }
Writer declares the interfaces that can be used to setup and render a Progress tracker with one or more trackers.