Spaces:
Paused
Paused
| class CommandLineProgress | |
| def initialize(max) | |
| @max = max | |
| @current = 0 | |
| @percentage = 0 | |
| puts "Starting processing of #{@max} entries..." if @max.positive? # rubocop:disable Rails/Output | |
| end | |
| def current_string_length | |
| @current_string_length ||= @max.to_s.length | |
| end | |
| def tick | |
| @current += 1 | |
| changed = compute_percentage | |
| inform_progress if changed | |
| end | |
| def compute_percentage | |
| new_percentage = (@current / @max.to_f) * 100.0 | |
| if new_percentage - @percentage >= 10.0 | |
| @percentage += 10 | |
| true | |
| else | |
| false | |
| end | |
| end | |
| def inform_progress | |
| if @percentage.to_i == 100 | |
| puts 'Processing complete!' # rubocop:disable Rails/Output | |
| else | |
| puts "Progress: #{@percentage}% [ #{@current.to_s.rjust(current_string_length, ' ')}/#{@max} ]" # rubocop:disable Rails/Output | |
| end | |
| end | |
| end | |