A Go library for rendering customizable progress bars in terminal applications with support for multiple concurrent bars.
uiprogress is a Go library that renders progress bars in terminal applications to provide visual feedback for long-running tasks. It solves the problem of cluttered terminal output by offering a clean, customizable progress indicator that can track multiple concurrent operations.
Go developers building command-line tools or terminal applications that require progress tracking for operations like file downloads, data processing, or deployment pipelines.
Developers choose uiprogress for its simple API, support for multiple concurrent bars, and customizable decorators that allow tailoring progress displays to specific application needs without complex dependencies.
A go library to render progress bars in terminal applications
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports rendering and updating multiple progress bars simultaneously using goroutines, as demonstrated in the multi-bar example with sync.WaitGroup, ideal for parallel task monitoring.
Allows developers to prepend or append custom functions, enabling dynamic displays like step names or completion percentages, shown in the example with deploy steps for tailored feedback.
The Incr() method provides atomic incrementation, making it safe for concurrent use across multiple goroutines without data races, as highlighted in the incr example for high-concurrency scenarios.
New bars can be added at any time during execution, offering flexibility for progressive workflows, demonstrated in the multi-bar example where bar3 is added after a delay.
Does not automatically adjust bar width based on terminal window dimensions, which can lead to formatting issues when terminals are resized, as acknowledged in the TODOs with 'Resize bars by auto detecting window's dimensions' still pending.
Fails to manage cases where the number of progress bars exceeds the vertical screen space, potentially causing visual clutter, as noted in the TODOs with 'Handle more progress bars than vertical screen allows' unimplemented.
While customizable, it lacks advanced features like ETA estimation or percentage formatting options out-of-the-box, requiring custom decorators for such needs, which adds development overhead.