diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2020-05-15 18:41:27 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-15 18:41:27 +0200 |
commit | 199bbbcb9fe0620000538ae0c7766ff4a8f4cf0c (patch) | |
tree | 25a8719987794932367e896e9ce5813cd49eb44f | |
parent | 2b91a3dac0a71108042481d27f549c2261e5de41 (diff) |
Fix `tootctl media remove-orphans` choking on unknown files in storage (#13765)
Fix #13762 Catch tootctl interrupt to prevent confusing stacktrace
-rwxr-xr-x | bin/tootctl | 8 | ||||
-rw-r--r-- | lib/mastodon/media_cli.rb | 17 |
2 files changed, 24 insertions, 1 deletions
diff --git a/bin/tootctl b/bin/tootctl index f26e1c7ed..a9ebb22c6 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 2b1653335..c95f3410a 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 |