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 @@ def run(["get-packs" | args]) 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 @@ def run(["get-packs" | args]) 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 @@ def run(["gen-pack", src]) 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 @@ def run(["gen-pack", src]) 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 @@ def run(["gen-pack", src]) 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 @@ def run(["gen-pack", src]) 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 @@ defp load 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 @@ defp load_pack(pack_dir) 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 @@ def find_all_emoji(dir, exts) 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