Sha256: 7582745dbedc3ddee0a9f9f4749da767b2623beac824842d08efde9f5602014e

Contents?: true

Size: 1 KB

Versions: 3

Compression:

Stored size: 1 KB

Contents

# frozen_string_literal: true

class DryRunReporter
  attr_reader :report

  def initialize
    @report = {}
  end

  def add_to_report(*args)
    if args.first.is_a?(Hash)
      add_to_report_as_hash(args.first)
    else
      add_to_report_as_key_and_values(*args)
    end
  end

  def print_report
    if @report.to_a.map(&:second).flatten.empty?
      puts 'Dry run active. No data would be removed in normal run.'
    else
      puts 'Dry run active. The following data would be removed in normal run:'

      @report.to_a.map(&:first).each do |symbol|
        print_report_line(symbol)
      end
    end
  end

  private

  def add_to_report_as_key_and_values(key, *values)
    report[key] = [] if report[key].nil?
    report[key].concat(values)
    report[key].uniq!
  end

  def add_to_report_as_hash(hash)
    hash.each do |key, array|
      add_to_report_as_key_and_values(key, *array)
    end
  end

  def print_report_line(symbol)
    puts " - #{symbol}: #{@report[symbol].to_json}" if @report[symbol].any?
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
travis-backup-for-v3-0.1.1 lib/dry_run_reporter.rb
travis-backup-for-v3-0.1.0 lib/dry_run_reporter.rb
travis-backup-0.3.0 lib/dry_run_reporter.rb