Add CLI area progress bar helper (#25208)
This commit is contained in:
		
							parent
							
								
									2a353200ad
								
							
						
					
					
						commit
						35c1c3e57a
					
				| @ -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 | ||||
|  | ||||
| @ -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 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user