Add --email and --dry-run options to tootctl accounts delete (#22328)

This commit is contained in:
Claire 2022-12-15 14:52:50 +01:00 committed by GitHub
parent 5917b46c05
commit f239d31f23
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -200,21 +200,44 @@ module Mastodon
end
end
desc 'delete USERNAME', 'Delete a user'
option :email
option :dry_run, type: :boolean
desc 'delete [USERNAME]', 'Delete a user'
long_desc <<-LONG_DESC
Remove a user account with a given USERNAME.
LONG_DESC
def delete(username)
account = Account.find_local(username)
With the --email option, the user is selected based on email
rather than username.
LONG_DESC
def delete(username = nil)
if username.present? && options[:email].present?
say('Use username or --email, not both', :red)
exit(1)
elsif username.blank? && options[:email].blank?
say('No username provided', :red)
exit(1)
end
dry_run = options[:dry_run] ? ' (DRY RUN)' : ''
account = nil
if username.present?
account = Account.find_local(username)
if account.nil?
say('No user with such username', :red)
exit(1)
end
else
account = Account.left_joins(:user).find_by(user: { email: options[:email] })
if account.nil?
say('No user with such email', :red)
exit(1)
end
end
say("Deleting user with #{account.statuses_count} statuses, this might take a while...")
DeleteAccountService.new.call(account, reserve_email: false)
say('OK', :green)
say("Deleting user with #{account.statuses_count} statuses, this might take a while...#{dry_run}")
DeleteAccountService.new.call(account, reserve_email: false) unless options[:dry_run]
say("OK#{dry_run}", :green)
end
option :force, type: :boolean, aliases: [:f], description: 'Override public key check'