about summary refs log tree commit diff
path: root/lib/mastodon/media_cli.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2018-11-08 21:06:26 +0100
committerGitHub <noreply@github.com>2018-11-08 21:06:26 +0100
commit3ddb4604494054acf54b6e8faf69ebe20b5cd92f (patch)
tree16672da752314cc752e3e0b683215e2ba372bddd /lib/mastodon/media_cli.rb
parentccbdf689e824f93bc9a950bb29a4f1ce58e0f1c9 (diff)
Display amount of freed disk space in tootctl media remove (#9229)
* Display amount of freed disk space in tootctl media remove

Fix #9213

* Fix code style issue
Diffstat (limited to 'lib/mastodon/media_cli.rb')
-rw-r--r--lib/mastodon/media_cli.rb13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb
index 179d1b6b5..affc4cedb 100644
--- a/lib/mastodon/media_cli.rb
+++ b/lib/mastodon/media_cli.rb
@@ -6,6 +6,8 @@ require_relative 'cli_helper'
 
 module Mastodon
   class MediaCLI < Thor
+    include ActionView::Helpers::NumberHelper
+
     def self.exit_on_failure?
       true
     end
@@ -36,11 +38,13 @@ module Mastodon
       time_ago  = options[:days].days.ago
       queued    = 0
       processed = 0
-      dry_run = options[:dry_run] ? '(DRY RUN)' : ''
+      size      = 0
+      dry_run   = options[:dry_run] ? '(DRY RUN)' : ''
 
       if options[:background]
-        MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).select(:id).reorder(nil).find_in_batches do |media_attachments|
+        MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).select(:id, :file_file_size).reorder(nil).find_in_batches do |media_attachments|
           queued += media_attachments.size
+          size   += media_attachments.reduce(0) { |sum, m| sum + (m.file_file_size || 0) }
           Maintenance::UncacheMediaWorker.push_bulk(media_attachments.map(&:id)) unless options[:dry_run]
         end
       else
@@ -49,6 +53,7 @@ module Mastodon
             Maintenance::UncacheMediaWorker.new.perform(m) unless options[:dry_run]
             options[:verbose] ? say(m.id) : say('.', :green, false)
             processed += 1
+            size      += m.file_file_size
           end
         end
       end
@@ -56,9 +61,9 @@ module Mastodon
       say
 
       if options[:background]
-        say("Scheduled the deletion of #{queued} media attachments #{dry_run}", :green, true)
+        say("Scheduled the deletion of #{queued} media attachments (approx. #{number_to_human_size(size)}) #{dry_run}", :green, true)
       else
-        say("Removed #{processed} media attachments #{dry_run}", :green, true)
+        say("Removed #{processed} media attachments (approx. #{number_to_human_size(size)}) #{dry_run}", :green, true)
       end
     end
   end