Progress bars, just like in the quicklisp!
This library provides almost the same code as used inside quicklisp for drawning progress bars. Differences includeare:
- Different API.
- Thread safety.
- Does not assume that progress bar is representing download progress. Finish message contains just formatted duration (in hours, minutes, seconds format).
Basic exapmle demonstrated below:
(defun perform-step () ; Calls to the update can occur anywhere. (sleep 1) (cl-progress-bar:update 1)) (setf cl-progress-bar:*progress-bar-enabled* t) ; nil by default, must be t to actually display anything. (cl-progress-bar:with-progress-bar (5 "This is just a example. Number of steps is ~a." 5) (dotimes (i 5) (perform-step)))
The above should print the following message after execution.
This is just a example. Number of steps is 5. ================================================== Finished in 5.00 seconds
The progress bar itself is composed from '=' and will grow gradually.
Full blown example can be seen in cl-data-structures
Because progress bar instance is bound to the special variable, in case of calling the update function on different thread you should ensure that cl-progress-bar:progress-bar is bound yourself.