mix format

This commit is contained in:
Ekaterina Vaartis 2019-04-18 18:09:43 +03:00
parent a141f0807b
commit aaaa428512
2 changed files with 61 additions and 40 deletions

View file

@ -64,6 +64,7 @@ defmodule Mix.Tasks.Pleroma.Emoji do
archive_md5 = :crypto.hash(:md5, binary_archive) |> Base.encode16() archive_md5 = :crypto.hash(:md5, binary_archive) |> Base.encode16()
md5_status_text = ["MD5 of ", :bright, pack_name, :normal, " source file is ", :bright] md5_status_text = ["MD5 of ", :bright, pack_name, :normal, " source file is ", :bright]
if archive_md5 == String.upcase(pack["src_md5"]) do if archive_md5 == String.upcase(pack["src_md5"]) do
IO.puts(IO.ANSI.format(md5_status_text ++ [:green, "OK"])) IO.puts(IO.ANSI.format(md5_status_text ++ [:green, "OK"]))
else else
@ -115,9 +116,14 @@ defmodule Mix.Tasks.Pleroma.Emoji do
IO.puts(IO.ANSI.format(["Writing emoji.txt for ", :bright, pack_name])) IO.puts(IO.ANSI.format(["Writing emoji.txt for ", :bright, pack_name]))
common_pack_path = Path.join([ common_pack_path =
"/", Pleroma.Config.get!([:instance, :static_dir]), "emoji", pack_name Path.join([
]) "/",
Pleroma.Config.get!([:instance, :static_dir]),
"emoji",
pack_name
])
emoji_txt_str = emoji_txt_str =
Enum.map( Enum.map(
files, files,
@ -152,20 +158,26 @@ defmodule Mix.Tasks.Pleroma.Emoji do
default_exts = [".png", ".gif"] default_exts = [".png", ".gif"]
default_exts_str = Enum.join(default_exts, " ") default_exts_str = Enum.join(default_exts, " ")
exts =
String.trim(IO.gets("Emoji file extensions (separated with spaces) [#{default_exts_str}]: "))
exts = if String.length(exts) > 0 do
String.split(exts, " ") |> Enum.filter(fn e -> (e |> String.trim() |> String.length()) > 0 end)
else
default_exts
end
IO.puts "Downloading the pack and generating MD5" exts =
String.trim(
IO.gets("Emoji file extensions (separated with spaces) [#{default_exts_str}]: ")
)
exts =
if String.length(exts) > 0 do
String.split(exts, " ")
|> Enum.filter(fn e -> e |> String.trim() |> String.length() > 0 end)
else
default_exts
end
IO.puts("Downloading the pack and generating MD5")
binary_archive = Tesla.get!(src).body binary_archive = Tesla.get!(src).body
archive_md5 = :crypto.hash(:md5, binary_archive) |> Base.encode16() archive_md5 = :crypto.hash(:md5, binary_archive) |> Base.encode16()
IO.puts "MD5 is #{archive_md5}" IO.puts("MD5 is #{archive_md5}")
pack_json = %{ pack_json = %{
name => %{ name => %{
@ -179,6 +191,7 @@ defmodule Mix.Tasks.Pleroma.Emoji do
} }
tmp_pack_dir = Path.join(System.tmp_dir!(), "emoji-pack-#{name}") tmp_pack_dir = Path.join(System.tmp_dir!(), "emoji-pack-#{name}")
{:ok, _} = {:ok, _} =
:zip.unzip( :zip.unzip(
binary_archive, binary_archive,
@ -187,14 +200,13 @@ defmodule Mix.Tasks.Pleroma.Emoji do
emoji_map = Pleroma.Emoji.make_shortcode_to_file_map(tmp_pack_dir, exts) emoji_map = Pleroma.Emoji.make_shortcode_to_file_map(tmp_pack_dir, exts)
File.write!(files_name, Poison.encode!(emoji_map, pretty: true)) File.write!(files_name, Poison.encode!(emoji_map, pretty: true))
IO.puts """ IO.puts("""
#{files_name} has been created and contains the list of all found emojis in the pack. #{files_name} has been created and contains the list of all found emojis in the pack.
Please review the files in the remove those not needed. Please review the files in the remove those not needed.
""" """)
if File.exists?("index.json") do if File.exists?("index.json") do
existing_data = File.read!("index.json") |> Poison.decode!() existing_data = File.read!("index.json") |> Poison.decode!()
@ -210,13 +222,12 @@ defmodule Mix.Tasks.Pleroma.Emoji do
) )
) )
IO.puts "index.json file has been update with the #{name} pack" IO.puts("index.json file has been update with the #{name} pack")
else else
File.write!("index.json", Poison.encode!(pack_json, pretty: true)) File.write!("index.json", Poison.encode!(pack_json, pretty: true))
IO.puts "index.json has been created with the #{name} pack" IO.puts("index.json has been created with the #{name} pack")
end end
end end
defp fetch_manifest(from) do defp fetch_manifest(from) do

View file

@ -108,13 +108,13 @@ defmodule Pleroma.Emoji do
shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || [] shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || []
emojis = emojis =
(Enum.flat_map( (Enum.flat_map(
packs, packs,
fn pack -> load_pack(Path.join(emoji_dir_path, pack)) end fn pack -> load_pack(Path.join(emoji_dir_path, pack)) end
) ++ ) ++
load_from_file("config/emoji.txt") ++ load_from_file("config/emoji.txt") ++
load_from_file("config/custom_emoji.txt") ++ load_from_file("config/custom_emoji.txt") ++
load_from_globs(shortcode_globs)) load_from_globs(shortcode_globs))
|> Enum.reject(fn value -> value == nil end) |> Enum.reject(fn value -> value == nil end)
true = :ets.insert(@ets, emojis) true = :ets.insert(@ets, emojis)
@ -127,29 +127,37 @@ defmodule Pleroma.Emoji do
pack_name = Path.basename(pack_dir) pack_name = Path.basename(pack_dir)
emoji_txt = Path.join(pack_dir, "emoji.txt") emoji_txt = Path.join(pack_dir, "emoji.txt")
if File.exists?(emoji_txt) do if File.exists?(emoji_txt) do
load_from_file(emoji_txt) load_from_file(emoji_txt)
else else
Logger.info("No emoji.txt found for pack \"#{pack_name}\", assuming all .png files are emoji") Logger.info(
"No emoji.txt found for pack \"#{pack_name}\", assuming all .png files are emoji"
)
common_pack_path = Path.join([ common_pack_path =
"/", Pleroma.Config.get!([:instance, :static_dir]), "emoji", pack_name Path.join([
]) "/",
make_shortcode_to_file_map(pack_dir, [".png"]) |> Pleroma.Config.get!([:instance, :static_dir]),
Enum.map(fn {shortcode, rel_file} -> "emoji",
filename = Path.join(common_pack_path, rel_file) pack_name
])
# If no tag matches, use the pack name as a tag make_shortcode_to_file_map(pack_dir, [".png"])
{shortcode, filename, to_string(match_extra(@groups, filename))} |> Enum.map(fn {shortcode, rel_file} ->
end) filename = Path.join(common_pack_path, rel_file)
# If no tag matches, use the pack name as a tag
{shortcode, filename, to_string(match_extra(@groups, filename))}
end)
end end
end end
def make_shortcode_to_file_map(pack_dir, exts) do def make_shortcode_to_file_map(pack_dir, exts) do
find_all_emoji(pack_dir, exts) |> find_all_emoji(pack_dir, exts)
Enum.map(&Path.relative_to(&1, pack_dir)) |> |> Enum.map(&Path.relative_to(&1, pack_dir))
Enum.map(fn f -> {f |> Path.basename() |> Path.rootname(), f} end) |> |> Enum.map(fn f -> {f |> Path.basename() |> Path.rootname(), f} end)
Enum.into(%{}) |> Enum.into(%{})
end end
def find_all_emoji(dir, exts) do def find_all_emoji(dir, exts) do
@ -158,13 +166,15 @@ defmodule Pleroma.Emoji do
[], [],
fn f, acc -> fn f, acc ->
filepath = Path.join(dir, f) filepath = Path.join(dir, f)
if File.dir?(filepath) do if File.dir?(filepath) do
acc ++ find_all_emoji(filepath, exts) acc ++ find_all_emoji(filepath, exts)
else else
acc ++ [filepath] acc ++ [filepath]
end end
end end
) |> Enum.filter(fn f -> Path.extname(f) in exts end) )
|> Enum.filter(fn f -> Path.extname(f) in exts end)
end end
defp load_from_file(file) do defp load_from_file(file) do