~cytrogen/masto-fe

35c1c3e57a416370fdd62720d85c54490d6c8e20 — Matt Jankowski 2 years ago 2a35320
Add CLI area progress bar helper (#25208)

2 files changed, 39 insertions(+), 18 deletions(-)

M lib/mastodon/cli/base.rb
R lib/mastodon/cli/{helper => progress_helper}.rb
M lib/mastodon/cli/base.rb => lib/mastodon/cli/base.rb +25 -2
@@ 4,16 4,39 @@ require_relative '../../../config/boot'
require_relative '../../../config/environment'

require 'thor'
require_relative 'helper'
require_relative 'progress_helper'

module Mastodon
  module CLI
    class Base < Thor
      include CLI::Helper
      include ProgressHelper

      def self.exit_on_failure?
        true
      end

      private

      def pastel
        @pastel ||= Pastel.new
      end

      def dry_run?
        options[:dry_run]
      end

      def dry_run_mode_suffix
        dry_run? ? ' (DRY RUN)' : ''
      end

      def reset_connection_pools!
        ActiveRecord::Base.establish_connection(
          ActiveRecord::Base.configurations.configs_for(env_name: Rails.env).first.configuration_hash
            .dup
            .tap { |config| config['pool'] = options[:concurrency] + 1 }
        )
        RedisConfiguration.establish_pool(options[:concurrency])
      end
    end
  end
end

R lib/mastodon/cli/helper.rb => lib/mastodon/cli/progress_helper.rb +14 -16
@@ 9,23 9,19 @@ HttpLog.configuration.logger = dev_null
Paperclip.options[:log]      = false
Chewy.logger                 = dev_null

module Mastodon::CLI
  module Helper
    def dry_run?
      options[:dry_run]
    end
require 'ruby-progressbar/outputs/null'

    def dry_run_mode_suffix
      dry_run? ? ' (DRY RUN)' : ''
    end
module Mastodon::CLI
  module ProgressHelper
    PROGRESS_FORMAT = '%c/%u |%b%i| %e'

    def create_progress_bar(total = nil)
      ProgressBar.create(total: total, format: '%c/%u |%b%i| %e')
    end

    def reset_connection_pools!
      ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations[Rails.env].dup.tap { |config| config['pool'] = options[:concurrency] + 1 })
      RedisConfiguration.establish_pool(options[:concurrency])
      ProgressBar.create(
        {
          total: total,
          format: PROGRESS_FORMAT,
        }.merge(progress_output_options)
      )
    end

    def parallelize_with_progress(scope)


@@ 82,8 78,10 @@ module Mastodon::CLI
      [total.value, aggregate.value]
    end

    def pastel
      @pastel ||= Pastel.new
    private

    def progress_output_options
      Rails.env.test? ? { output: ProgressBar::Outputs::Null } : {}
    end
  end
end