summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2020-05-15 18:41:27 +0200
committerGitHub <noreply@github.com>2020-05-15 18:41:27 +0200
commit199bbbcb9fe0620000538ae0c7766ff4a8f4cf0c (patch)
tree25a8719987794932367e896e9ce5813cd49eb44f
parent2b91a3dac0a71108042481d27f549c2261e5de41 (diff)
Fix `tootctl media remove-orphans` choking on unknown files in storage (#13765)
Fix #13762 Catch tootctl interrupt to prevent confusing stacktrace
-rwxr-xr-xbin/tootctl8
-rw-r--r--lib/mastodon/media_cli.rb17
2 files changed, 24 insertions, 1 deletions
diff --git a/bin/tootctl b/bin/tootctl
index f26e1c7edcc..a9ebb22c6dc 100755
--- a/bin/tootctl
+++ b/bin/tootctl
@@ -1,5 +1,11 @@
#!/usr/bin/env ruby
APP_PATH = File.expand_path('../config/application', __dir__)
+
require_relative '../config/boot'
require_relative '../lib/cli'
-Mastodon::CLI.start(ARGV)
+
+begin
+ Mastodon::CLI.start(ARGV)
+rescue Interrupt
+ exit(130)
+end
diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb
index 2b165333598..c95f3410aea 100644
--- a/lib/mastodon/media_cli.rb
+++ b/lib/mastodon/media_cli.rb
@@ -88,6 +88,11 @@ module Mastodon
path_segments = object.key.split('/')
path_segments.delete('cache')
+ if path_segments.size != 7
+ progress.log(pastel.yellow("Unrecognized file found: #{object.key}"))
+ next
+ end
+
model_name = path_segments.first.classify
attachment_name = path_segments[1].singularize
record_id = path_segments[2..-2].join.to_i
@@ -127,6 +132,11 @@ module Mastodon
path_segments = key.split(File::SEPARATOR)
path_segments.delete('cache')
+ if path_segments.size != 7
+ progress.log(pastel.yellow("Unrecognized file found: #{key}"))
+ next
+ end
+
model_name = path_segments.first.classify
record_id = path_segments[2..-2].join.to_i
attachment_name = path_segments[1].singularize
@@ -246,6 +256,11 @@ module Mastodon
path_segments = path.split('/')[2..-1]
path_segments.delete('cache')
+ if path_segments.size != 7
+ say('Not a media URL', :red)
+ exit(1)
+ end
+
model_name = path_segments.first.classify
record_id = path_segments[2..-2].join.to_i
@@ -294,6 +309,8 @@ module Mastodon
segments = object.key.split('/')
segments.delete('cache')
+ next if segments.size != 7
+
model_name = segments.first.classify
record_id = segments[2..-2].join.to_i