summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Felder <feld@FreeBSD.org>2021-02-15 22:40:02 +0000
committerMark Felder <feld@FreeBSD.org>2021-02-15 22:40:02 +0000
commit13b57f2cb31beef012b1960f35513dd8658d8c00 (patch)
tree42c2b284c2ba4c52cfbe3195b27053ee49bba295
parentd265c2c0f1970b6d7962da2dfd864d01af264816 (diff)
Add startup check to ensure we can convert the heic files
-rw-r--r--lib/pleroma/application_requirements.ex28
1 files changed, 27 insertions, 1 deletions
diff --git a/lib/pleroma/application_requirements.ex b/lib/pleroma/application_requirements.ex
index 6ef65b263..36e3cb550 100644
--- a/lib/pleroma/application_requirements.ex
+++ b/lib/pleroma/application_requirements.ex
@@ -162,7 +162,8 @@ defmodule Pleroma.ApplicationRequirements do
filter_commands_statuses = [
check_filter(Pleroma.Upload.Filters.Exiftool, "exiftool"),
check_filter(Pleroma.Upload.Filters.Mogrify, "mogrify"),
- check_filter(Pleroma.Upload.Filters.Mogrifun, "mogrify")
+ check_filter(Pleroma.Upload.Filters.Mogrifun, "mogrify"),
+ check_filter(Pleroma.Upload.Filters.HeifToJpeg, "mogrify")
]
preview_proxy_commands_status =
@@ -213,6 +214,31 @@ defmodule Pleroma.ApplicationRequirements do
defp check_repo_pool_size!(result), do: result
+ defp check_filter(:"Elixir.Pleroma.Upload.Filter.HeifToJpeg" = filter, command_required) do
+ filters = Config.get([Pleroma.Upload, :filters])
+
+ if filter in filters && Pleroma.Utils.command_available?(command_required) do
+ output =
+ String.to_charlist("#{command_required} --version")
+ |> :os.cmd()
+ |> String.Chars.to_string()
+ |> String.split()
+
+ cond do
+ "heic" in output ->
+ true
+
+ true ->
+ Logger.error(
+ "#{filter} is specified in the list of Pleroma.Upload filters, but the " <>
+ "#{command_required} does not support heic files."
+ )
+
+ false
+ end
+ end
+ end
+
defp check_filter(filter, command_required) do
filters = Config.get([Pleroma.Upload, :filters])