about summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2018-09-28 03:34:24 +0200
committerGitHub <noreply@github.com>2018-09-28 03:34:24 +0200
commit38f5f9cf5bc7d053b53ddf1661fa0b12878a87cd (patch)
tree06949d0660accb31a2aea4f1299618dd3976b24d /lib
parentf0fff3eb1051ff77ec3f37aa75f8c56720b626a3 (diff)
Add tootctl accounts backup (#8811)
Diffstat (limited to 'lib')
-rw-r--r--lib/mastodon/accounts_cli.rb23
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb
index 65c1b395a..b743c5ea1 100644
--- a/lib/mastodon/accounts_cli.rb
+++ b/lib/mastodon/accounts_cli.rb
@@ -170,11 +170,32 @@ module Mastodon
         exit(1)
       end
 
-      say("Deleting user with #{account.statuses_count}, this might take a while...")
+      say("Deleting user with #{account.statuses_count} statuses, this might take a while...")
       SuspendAccountService.new.call(account, remove_user: true)
       say('OK', :green)
     end
 
+    desc 'backup USERNAME', 'Request a backup for a user'
+    long_desc <<-LONG_DESC
+      Request a new backup for an account with a given USERNAME.
+
+      The backup will be created in Sidekiq asynchronously, and
+      the user will receive an e-mail with a link to it once
+      it's done.
+    LONG_DESC
+    def backup(username)
+      account = Account.find_local(username)
+
+      if account.nil?
+        say('No user with such username', :red)
+        exit(1)
+      end
+
+      backup = account.user.backups.create!
+      BackupWorker.perform_async(backup.id)
+      say('OK', :green)
+    end
+
     option :dry_run, type: :boolean
     desc 'cull', 'Remove remote accounts that no longer exist'
     long_desc <<-LONG_DESC