Add refreshing many accounts at once with "tootctl accounts refresh" (#23304)
This commit is contained in:
		
							parent
							
								
									ed782a2d36
								
							
						
					
					
						commit
						8ca1b0b6fc
					
				
					 1 changed files with 21 additions and 15 deletions
				
			
		| 
						 | 
					@ -372,16 +372,16 @@ module Mastodon
 | 
				
			||||||
    option :concurrency, type: :numeric, default: 5, aliases: [:c]
 | 
					    option :concurrency, type: :numeric, default: 5, aliases: [:c]
 | 
				
			||||||
    option :verbose, type: :boolean, aliases: [:v]
 | 
					    option :verbose, type: :boolean, aliases: [:v]
 | 
				
			||||||
    option :dry_run, type: :boolean
 | 
					    option :dry_run, type: :boolean
 | 
				
			||||||
    desc 'refresh [USERNAME]', 'Fetch remote user data and files'
 | 
					    desc 'refresh [USERNAMES]', 'Fetch remote user data and files'
 | 
				
			||||||
    long_desc <<-LONG_DESC
 | 
					    long_desc <<-LONG_DESC
 | 
				
			||||||
      Fetch remote user data and files for one or multiple accounts.
 | 
					      Fetch remote user data and files for one or multiple accounts.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      With the --all option, all remote accounts will be processed.
 | 
					      With the --all option, all remote accounts will be processed.
 | 
				
			||||||
      Through the --domain option, this can be narrowed down to a
 | 
					      Through the --domain option, this can be narrowed down to a
 | 
				
			||||||
      specific domain only. Otherwise, a single remote account must
 | 
					      specific domain only. Otherwise, remote accounts must be
 | 
				
			||||||
      be specified with USERNAME.
 | 
					      specified with space-separated USERNAMES.
 | 
				
			||||||
    LONG_DESC
 | 
					    LONG_DESC
 | 
				
			||||||
    def refresh(username = nil)
 | 
					    def refresh(*usernames)
 | 
				
			||||||
      dry_run = options[:dry_run] ? ' (DRY RUN)' : ''
 | 
					      dry_run = options[:dry_run] ? ' (DRY RUN)' : ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if options[:domain] || options[:all]
 | 
					      if options[:domain] || options[:all]
 | 
				
			||||||
| 
						 | 
					@ -397,19 +397,25 @@ module Mastodon
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        say("Refreshed #{processed} accounts#{dry_run}", :green, true)
 | 
					        say("Refreshed #{processed} accounts#{dry_run}", :green, true)
 | 
				
			||||||
      elsif username.present?
 | 
					      elsif !usernames.empty?
 | 
				
			||||||
        username, domain = username.split('@')
 | 
					        usernames.each do |user|
 | 
				
			||||||
        account = Account.find_remote(username, domain)
 | 
					          user, domain = user.split('@')
 | 
				
			||||||
 | 
					          account = Account.find_remote(user, domain)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if account.nil?
 | 
					          if account.nil?
 | 
				
			||||||
          say('No such account', :red)
 | 
					            say('No such account', :red)
 | 
				
			||||||
          exit(1)
 | 
					            exit(1)
 | 
				
			||||||
        end
 | 
					          end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        unless options[:dry_run]
 | 
					          next if options[:dry_run]
 | 
				
			||||||
          account.reset_avatar!
 | 
					
 | 
				
			||||||
          account.reset_header!
 | 
					          begin
 | 
				
			||||||
          account.save
 | 
					            account.reset_avatar!
 | 
				
			||||||
 | 
					            account.reset_header!
 | 
				
			||||||
 | 
					            account.save
 | 
				
			||||||
 | 
					          rescue Mastodon::UnexpectedResponseError
 | 
				
			||||||
 | 
					            say("Account failed: #{user}@#{domain}", :red)
 | 
				
			||||||
 | 
					          end
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        say("OK#{dry_run}", :green)
 | 
					        say("OK#{dry_run}", :green)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue