This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/lib/backup_restore_v2/logger/cli_progress_logger.rb
2023-01-13 00:20:33 +01:00

68 lines
1.5 KiB
Ruby

# frozen_string_literal: true
require "colored2"
require "ruby-progressbar"
module BackupRestoreV2
module Logger
class CliProgressLogger < BaseProgressLogger
def initialize(message, logger)
@message = message
@logger = logger
@progressbar =
ProgressBar.create(
format: " %j%% %t | %c / %C | %E",
title: @message,
autofinish: false,
smoothing: 0.5,
)
end
def start(max_progress)
@progress = 0
@max_progress = max_progress
@progressbar.progress = @progress
@progressbar.total = @max_progress
log_progress
end
def increment
@progress += 1
@progressbar.increment
log_progress if @progress % 50 == 0
end
def log(message, ex = nil)
@logger.log_to_logfile(message, Logger::WARNING)
end
def success
reset_current_line
@progressbar.format = "%t | %c / %C | %E"
@progressbar.title = "DONE ".green + " #{@message}"
@progressbar.finish
end
def error
reset_current_line
@progressbar.format = "%t | %c / %C | %E"
@progressbar.title = "FAIL ".red + " #{@message}"
@progressbar.finish
end
private
def log_progress
@logger.log_to_logfile("#{@message} | #{@progress} / #{@max_progress}")
end
def reset_current_line
print "\033[K" # delete the output of progressbar, because it doesn't overwrite longer lines
end
end
end
end