From c26724cc5580a13d9e7e7468860eff8e49e02ba2 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Wed, 17 Apr 2019 23:54:09 +0300 Subject: Remove finmoji and add a way to download emojis in packs These packs are stored in a git repo on pleroma gitlab --- config/config.exs | 4 +- lib/mix/tasks/pleroma/emoji.ex | 98 ++++++++++++++++ lib/pleroma/emoji.ex | 126 +++++++-------------- priv/static/finmoji/1000px/a_trusted_friend.png | Bin 73028 -> 0 bytes priv/static/finmoji/1000px/alandislands.png | Bin 73719 -> 0 bytes priv/static/finmoji/1000px/association.png | Bin 79169 -> 0 bytes priv/static/finmoji/1000px/auroraborealis.png | Bin 230107 -> 0 bytes priv/static/finmoji/1000px/baby_in_a_box.png | Bin 88975 -> 0 bytes priv/static/finmoji/1000px/bear.png | Bin 43219 -> 0 bytes priv/static/finmoji/1000px/black_gold.png | Bin 58373 -> 0 bytes priv/static/finmoji/1000px/christmasparty.png | Bin 94071 -> 0 bytes priv/static/finmoji/1000px/crosscountryskiing.png | Bin 41402 -> 0 bytes priv/static/finmoji/1000px/cupofcoffee.png | Bin 44470 -> 0 bytes priv/static/finmoji/1000px/education.png | Bin 61859 -> 0 bytes priv/static/finmoji/1000px/fashionista_finns.png | Bin 62943 -> 0 bytes priv/static/finmoji/1000px/finnishlove.png | Bin 75603 -> 0 bytes priv/static/finmoji/1000px/flag.png | Bin 61680 -> 0 bytes priv/static/finmoji/1000px/forest.png | Bin 44987 -> 0 bytes priv/static/finmoji/1000px/four_seasons_of_bbq.png | Bin 96149 -> 0 bytes priv/static/finmoji/1000px/girlpower.png | Bin 47542 -> 0 bytes priv/static/finmoji/1000px/handshake.png | Bin 30936 -> 0 bytes priv/static/finmoji/1000px/happiness.png | Bin 40144 -> 0 bytes priv/static/finmoji/1000px/headbanger.png | Bin 52072 -> 0 bytes priv/static/finmoji/1000px/icebreaker.png | Bin 59735 -> 0 bytes priv/static/finmoji/1000px/iceman.png | Bin 241786 -> 0 bytes priv/static/finmoji/1000px/joulutorttu.png | Bin 38280 -> 0 bytes priv/static/finmoji/1000px/kaamos.png | Bin 129659 -> 0 bytes priv/static/finmoji/1000px/kalsarikannit_f.png | Bin 77284 -> 0 bytes priv/static/finmoji/1000px/kalsarikannit_m.png | Bin 52061 -> 0 bytes priv/static/finmoji/1000px/karjalanpiirakka.png | Bin 59854 -> 0 bytes priv/static/finmoji/1000px/kicksled.png | Bin 62979 -> 0 bytes priv/static/finmoji/1000px/kokko.png | Bin 120955 -> 0 bytes priv/static/finmoji/1000px/lavatanssit.png | Bin 127880 -> 0 bytes priv/static/finmoji/1000px/losthopes_f.png | Bin 51293 -> 0 bytes priv/static/finmoji/1000px/losthopes_m.png | Bin 60920 -> 0 bytes priv/static/finmoji/1000px/mattinykanen.png | Bin 106925 -> 0 bytes priv/static/finmoji/1000px/meanwhileinfinland.png | Bin 115605 -> 0 bytes priv/static/finmoji/1000px/moominmamma.png | Bin 168752 -> 0 bytes priv/static/finmoji/1000px/nordicfamily.png | Bin 99681 -> 0 bytes priv/static/finmoji/1000px/out_of_office.png | Bin 70661 -> 0 bytes priv/static/finmoji/1000px/peacemaker.png | Bin 58963 -> 0 bytes priv/static/finmoji/1000px/perkele.png | Bin 52650 -> 0 bytes priv/static/finmoji/1000px/pesapallo.png | Bin 40777 -> 0 bytes priv/static/finmoji/1000px/polarbear.png | Bin 71010 -> 0 bytes .../finmoji/1000px/pusa_hispida_saimensis.png | Bin 45040 -> 0 bytes priv/static/finmoji/1000px/reindeer.png | Bin 44210 -> 0 bytes priv/static/finmoji/1000px/sami.png | Bin 54417 -> 0 bytes priv/static/finmoji/1000px/sauna_f.png | Bin 37303 -> 0 bytes priv/static/finmoji/1000px/sauna_m.png | Bin 34653 -> 0 bytes priv/static/finmoji/1000px/sauna_whisk.png | Bin 98017 -> 0 bytes priv/static/finmoji/1000px/sisu.png | Bin 74499 -> 0 bytes priv/static/finmoji/1000px/stuck.png | Bin 45617 -> 0 bytes priv/static/finmoji/1000px/suomimainittu.png | Bin 67753 -> 0 bytes priv/static/finmoji/1000px/superfood.png | Bin 128635 -> 0 bytes priv/static/finmoji/1000px/swan.png | Bin 42163 -> 0 bytes priv/static/finmoji/1000px/the_cap.png | Bin 36104 -> 0 bytes priv/static/finmoji/1000px/the_conductor.png | Bin 34223 -> 0 bytes priv/static/finmoji/1000px/the_king.png | Bin 90901 -> 0 bytes priv/static/finmoji/1000px/the_voice.png | Bin 77017 -> 0 bytes priv/static/finmoji/1000px/theoriginalsanta.png | Bin 59829 -> 0 bytes priv/static/finmoji/1000px/tomoffinland.png | Bin 69815 -> 0 bytes priv/static/finmoji/1000px/torillatavataan.png | Bin 137173 -> 0 bytes priv/static/finmoji/1000px/unbreakable.png | Bin 77581 -> 0 bytes priv/static/finmoji/1000px/waiting.png | Bin 17677 -> 0 bytes priv/static/finmoji/1000px/white_nights.png | Bin 50176 -> 0 bytes priv/static/finmoji/1000px/woollysocks.png | Bin 130906 -> 0 bytes priv/static/finmoji/128px/a_trusted_friend-128.png | Bin 8011 -> 0 bytes priv/static/finmoji/128px/alandislands-128.png | Bin 6348 -> 0 bytes priv/static/finmoji/128px/association-128.png | Bin 8702 -> 0 bytes priv/static/finmoji/128px/auroraborealis-128.png | Bin 10942 -> 0 bytes priv/static/finmoji/128px/baby_in_a_box-128.png | Bin 9156 -> 0 bytes priv/static/finmoji/128px/bear-128.png | Bin 4330 -> 0 bytes priv/static/finmoji/128px/black_gold-128.png | Bin 6370 -> 0 bytes priv/static/finmoji/128px/christmasparty-128.png | Bin 8546 -> 0 bytes .../finmoji/128px/crosscountryskiing-128.png | Bin 4604 -> 0 bytes priv/static/finmoji/128px/cupofcoffee-128.png | Bin 4273 -> 0 bytes priv/static/finmoji/128px/education-128.png | Bin 6309 -> 0 bytes .../static/finmoji/128px/fashionista_finns-128.png | Bin 7668 -> 0 bytes priv/static/finmoji/128px/finnishlove-128.png | Bin 6002 -> 0 bytes priv/static/finmoji/128px/flag-128.png | Bin 4134 -> 0 bytes priv/static/finmoji/128px/forest-128.png | Bin 4074 -> 0 bytes .../finmoji/128px/four_seasons_of_bbq-128.png | Bin 9531 -> 0 bytes priv/static/finmoji/128px/girlpower-128.png | Bin 4444 -> 0 bytes priv/static/finmoji/128px/handshake-128.png | Bin 2805 -> 0 bytes priv/static/finmoji/128px/happiness-128.png | Bin 4631 -> 0 bytes priv/static/finmoji/128px/headbanger-128.png | Bin 4972 -> 0 bytes priv/static/finmoji/128px/icebreaker-128.png | Bin 7435 -> 0 bytes priv/static/finmoji/128px/iceman-128.png | Bin 12456 -> 0 bytes priv/static/finmoji/128px/joulutorttu-128.png | Bin 3194 -> 0 bytes priv/static/finmoji/128px/kaamos-128.png | Bin 8834 -> 0 bytes priv/static/finmoji/128px/kalsarikannit_f-128.png | Bin 6921 -> 0 bytes priv/static/finmoji/128px/kalsarikannit_m-128.png | Bin 5356 -> 0 bytes priv/static/finmoji/128px/karjalanpiirakka-128.png | Bin 5234 -> 0 bytes priv/static/finmoji/128px/kicksled-128.png | Bin 7302 -> 0 bytes priv/static/finmoji/128px/kokko-128.png | Bin 11435 -> 0 bytes priv/static/finmoji/128px/lavatanssit-128.png | Bin 11916 -> 0 bytes priv/static/finmoji/128px/losthopes_f-128.png | Bin 4886 -> 0 bytes priv/static/finmoji/128px/losthopes_m-128.png | Bin 6336 -> 0 bytes priv/static/finmoji/128px/mattinykanen-128.png | Bin 7411 -> 0 bytes .../finmoji/128px/meanwhileinfinland-128.png | Bin 10995 -> 0 bytes priv/static/finmoji/128px/moominmamma-128.png | Bin 9176 -> 0 bytes priv/static/finmoji/128px/nordicfamily-128.png | Bin 11159 -> 0 bytes priv/static/finmoji/128px/out_of_office-128.png | Bin 7475 -> 0 bytes priv/static/finmoji/128px/peacemaker-128.png | Bin 5250 -> 0 bytes priv/static/finmoji/128px/perkele-128.png | Bin 9884 -> 0 bytes priv/static/finmoji/128px/pesapallo-128.png | Bin 4164 -> 0 bytes priv/static/finmoji/128px/polarbear-128.png | Bin 8390 -> 0 bytes .../finmoji/128px/pusa_hispida_saimensis-128.png | Bin 4455 -> 0 bytes priv/static/finmoji/128px/reindeer-128.png | Bin 3999 -> 0 bytes priv/static/finmoji/128px/sami-128.png | Bin 5205 -> 0 bytes priv/static/finmoji/128px/sauna_f-128.png | Bin 5970 -> 0 bytes priv/static/finmoji/128px/sauna_m-128.png | Bin 5450 -> 0 bytes priv/static/finmoji/128px/sauna_whisk-128.png | Bin 10569 -> 0 bytes priv/static/finmoji/128px/sisu-128.png | Bin 6751 -> 0 bytes priv/static/finmoji/128px/stuck-128.png | Bin 4529 -> 0 bytes priv/static/finmoji/128px/suomimainittu-128.png | Bin 6841 -> 0 bytes priv/static/finmoji/128px/superfood-128.png | Bin 10698 -> 0 bytes priv/static/finmoji/128px/swan-128.png | Bin 4339 -> 0 bytes priv/static/finmoji/128px/the_cap-128.png | Bin 3612 -> 0 bytes priv/static/finmoji/128px/the_conductor-128.png | Bin 4014 -> 0 bytes priv/static/finmoji/128px/the_king-128.png | Bin 8679 -> 0 bytes priv/static/finmoji/128px/the_voice-128.png | Bin 6629 -> 0 bytes priv/static/finmoji/128px/theoriginalsanta-128.png | Bin 5283 -> 0 bytes priv/static/finmoji/128px/tomoffinland-128.png | Bin 7562 -> 0 bytes priv/static/finmoji/128px/torillatavataan-128.png | Bin 13543 -> 0 bytes priv/static/finmoji/128px/unbreakable-128.png | Bin 7393 -> 0 bytes priv/static/finmoji/128px/waiting-128.png | Bin 2732 -> 0 bytes priv/static/finmoji/128px/white_nights-128.png | Bin 6076 -> 0 bytes priv/static/finmoji/128px/woollysocks-128.png | Bin 9507 -> 0 bytes priv/static/finmoji/LICENSE | 1 - 130 files changed, 141 insertions(+), 88 deletions(-) create mode 100644 lib/mix/tasks/pleroma/emoji.ex delete mode 100644 priv/static/finmoji/1000px/a_trusted_friend.png delete mode 100644 priv/static/finmoji/1000px/alandislands.png delete mode 100644 priv/static/finmoji/1000px/association.png delete mode 100644 priv/static/finmoji/1000px/auroraborealis.png delete mode 100644 priv/static/finmoji/1000px/baby_in_a_box.png delete mode 100644 priv/static/finmoji/1000px/bear.png delete mode 100644 priv/static/finmoji/1000px/black_gold.png delete mode 100644 priv/static/finmoji/1000px/christmasparty.png delete mode 100644 priv/static/finmoji/1000px/crosscountryskiing.png delete mode 100644 priv/static/finmoji/1000px/cupofcoffee.png delete mode 100644 priv/static/finmoji/1000px/education.png delete mode 100644 priv/static/finmoji/1000px/fashionista_finns.png delete mode 100644 priv/static/finmoji/1000px/finnishlove.png delete mode 100644 priv/static/finmoji/1000px/flag.png delete mode 100644 priv/static/finmoji/1000px/forest.png delete mode 100644 priv/static/finmoji/1000px/four_seasons_of_bbq.png delete mode 100644 priv/static/finmoji/1000px/girlpower.png delete mode 100644 priv/static/finmoji/1000px/handshake.png delete mode 100644 priv/static/finmoji/1000px/happiness.png delete mode 100644 priv/static/finmoji/1000px/headbanger.png delete mode 100644 priv/static/finmoji/1000px/icebreaker.png delete mode 100644 priv/static/finmoji/1000px/iceman.png delete mode 100644 priv/static/finmoji/1000px/joulutorttu.png delete mode 100644 priv/static/finmoji/1000px/kaamos.png delete mode 100644 priv/static/finmoji/1000px/kalsarikannit_f.png delete mode 100644 priv/static/finmoji/1000px/kalsarikannit_m.png delete mode 100644 priv/static/finmoji/1000px/karjalanpiirakka.png delete mode 100644 priv/static/finmoji/1000px/kicksled.png delete mode 100644 priv/static/finmoji/1000px/kokko.png delete mode 100644 priv/static/finmoji/1000px/lavatanssit.png delete mode 100644 priv/static/finmoji/1000px/losthopes_f.png delete mode 100644 priv/static/finmoji/1000px/losthopes_m.png delete mode 100644 priv/static/finmoji/1000px/mattinykanen.png delete mode 100644 priv/static/finmoji/1000px/meanwhileinfinland.png delete mode 100644 priv/static/finmoji/1000px/moominmamma.png delete mode 100644 priv/static/finmoji/1000px/nordicfamily.png delete mode 100644 priv/static/finmoji/1000px/out_of_office.png delete mode 100644 priv/static/finmoji/1000px/peacemaker.png delete mode 100644 priv/static/finmoji/1000px/perkele.png delete mode 100644 priv/static/finmoji/1000px/pesapallo.png delete mode 100644 priv/static/finmoji/1000px/polarbear.png delete mode 100644 priv/static/finmoji/1000px/pusa_hispida_saimensis.png delete mode 100644 priv/static/finmoji/1000px/reindeer.png delete mode 100644 priv/static/finmoji/1000px/sami.png delete mode 100644 priv/static/finmoji/1000px/sauna_f.png delete mode 100644 priv/static/finmoji/1000px/sauna_m.png delete mode 100644 priv/static/finmoji/1000px/sauna_whisk.png delete mode 100644 priv/static/finmoji/1000px/sisu.png delete mode 100644 priv/static/finmoji/1000px/stuck.png delete mode 100644 priv/static/finmoji/1000px/suomimainittu.png delete mode 100644 priv/static/finmoji/1000px/superfood.png delete mode 100644 priv/static/finmoji/1000px/swan.png delete mode 100644 priv/static/finmoji/1000px/the_cap.png delete mode 100644 priv/static/finmoji/1000px/the_conductor.png delete mode 100644 priv/static/finmoji/1000px/the_king.png delete mode 100644 priv/static/finmoji/1000px/the_voice.png delete mode 100644 priv/static/finmoji/1000px/theoriginalsanta.png delete mode 100644 priv/static/finmoji/1000px/tomoffinland.png delete mode 100644 priv/static/finmoji/1000px/torillatavataan.png delete mode 100644 priv/static/finmoji/1000px/unbreakable.png delete mode 100644 priv/static/finmoji/1000px/waiting.png delete mode 100644 priv/static/finmoji/1000px/white_nights.png delete mode 100644 priv/static/finmoji/1000px/woollysocks.png delete mode 100644 priv/static/finmoji/128px/a_trusted_friend-128.png delete mode 100644 priv/static/finmoji/128px/alandislands-128.png delete mode 100644 priv/static/finmoji/128px/association-128.png delete mode 100644 priv/static/finmoji/128px/auroraborealis-128.png delete mode 100644 priv/static/finmoji/128px/baby_in_a_box-128.png delete mode 100644 priv/static/finmoji/128px/bear-128.png delete mode 100644 priv/static/finmoji/128px/black_gold-128.png delete mode 100644 priv/static/finmoji/128px/christmasparty-128.png delete mode 100644 priv/static/finmoji/128px/crosscountryskiing-128.png delete mode 100644 priv/static/finmoji/128px/cupofcoffee-128.png delete mode 100644 priv/static/finmoji/128px/education-128.png delete mode 100644 priv/static/finmoji/128px/fashionista_finns-128.png delete mode 100644 priv/static/finmoji/128px/finnishlove-128.png delete mode 100644 priv/static/finmoji/128px/flag-128.png delete mode 100644 priv/static/finmoji/128px/forest-128.png delete mode 100644 priv/static/finmoji/128px/four_seasons_of_bbq-128.png delete mode 100644 priv/static/finmoji/128px/girlpower-128.png delete mode 100644 priv/static/finmoji/128px/handshake-128.png delete mode 100644 priv/static/finmoji/128px/happiness-128.png delete mode 100644 priv/static/finmoji/128px/headbanger-128.png delete mode 100644 priv/static/finmoji/128px/icebreaker-128.png delete mode 100644 priv/static/finmoji/128px/iceman-128.png delete mode 100644 priv/static/finmoji/128px/joulutorttu-128.png delete mode 100644 priv/static/finmoji/128px/kaamos-128.png delete mode 100644 priv/static/finmoji/128px/kalsarikannit_f-128.png delete mode 100644 priv/static/finmoji/128px/kalsarikannit_m-128.png delete mode 100644 priv/static/finmoji/128px/karjalanpiirakka-128.png delete mode 100644 priv/static/finmoji/128px/kicksled-128.png delete mode 100644 priv/static/finmoji/128px/kokko-128.png delete mode 100644 priv/static/finmoji/128px/lavatanssit-128.png delete mode 100644 priv/static/finmoji/128px/losthopes_f-128.png delete mode 100644 priv/static/finmoji/128px/losthopes_m-128.png delete mode 100644 priv/static/finmoji/128px/mattinykanen-128.png delete mode 100644 priv/static/finmoji/128px/meanwhileinfinland-128.png delete mode 100644 priv/static/finmoji/128px/moominmamma-128.png delete mode 100644 priv/static/finmoji/128px/nordicfamily-128.png delete mode 100644 priv/static/finmoji/128px/out_of_office-128.png delete mode 100644 priv/static/finmoji/128px/peacemaker-128.png delete mode 100644 priv/static/finmoji/128px/perkele-128.png delete mode 100644 priv/static/finmoji/128px/pesapallo-128.png delete mode 100644 priv/static/finmoji/128px/polarbear-128.png delete mode 100644 priv/static/finmoji/128px/pusa_hispida_saimensis-128.png delete mode 100644 priv/static/finmoji/128px/reindeer-128.png delete mode 100644 priv/static/finmoji/128px/sami-128.png delete mode 100644 priv/static/finmoji/128px/sauna_f-128.png delete mode 100644 priv/static/finmoji/128px/sauna_m-128.png delete mode 100644 priv/static/finmoji/128px/sauna_whisk-128.png delete mode 100644 priv/static/finmoji/128px/sisu-128.png delete mode 100644 priv/static/finmoji/128px/stuck-128.png delete mode 100644 priv/static/finmoji/128px/suomimainittu-128.png delete mode 100644 priv/static/finmoji/128px/superfood-128.png delete mode 100644 priv/static/finmoji/128px/swan-128.png delete mode 100644 priv/static/finmoji/128px/the_cap-128.png delete mode 100644 priv/static/finmoji/128px/the_conductor-128.png delete mode 100644 priv/static/finmoji/128px/the_king-128.png delete mode 100644 priv/static/finmoji/128px/the_voice-128.png delete mode 100644 priv/static/finmoji/128px/theoriginalsanta-128.png delete mode 100644 priv/static/finmoji/128px/tomoffinland-128.png delete mode 100644 priv/static/finmoji/128px/torillatavataan-128.png delete mode 100644 priv/static/finmoji/128px/unbreakable-128.png delete mode 100644 priv/static/finmoji/128px/waiting-128.png delete mode 100644 priv/static/finmoji/128px/white_nights-128.png delete mode 100644 priv/static/finmoji/128px/woollysocks-128.png delete mode 100644 priv/static/finmoji/LICENSE diff --git a/config/config.exs b/config/config.exs index 1114dc84d..c0c06b189 100644 --- a/config/config.exs +++ b/config/config.exs @@ -100,8 +100,8 @@ config :pleroma, :emoji, shortcode_globs: ["/emoji/custom/**/*.png"], groups: [ # Put groups that have higher priority than defaults here. Example in `docs/config/custom_emoji.md` - Finmoji: "/finmoji/128px/*-128.png", - Custom: ["/emoji/*.png", "/emoji/custom/*.png"] + Finmoji: ["/finmoji/128px/*-128.png", "/instance/static/emoji/finmoji/128px/*-128.png"], + Custom: ["/emoji/*.png", "/emoji/custom/*.png", "/instance/static/emoji/**/*.png"] ] config :pleroma, :uri_schemes, diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex new file mode 100644 index 000000000..ffe733617 --- /dev/null +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -0,0 +1,98 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2018 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mix.Tasks.Pleroma.Emoji do + use Mix.Task + + @shortdoc "Manages Pleroma instance" + @moduledoc """ + """ + + defp fetch_manifest do + Tesla.get!("https://git.pleroma.social/vaartis/emoji-index/raw/master/index.json").body + |> Poison.decode!() + end + + def run(["ls-packs"]) do + Application.ensure_all_started(:hackney) + + manifest = fetch_manifest() + + Enum.each(manifest, fn {name, info} -> + to_print = [ + {"Name", name}, + {"Homepage", info["homepage"]}, + {"Description", info["description"]}, + {"License", info["license"]}, + {"Source", info["src"]} + ] + + for {param, value} <- to_print do + IO.puts(IO.ANSI.format([:bright, param, :normal, ": ", value])) + end + end) + end + + def run(["get-pack", pack_name]) do + Application.ensure_all_started(:hackney) + + manifest = fetch_manifest() + + if Map.has_key?(manifest, pack_name) do + pack = manifest[pack_name] + src_url = pack["src"] + + IO.puts( + IO.ANSI.format([ + "Downloading pack ", + :bright, + pack_name, + :normal, + " from ", + :underline, + src_url + ]) + ) + + binary_archive = Tesla.get!(src_url).body + + IO.puts("Unpacking #{pack_name} pack") + + static_path = Path.join(:code.priv_dir(:pleroma), "static") + + pack_path = + Path.join([ + static_path, + Pleroma.Config.get!([:instance, :static_dir]), + "emoji", + pack_name + ]) + + files_to_unzip = + Enum.map( + pack["files"], + fn {_, f} -> to_charlist(f) end + ) + + {:ok, _} = + :zip.unzip(binary_archive, + cwd: pack_path, + file_list: files_to_unzip + ) + + IO.puts("Wriring emoji.txt for the #{pack_name} pack") + + emoji_txt_str = + Enum.map( + pack["files"], + fn {shortcode, path} -> "#{shortcode}, /instance/static/emoji/#{pack_name}/#{path}" end + ) + |> Enum.join("\n") + + File.write!(Path.join(pack_path, "emoji.txt"), emoji_txt_str) + else + IO.puts(IO.ANSI.format([:bright, :red, "No pack named \"#{pack_name}\" found"])) + end + end +end diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index 87c7f2cec..8ead7ea1e 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -14,6 +14,8 @@ defmodule Pleroma.Emoji do """ use GenServer + require Logger + @type pattern :: Regex.t() | module() | String.t() @type patterns :: pattern() | [pattern()] @type group_patterns :: keyword(patterns()) @@ -79,96 +81,50 @@ defmodule Pleroma.Emoji do end defp load do - finmoji_enabled = Keyword.get(Application.get_env(:pleroma, :instance), :finmoji_enabled) - shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || [] + static_path = Path.join(:code.priv_dir(:pleroma), "static") - emojis = - (load_finmoji(finmoji_enabled) ++ - load_from_file("config/emoji.txt") ++ - load_from_file("config/custom_emoji.txt") ++ - load_from_globs(shortcode_globs)) - |> Enum.reject(fn value -> value == nil end) + emoji_dir_path = + Path.join([ + static_path, + Pleroma.Config.get!([:instance, :static_dir]), + "emoji" + ]) + + case File.ls(emoji_dir_path) do + {:error, :enoent} -> + # The custom emoji directory doesn't exist, + # don't do anything + nil + + {:error, e} -> + # There was some other error + Logger.error("Could not access the custom emoji directory #{emoji_dir_path}: #{e}") + + {:ok, packs} -> + # Print the packs we've found + Logger.info("Found emoji packs: #{Enum.join(packs, ", ")}") + + # compat thing for old custom emoji handling + shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || [] + + emojis = + # Add the things fro + # Deprecated? + (Enum.flat_map( + packs, + fn pack -> load_from_file(Path.join([emoji_dir_path, pack, "emoji.txt"])) end + ) ++ + load_from_file("config/emoji.txt") ++ + load_from_file("config/custom_emoji.txt") ++ + load_from_globs(shortcode_globs)) + |> Enum.reject(fn value -> value == nil end) + + true = :ets.insert(@ets, emojis) + end - true = :ets.insert(@ets, emojis) :ok end - @finmoji [ - "a_trusted_friend", - "alandislands", - "association", - "auroraborealis", - "baby_in_a_box", - "bear", - "black_gold", - "christmasparty", - "crosscountryskiing", - "cupofcoffee", - "education", - "fashionista_finns", - "finnishlove", - "flag", - "forest", - "four_seasons_of_bbq", - "girlpower", - "handshake", - "happiness", - "headbanger", - "icebreaker", - "iceman", - "joulutorttu", - "kaamos", - "kalsarikannit_f", - "kalsarikannit_m", - "karjalanpiirakka", - "kicksled", - "kokko", - "lavatanssit", - "losthopes_f", - "losthopes_m", - "mattinykanen", - "meanwhileinfinland", - "moominmamma", - "nordicfamily", - "out_of_office", - "peacemaker", - "perkele", - "pesapallo", - "polarbear", - "pusa_hispida_saimensis", - "reindeer", - "sami", - "sauna_f", - "sauna_m", - "sauna_whisk", - "sisu", - "stuck", - "suomimainittu", - "superfood", - "swan", - "the_cap", - "the_conductor", - "the_king", - "the_voice", - "theoriginalsanta", - "tomoffinland", - "torillatavataan", - "unbreakable", - "waiting", - "white_nights", - "woollysocks" - ] - - defp load_finmoji(true) do - Enum.map(@finmoji, fn finmoji -> - file_name = "/finmoji/128px/#{finmoji}-128.png" - group = match_extra(@groups, file_name) - {finmoji, file_name, to_string(group)} - end) - end - - defp load_finmoji(_), do: [] - defp load_from_file(file) do if File.exists?(file) do load_from_file_stream(File.stream!(file)) diff --git a/priv/static/finmoji/1000px/a_trusted_friend.png b/priv/static/finmoji/1000px/a_trusted_friend.png deleted file mode 100644 index 5658d589c..000000000 Binary files a/priv/static/finmoji/1000px/a_trusted_friend.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/alandislands.png b/priv/static/finmoji/1000px/alandislands.png deleted file mode 100644 index 094dd3284..000000000 Binary files a/priv/static/finmoji/1000px/alandislands.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/association.png b/priv/static/finmoji/1000px/association.png deleted file mode 100644 index dad3b8864..000000000 Binary files a/priv/static/finmoji/1000px/association.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/auroraborealis.png b/priv/static/finmoji/1000px/auroraborealis.png deleted file mode 100644 index 5875dc2c4..000000000 Binary files a/priv/static/finmoji/1000px/auroraborealis.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/baby_in_a_box.png b/priv/static/finmoji/1000px/baby_in_a_box.png deleted file mode 100644 index 9479aaebb..000000000 Binary files a/priv/static/finmoji/1000px/baby_in_a_box.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/bear.png b/priv/static/finmoji/1000px/bear.png deleted file mode 100644 index 5d9fbb320..000000000 Binary files a/priv/static/finmoji/1000px/bear.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/black_gold.png b/priv/static/finmoji/1000px/black_gold.png deleted file mode 100644 index 707e949ec..000000000 Binary files a/priv/static/finmoji/1000px/black_gold.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/christmasparty.png b/priv/static/finmoji/1000px/christmasparty.png deleted file mode 100644 index 785decb8d..000000000 Binary files a/priv/static/finmoji/1000px/christmasparty.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/crosscountryskiing.png b/priv/static/finmoji/1000px/crosscountryskiing.png deleted file mode 100644 index 2a9bddf41..000000000 Binary files a/priv/static/finmoji/1000px/crosscountryskiing.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/cupofcoffee.png b/priv/static/finmoji/1000px/cupofcoffee.png deleted file mode 100644 index a12cc867c..000000000 Binary files a/priv/static/finmoji/1000px/cupofcoffee.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/education.png b/priv/static/finmoji/1000px/education.png deleted file mode 100644 index af9feee59..000000000 Binary files a/priv/static/finmoji/1000px/education.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/fashionista_finns.png b/priv/static/finmoji/1000px/fashionista_finns.png deleted file mode 100644 index d1140250d..000000000 Binary files a/priv/static/finmoji/1000px/fashionista_finns.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/finnishlove.png b/priv/static/finmoji/1000px/finnishlove.png deleted file mode 100644 index 00148202f..000000000 Binary files a/priv/static/finmoji/1000px/finnishlove.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/flag.png b/priv/static/finmoji/1000px/flag.png deleted file mode 100644 index e709449d7..000000000 Binary files a/priv/static/finmoji/1000px/flag.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/forest.png b/priv/static/finmoji/1000px/forest.png deleted file mode 100644 index b2d64ea37..000000000 Binary files a/priv/static/finmoji/1000px/forest.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/four_seasons_of_bbq.png b/priv/static/finmoji/1000px/four_seasons_of_bbq.png deleted file mode 100644 index 42f4a7fb7..000000000 Binary files a/priv/static/finmoji/1000px/four_seasons_of_bbq.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/girlpower.png b/priv/static/finmoji/1000px/girlpower.png deleted file mode 100644 index 7674f2e26..000000000 Binary files a/priv/static/finmoji/1000px/girlpower.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/handshake.png b/priv/static/finmoji/1000px/handshake.png deleted file mode 100644 index d9857d699..000000000 Binary files a/priv/static/finmoji/1000px/handshake.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/happiness.png b/priv/static/finmoji/1000px/happiness.png deleted file mode 100644 index fbfc34fe4..000000000 Binary files a/priv/static/finmoji/1000px/happiness.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/headbanger.png b/priv/static/finmoji/1000px/headbanger.png deleted file mode 100644 index d9c2f6247..000000000 Binary files a/priv/static/finmoji/1000px/headbanger.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/icebreaker.png b/priv/static/finmoji/1000px/icebreaker.png deleted file mode 100644 index aedce3dca..000000000 Binary files a/priv/static/finmoji/1000px/icebreaker.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/iceman.png b/priv/static/finmoji/1000px/iceman.png deleted file mode 100644 index c172e60d5..000000000 Binary files a/priv/static/finmoji/1000px/iceman.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/joulutorttu.png b/priv/static/finmoji/1000px/joulutorttu.png deleted file mode 100644 index d7b5a7e53..000000000 Binary files a/priv/static/finmoji/1000px/joulutorttu.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/kaamos.png b/priv/static/finmoji/1000px/kaamos.png deleted file mode 100644 index 139b21953..000000000 Binary files a/priv/static/finmoji/1000px/kaamos.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/kalsarikannit_f.png b/priv/static/finmoji/1000px/kalsarikannit_f.png deleted file mode 100644 index 064c86160..000000000 Binary files a/priv/static/finmoji/1000px/kalsarikannit_f.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/kalsarikannit_m.png b/priv/static/finmoji/1000px/kalsarikannit_m.png deleted file mode 100644 index e08bd27af..000000000 Binary files a/priv/static/finmoji/1000px/kalsarikannit_m.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/karjalanpiirakka.png b/priv/static/finmoji/1000px/karjalanpiirakka.png deleted file mode 100644 index dbf647df5..000000000 Binary files a/priv/static/finmoji/1000px/karjalanpiirakka.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/kicksled.png b/priv/static/finmoji/1000px/kicksled.png deleted file mode 100644 index 305a56f77..000000000 Binary files a/priv/static/finmoji/1000px/kicksled.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/kokko.png b/priv/static/finmoji/1000px/kokko.png deleted file mode 100644 index 0a5472c9a..000000000 Binary files a/priv/static/finmoji/1000px/kokko.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/lavatanssit.png b/priv/static/finmoji/1000px/lavatanssit.png deleted file mode 100644 index a1f0a69dd..000000000 Binary files a/priv/static/finmoji/1000px/lavatanssit.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/losthopes_f.png b/priv/static/finmoji/1000px/losthopes_f.png deleted file mode 100644 index a847df3c5..000000000 Binary files a/priv/static/finmoji/1000px/losthopes_f.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/losthopes_m.png b/priv/static/finmoji/1000px/losthopes_m.png deleted file mode 100644 index 93c83b995..000000000 Binary files a/priv/static/finmoji/1000px/losthopes_m.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/mattinykanen.png b/priv/static/finmoji/1000px/mattinykanen.png deleted file mode 100644 index 2d9c9d38f..000000000 Binary files a/priv/static/finmoji/1000px/mattinykanen.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/meanwhileinfinland.png b/priv/static/finmoji/1000px/meanwhileinfinland.png deleted file mode 100644 index 794db1eed..000000000 Binary files a/priv/static/finmoji/1000px/meanwhileinfinland.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/moominmamma.png b/priv/static/finmoji/1000px/moominmamma.png deleted file mode 100644 index d34b1b98b..000000000 Binary files a/priv/static/finmoji/1000px/moominmamma.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/nordicfamily.png b/priv/static/finmoji/1000px/nordicfamily.png deleted file mode 100644 index 21292eaff..000000000 Binary files a/priv/static/finmoji/1000px/nordicfamily.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/out_of_office.png b/priv/static/finmoji/1000px/out_of_office.png deleted file mode 100644 index b72d6dbd5..000000000 Binary files a/priv/static/finmoji/1000px/out_of_office.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/peacemaker.png b/priv/static/finmoji/1000px/peacemaker.png deleted file mode 100644 index 48a51fa6f..000000000 Binary files a/priv/static/finmoji/1000px/peacemaker.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/perkele.png b/priv/static/finmoji/1000px/perkele.png deleted file mode 100644 index 16a68d053..000000000 Binary files a/priv/static/finmoji/1000px/perkele.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/pesapallo.png b/priv/static/finmoji/1000px/pesapallo.png deleted file mode 100644 index 2f35c8e02..000000000 Binary files a/priv/static/finmoji/1000px/pesapallo.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/polarbear.png b/priv/static/finmoji/1000px/polarbear.png deleted file mode 100644 index ce6c65e8b..000000000 Binary files a/priv/static/finmoji/1000px/polarbear.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/pusa_hispida_saimensis.png b/priv/static/finmoji/1000px/pusa_hispida_saimensis.png deleted file mode 100644 index 35ec8caed..000000000 Binary files a/priv/static/finmoji/1000px/pusa_hispida_saimensis.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/reindeer.png b/priv/static/finmoji/1000px/reindeer.png deleted file mode 100644 index e60f0f0a4..000000000 Binary files a/priv/static/finmoji/1000px/reindeer.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/sami.png b/priv/static/finmoji/1000px/sami.png deleted file mode 100644 index e4703dfd2..000000000 Binary files a/priv/static/finmoji/1000px/sami.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/sauna_f.png b/priv/static/finmoji/1000px/sauna_f.png deleted file mode 100644 index 9a4ba8629..000000000 Binary files a/priv/static/finmoji/1000px/sauna_f.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/sauna_m.png b/priv/static/finmoji/1000px/sauna_m.png deleted file mode 100644 index 4bdd33f7b..000000000 Binary files a/priv/static/finmoji/1000px/sauna_m.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/sauna_whisk.png b/priv/static/finmoji/1000px/sauna_whisk.png deleted file mode 100644 index c16928065..000000000 Binary files a/priv/static/finmoji/1000px/sauna_whisk.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/sisu.png b/priv/static/finmoji/1000px/sisu.png deleted file mode 100644 index 238453bb5..000000000 Binary files a/priv/static/finmoji/1000px/sisu.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/stuck.png b/priv/static/finmoji/1000px/stuck.png deleted file mode 100644 index 4180e3ecd..000000000 Binary files a/priv/static/finmoji/1000px/stuck.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/suomimainittu.png b/priv/static/finmoji/1000px/suomimainittu.png deleted file mode 100644 index af46347f5..000000000 Binary files a/priv/static/finmoji/1000px/suomimainittu.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/superfood.png b/priv/static/finmoji/1000px/superfood.png deleted file mode 100644 index 8fa033c18..000000000 Binary files a/priv/static/finmoji/1000px/superfood.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/swan.png b/priv/static/finmoji/1000px/swan.png deleted file mode 100644 index 5363f861d..000000000 Binary files a/priv/static/finmoji/1000px/swan.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/the_cap.png b/priv/static/finmoji/1000px/the_cap.png deleted file mode 100644 index 7f547dc0e..000000000 Binary files a/priv/static/finmoji/1000px/the_cap.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/the_conductor.png b/priv/static/finmoji/1000px/the_conductor.png deleted file mode 100644 index ed5ca7f1f..000000000 Binary files a/priv/static/finmoji/1000px/the_conductor.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/the_king.png b/priv/static/finmoji/1000px/the_king.png deleted file mode 100644 index 8c3a5c66d..000000000 Binary files a/priv/static/finmoji/1000px/the_king.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/the_voice.png b/priv/static/finmoji/1000px/the_voice.png deleted file mode 100644 index 9bfc87b3a..000000000 Binary files a/priv/static/finmoji/1000px/the_voice.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/theoriginalsanta.png b/priv/static/finmoji/1000px/theoriginalsanta.png deleted file mode 100644 index b8dc1ef47..000000000 Binary files a/priv/static/finmoji/1000px/theoriginalsanta.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/tomoffinland.png b/priv/static/finmoji/1000px/tomoffinland.png deleted file mode 100644 index 97da05a64..000000000 Binary files a/priv/static/finmoji/1000px/tomoffinland.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/torillatavataan.png b/priv/static/finmoji/1000px/torillatavataan.png deleted file mode 100644 index ff7a81eda..000000000 Binary files a/priv/static/finmoji/1000px/torillatavataan.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/unbreakable.png b/priv/static/finmoji/1000px/unbreakable.png deleted file mode 100644 index 1778fc115..000000000 Binary files a/priv/static/finmoji/1000px/unbreakable.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/waiting.png b/priv/static/finmoji/1000px/waiting.png deleted file mode 100644 index 2aa9afa70..000000000 Binary files a/priv/static/finmoji/1000px/waiting.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/white_nights.png b/priv/static/finmoji/1000px/white_nights.png deleted file mode 100644 index 8e9cd3fc8..000000000 Binary files a/priv/static/finmoji/1000px/white_nights.png and /dev/null differ diff --git a/priv/static/finmoji/1000px/woollysocks.png b/priv/static/finmoji/1000px/woollysocks.png deleted file mode 100644 index 5ee4e6de1..000000000 Binary files a/priv/static/finmoji/1000px/woollysocks.png and /dev/null differ diff --git a/priv/static/finmoji/128px/a_trusted_friend-128.png b/priv/static/finmoji/128px/a_trusted_friend-128.png deleted file mode 100644 index 16d596bda..000000000 Binary files a/priv/static/finmoji/128px/a_trusted_friend-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/alandislands-128.png b/priv/static/finmoji/128px/alandislands-128.png deleted file mode 100644 index 13cdf6e76..000000000 Binary files a/priv/static/finmoji/128px/alandislands-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/association-128.png b/priv/static/finmoji/128px/association-128.png deleted file mode 100644 index 5b388d781..000000000 Binary files a/priv/static/finmoji/128px/association-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/auroraborealis-128.png b/priv/static/finmoji/128px/auroraborealis-128.png deleted file mode 100644 index 7e2af77b9..000000000 Binary files a/priv/static/finmoji/128px/auroraborealis-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/baby_in_a_box-128.png b/priv/static/finmoji/128px/baby_in_a_box-128.png deleted file mode 100644 index 9c495e24a..000000000 Binary files a/priv/static/finmoji/128px/baby_in_a_box-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/bear-128.png b/priv/static/finmoji/128px/bear-128.png deleted file mode 100644 index 8bb101bf4..000000000 Binary files a/priv/static/finmoji/128px/bear-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/black_gold-128.png b/priv/static/finmoji/128px/black_gold-128.png deleted file mode 100644 index 1833edab4..000000000 Binary files a/priv/static/finmoji/128px/black_gold-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/christmasparty-128.png b/priv/static/finmoji/128px/christmasparty-128.png deleted file mode 100644 index 98216830c..000000000 Binary files a/priv/static/finmoji/128px/christmasparty-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/crosscountryskiing-128.png b/priv/static/finmoji/128px/crosscountryskiing-128.png deleted file mode 100644 index 67553f398..000000000 Binary files a/priv/static/finmoji/128px/crosscountryskiing-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/cupofcoffee-128.png b/priv/static/finmoji/128px/cupofcoffee-128.png deleted file mode 100644 index 20064f218..000000000 Binary files a/priv/static/finmoji/128px/cupofcoffee-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/education-128.png b/priv/static/finmoji/128px/education-128.png deleted file mode 100644 index c98083bdd..000000000 Binary files a/priv/static/finmoji/128px/education-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/fashionista_finns-128.png b/priv/static/finmoji/128px/fashionista_finns-128.png deleted file mode 100644 index 4248825e0..000000000 Binary files a/priv/static/finmoji/128px/fashionista_finns-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/finnishlove-128.png b/priv/static/finmoji/128px/finnishlove-128.png deleted file mode 100644 index 5d4f9476c..000000000 Binary files a/priv/static/finmoji/128px/finnishlove-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/flag-128.png b/priv/static/finmoji/128px/flag-128.png deleted file mode 100644 index 0087cc589..000000000 Binary files a/priv/static/finmoji/128px/flag-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/forest-128.png b/priv/static/finmoji/128px/forest-128.png deleted file mode 100644 index 142e60b94..000000000 Binary files a/priv/static/finmoji/128px/forest-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/four_seasons_of_bbq-128.png b/priv/static/finmoji/128px/four_seasons_of_bbq-128.png deleted file mode 100644 index bb7fe1f51..000000000 Binary files a/priv/static/finmoji/128px/four_seasons_of_bbq-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/girlpower-128.png b/priv/static/finmoji/128px/girlpower-128.png deleted file mode 100644 index bc76a51c5..000000000 Binary files a/priv/static/finmoji/128px/girlpower-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/handshake-128.png b/priv/static/finmoji/128px/handshake-128.png deleted file mode 100644 index 4ebf196ab..000000000 Binary files a/priv/static/finmoji/128px/handshake-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/happiness-128.png b/priv/static/finmoji/128px/happiness-128.png deleted file mode 100644 index e28f99a26..000000000 Binary files a/priv/static/finmoji/128px/happiness-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/headbanger-128.png b/priv/static/finmoji/128px/headbanger-128.png deleted file mode 100644 index 0de620efe..000000000 Binary files a/priv/static/finmoji/128px/headbanger-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/icebreaker-128.png b/priv/static/finmoji/128px/icebreaker-128.png deleted file mode 100644 index 7fb36a4a3..000000000 Binary files a/priv/static/finmoji/128px/icebreaker-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/iceman-128.png b/priv/static/finmoji/128px/iceman-128.png deleted file mode 100644 index eb814e6aa..000000000 Binary files a/priv/static/finmoji/128px/iceman-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/joulutorttu-128.png b/priv/static/finmoji/128px/joulutorttu-128.png deleted file mode 100644 index 50448e333..000000000 Binary files a/priv/static/finmoji/128px/joulutorttu-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/kaamos-128.png b/priv/static/finmoji/128px/kaamos-128.png deleted file mode 100644 index 8b2df03ef..000000000 Binary files a/priv/static/finmoji/128px/kaamos-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/kalsarikannit_f-128.png b/priv/static/finmoji/128px/kalsarikannit_f-128.png deleted file mode 100644 index bcd94141a..000000000 Binary files a/priv/static/finmoji/128px/kalsarikannit_f-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/kalsarikannit_m-128.png b/priv/static/finmoji/128px/kalsarikannit_m-128.png deleted file mode 100644 index c6938e677..000000000 Binary files a/priv/static/finmoji/128px/kalsarikannit_m-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/karjalanpiirakka-128.png b/priv/static/finmoji/128px/karjalanpiirakka-128.png deleted file mode 100644 index a82a902db..000000000 Binary files a/priv/static/finmoji/128px/karjalanpiirakka-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/kicksled-128.png b/priv/static/finmoji/128px/kicksled-128.png deleted file mode 100644 index ff42462db..000000000 Binary files a/priv/static/finmoji/128px/kicksled-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/kokko-128.png b/priv/static/finmoji/128px/kokko-128.png deleted file mode 100644 index e0b6e07fa..000000000 Binary files a/priv/static/finmoji/128px/kokko-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/lavatanssit-128.png b/priv/static/finmoji/128px/lavatanssit-128.png deleted file mode 100644 index f89dc358c..000000000 Binary files a/priv/static/finmoji/128px/lavatanssit-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/losthopes_f-128.png b/priv/static/finmoji/128px/losthopes_f-128.png deleted file mode 100644 index 60f0949c0..000000000 Binary files a/priv/static/finmoji/128px/losthopes_f-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/losthopes_m-128.png b/priv/static/finmoji/128px/losthopes_m-128.png deleted file mode 100644 index 9ae6f9e2f..000000000 Binary files a/priv/static/finmoji/128px/losthopes_m-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/mattinykanen-128.png b/priv/static/finmoji/128px/mattinykanen-128.png deleted file mode 100644 index 0e81271ca..000000000 Binary files a/priv/static/finmoji/128px/mattinykanen-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/meanwhileinfinland-128.png b/priv/static/finmoji/128px/meanwhileinfinland-128.png deleted file mode 100644 index 5a9710a3b..000000000 Binary files a/priv/static/finmoji/128px/meanwhileinfinland-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/moominmamma-128.png b/priv/static/finmoji/128px/moominmamma-128.png deleted file mode 100644 index ae37bb94a..000000000 Binary files a/priv/static/finmoji/128px/moominmamma-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/nordicfamily-128.png b/priv/static/finmoji/128px/nordicfamily-128.png deleted file mode 100644 index cff41b228..000000000 Binary files a/priv/static/finmoji/128px/nordicfamily-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/out_of_office-128.png b/priv/static/finmoji/128px/out_of_office-128.png deleted file mode 100644 index 45cd1c2f5..000000000 Binary files a/priv/static/finmoji/128px/out_of_office-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/peacemaker-128.png b/priv/static/finmoji/128px/peacemaker-128.png deleted file mode 100644 index c4e9bd447..000000000 Binary files a/priv/static/finmoji/128px/peacemaker-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/perkele-128.png b/priv/static/finmoji/128px/perkele-128.png deleted file mode 100644 index e89e5bf32..000000000 Binary files a/priv/static/finmoji/128px/perkele-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/pesapallo-128.png b/priv/static/finmoji/128px/pesapallo-128.png deleted file mode 100644 index 5e06bec50..000000000 Binary files a/priv/static/finmoji/128px/pesapallo-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/polarbear-128.png b/priv/static/finmoji/128px/polarbear-128.png deleted file mode 100644 index fd3c3ec30..000000000 Binary files a/priv/static/finmoji/128px/polarbear-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/pusa_hispida_saimensis-128.png b/priv/static/finmoji/128px/pusa_hispida_saimensis-128.png deleted file mode 100644 index 60620be5d..000000000 Binary files a/priv/static/finmoji/128px/pusa_hispida_saimensis-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/reindeer-128.png b/priv/static/finmoji/128px/reindeer-128.png deleted file mode 100644 index 8cdd05f27..000000000 Binary files a/priv/static/finmoji/128px/reindeer-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/sami-128.png b/priv/static/finmoji/128px/sami-128.png deleted file mode 100644 index e9e9f41a7..000000000 Binary files a/priv/static/finmoji/128px/sami-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/sauna_f-128.png b/priv/static/finmoji/128px/sauna_f-128.png deleted file mode 100644 index 474f126ff..000000000 Binary files a/priv/static/finmoji/128px/sauna_f-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/sauna_m-128.png b/priv/static/finmoji/128px/sauna_m-128.png deleted file mode 100644 index f7f563a9b..000000000 Binary files a/priv/static/finmoji/128px/sauna_m-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/sauna_whisk-128.png b/priv/static/finmoji/128px/sauna_whisk-128.png deleted file mode 100644 index 80ebb55e4..000000000 Binary files a/priv/static/finmoji/128px/sauna_whisk-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/sisu-128.png b/priv/static/finmoji/128px/sisu-128.png deleted file mode 100644 index 7b9330654..000000000 Binary files a/priv/static/finmoji/128px/sisu-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/stuck-128.png b/priv/static/finmoji/128px/stuck-128.png deleted file mode 100644 index c14bc555d..000000000 Binary files a/priv/static/finmoji/128px/stuck-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/suomimainittu-128.png b/priv/static/finmoji/128px/suomimainittu-128.png deleted file mode 100644 index 8d35b9be1..000000000 Binary files a/priv/static/finmoji/128px/suomimainittu-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/superfood-128.png b/priv/static/finmoji/128px/superfood-128.png deleted file mode 100644 index 2e9d924cc..000000000 Binary files a/priv/static/finmoji/128px/superfood-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/swan-128.png b/priv/static/finmoji/128px/swan-128.png deleted file mode 100644 index d1711c70b..000000000 Binary files a/priv/static/finmoji/128px/swan-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/the_cap-128.png b/priv/static/finmoji/128px/the_cap-128.png deleted file mode 100644 index 10d83c22e..000000000 Binary files a/priv/static/finmoji/128px/the_cap-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/the_conductor-128.png b/priv/static/finmoji/128px/the_conductor-128.png deleted file mode 100644 index 0da7c42e8..000000000 Binary files a/priv/static/finmoji/128px/the_conductor-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/the_king-128.png b/priv/static/finmoji/128px/the_king-128.png deleted file mode 100644 index 07dd27ad7..000000000 Binary files a/priv/static/finmoji/128px/the_king-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/the_voice-128.png b/priv/static/finmoji/128px/the_voice-128.png deleted file mode 100644 index bb436f95b..000000000 Binary files a/priv/static/finmoji/128px/the_voice-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/theoriginalsanta-128.png b/priv/static/finmoji/128px/theoriginalsanta-128.png deleted file mode 100644 index 082d58c28..000000000 Binary files a/priv/static/finmoji/128px/theoriginalsanta-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/tomoffinland-128.png b/priv/static/finmoji/128px/tomoffinland-128.png deleted file mode 100644 index 29c68bcba..000000000 Binary files a/priv/static/finmoji/128px/tomoffinland-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/torillatavataan-128.png b/priv/static/finmoji/128px/torillatavataan-128.png deleted file mode 100644 index da7b502b4..000000000 Binary files a/priv/static/finmoji/128px/torillatavataan-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/unbreakable-128.png b/priv/static/finmoji/128px/unbreakable-128.png deleted file mode 100644 index eb825e14f..000000000 Binary files a/priv/static/finmoji/128px/unbreakable-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/waiting-128.png b/priv/static/finmoji/128px/waiting-128.png deleted file mode 100644 index 10b9167f2..000000000 Binary files a/priv/static/finmoji/128px/waiting-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/white_nights-128.png b/priv/static/finmoji/128px/white_nights-128.png deleted file mode 100644 index 8eacd11f0..000000000 Binary files a/priv/static/finmoji/128px/white_nights-128.png and /dev/null differ diff --git a/priv/static/finmoji/128px/woollysocks-128.png b/priv/static/finmoji/128px/woollysocks-128.png deleted file mode 100644 index 856af5b2e..000000000 Binary files a/priv/static/finmoji/128px/woollysocks-128.png and /dev/null differ diff --git a/priv/static/finmoji/LICENSE b/priv/static/finmoji/LICENSE deleted file mode 100644 index e3a607aa3..000000000 --- a/priv/static/finmoji/LICENSE +++ /dev/null @@ -1 +0,0 @@ -these are under CC-BY-ND, see https://finland.fi/emoji/ -- cgit v1.2.3 From 21b39c54a36c265fee89a9c2f2312ad925f82263 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 18 Apr 2019 10:57:20 +0300 Subject: Allow using a custom manfest and getting multiple packs at once A custom manifest can be provided as a command-line options --manifest/-m --- lib/mix/tasks/pleroma/emoji.ex | 143 ++++++++++++++++++++++++----------------- 1 file changed, 83 insertions(+), 60 deletions(-) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index ffe733617..902bddc65 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -9,15 +9,31 @@ defmodule Mix.Tasks.Pleroma.Emoji do @moduledoc """ """ - defp fetch_manifest do - Tesla.get!("https://git.pleroma.social/vaartis/emoji-index/raw/master/index.json").body - |> Poison.decode!() + @default_manifest "https://git.pleroma.social/vaartis/emoji-index/raw/master/index.json" + + defp fetch_manifest(from) do + Tesla.get!(from).body |> Poison.decode!() + end + + defp parse_global_opts(args) do + OptionParser.parse( + args, + strict: [ + manifest: :string + ], + aliases: [ + m: :manifest + ] + ) end - def run(["ls-packs"]) do + def run(["ls-packs" | args]) do Application.ensure_all_started(:hackney) - manifest = fetch_manifest() + {options, [], []} = parse_global_opts(args) + + manifest = + fetch_manifest(if options[:manifest], do: options[:manifest], else: @default_manifest) Enum.each(manifest, fn {name, info} -> to_print = [ @@ -34,65 +50,72 @@ defmodule Mix.Tasks.Pleroma.Emoji do end) end - def run(["get-pack", pack_name]) do + def run(["get-packs" | args]) do Application.ensure_all_started(:hackney) - manifest = fetch_manifest() - - if Map.has_key?(manifest, pack_name) do - pack = manifest[pack_name] - src_url = pack["src"] - - IO.puts( - IO.ANSI.format([ - "Downloading pack ", - :bright, - pack_name, - :normal, - " from ", - :underline, - src_url - ]) - ) - - binary_archive = Tesla.get!(src_url).body - - IO.puts("Unpacking #{pack_name} pack") - - static_path = Path.join(:code.priv_dir(:pleroma), "static") - - pack_path = - Path.join([ - static_path, - Pleroma.Config.get!([:instance, :static_dir]), - "emoji", - pack_name - ]) - - files_to_unzip = - Enum.map( - pack["files"], - fn {_, f} -> to_charlist(f) end + {options, pack_names, []} = parse_global_opts(args) + + manifest = + fetch_manifest(if options[:manifest], do: options[:manifest], else: @default_manifest) + + for pack_name <- pack_names do + if Map.has_key?(manifest, pack_name) do + pack = manifest[pack_name] + src_url = pack["src"] + + IO.puts( + IO.ANSI.format([ + "Downloading ", + :bright, + pack_name, + :normal, + " from ", + :underline, + src_url + ]) ) - {:ok, _} = - :zip.unzip(binary_archive, - cwd: pack_path, - file_list: files_to_unzip - ) - - IO.puts("Wriring emoji.txt for the #{pack_name} pack") - - emoji_txt_str = - Enum.map( - pack["files"], - fn {shortcode, path} -> "#{shortcode}, /instance/static/emoji/#{pack_name}/#{path}" end - ) - |> Enum.join("\n") - - File.write!(Path.join(pack_path, "emoji.txt"), emoji_txt_str) - else - IO.puts(IO.ANSI.format([:bright, :red, "No pack named \"#{pack_name}\" found"])) + binary_archive = Tesla.get!(src_url).body + + IO.puts(IO.ANSI.format(["Unpacking ", :bright, pack_name])) + + static_path = Path.join(:code.priv_dir(:pleroma), "static") + + pack_path = + Path.join([ + static_path, + Pleroma.Config.get!([:instance, :static_dir]), + "emoji", + pack_name + ]) + + files_to_unzip = + Enum.map( + pack["files"], + fn {_, f} -> to_charlist(f) end + ) + + {:ok, _} = + :zip.unzip(binary_archive, + cwd: pack_path, + file_list: files_to_unzip + ) + + IO.puts(IO.ANSI.format(["Writing emoji.txt for ", :bright, pack_name])) + + emoji_txt_str = + Enum.map( + pack["files"], + fn {shortcode, path} -> + "#{shortcode}, /instance/static/emoji/#{pack_name}/#{path}" + end + ) + |> Enum.join("\n") + + File.write!(Path.join(pack_path, "emoji.txt"), emoji_txt_str) + else + IO.puts(IO.ANSI.format([:bright, :red, "No pack named \"#{pack_name}\" found"])) + end end end end -- cgit v1.2.3 From af5494f942636bc6d2baa2638502974ed8cb7846 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 18 Apr 2019 15:32:18 +0300 Subject: Separate emoji pack file lists in a different file The file should be in the same directory as the manifest file --- lib/mix/tasks/pleroma/emoji.ex | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 902bddc65..526b09b11 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -55,8 +55,9 @@ defmodule Mix.Tasks.Pleroma.Emoji do {options, pack_names, []} = parse_global_opts(args) - manifest = - fetch_manifest(if options[:manifest], do: options[:manifest], else: @default_manifest) + manifest_url = if options[:manifest], do: options[:manifest], else: @default_manifest + + manifest = fetch_manifest(manifest_url) for pack_name <- pack_names do if Map.has_key?(manifest, pack_name) do @@ -77,6 +78,23 @@ defmodule Mix.Tasks.Pleroma.Emoji do binary_archive = Tesla.get!(src_url).body + # The url specified in files should be in the same directory + files_url = Path.join(Path.dirname(manifest_url), pack["files"]) + + IO.puts( + IO.ANSI.format([ + "Fetching the file list for ", + :bright, + pack_name, + :normal, + " from ", + :underline, + files_url + ]) + ) + + files = Tesla.get!(files_url).body |> Poison.decode!() + IO.puts(IO.ANSI.format(["Unpacking ", :bright, pack_name])) static_path = Path.join(:code.priv_dir(:pleroma), "static") @@ -91,7 +109,7 @@ defmodule Mix.Tasks.Pleroma.Emoji do files_to_unzip = Enum.map( - pack["files"], + files, fn {_, f} -> to_charlist(f) end ) @@ -105,7 +123,7 @@ defmodule Mix.Tasks.Pleroma.Emoji do emoji_txt_str = Enum.map( - pack["files"], + files, fn {shortcode, path} -> "#{shortcode}, /instance/static/emoji/#{pack_name}/#{path}" end -- cgit v1.2.3 From 06db3ee1a8a443316196e6d8f55f4d5fc0cac694 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 18 Apr 2019 15:46:07 +0300 Subject: Add MD5 verification for emoji pack source --- lib/mix/tasks/pleroma/emoji.ex | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 526b09b11..29c5d0c93 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -77,6 +77,16 @@ defmodule Mix.Tasks.Pleroma.Emoji do ) binary_archive = Tesla.get!(src_url).body + archive_md5 = :crypto.hash(:md5, binary_archive) |> Base.encode16() + + md5_status_text = ["MD5 of ", :bright, pack_name, :normal, " source file is ", :bright] + if archive_md5 == String.upcase(pack["src_md5"]) do + IO.puts(IO.ANSI.format(md5_status_text ++ [:green, "OK"])) + else + IO.puts(IO.ANSI.format(md5_status_text ++ [:red, "BAD"])) + + raise "Bad MD5 for #{pack_name}" + end # The url specified in files should be in the same directory files_url = Path.join(Path.dirname(manifest_url), pack["files"]) -- cgit v1.2.3 From c5b7286b5f3fd2a3eb91eea74bebb684575682bd Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 18 Apr 2019 15:47:49 +0300 Subject: Move helper functions of emoji manager task down in the file --- lib/mix/tasks/pleroma/emoji.ex | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 29c5d0c93..71d08411f 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -11,22 +11,6 @@ defmodule Mix.Tasks.Pleroma.Emoji do @default_manifest "https://git.pleroma.social/vaartis/emoji-index/raw/master/index.json" - defp fetch_manifest(from) do - Tesla.get!(from).body |> Poison.decode!() - end - - defp parse_global_opts(args) do - OptionParser.parse( - args, - strict: [ - manifest: :string - ], - aliases: [ - m: :manifest - ] - ) - end - def run(["ls-packs" | args]) do Application.ensure_all_started(:hackney) @@ -146,4 +130,20 @@ defmodule Mix.Tasks.Pleroma.Emoji do end end end + + defp fetch_manifest(from) do + Tesla.get!(from).body |> Poison.decode!() + end + + defp parse_global_opts(args) do + OptionParser.parse( + args, + strict: [ + manifest: :string + ], + aliases: [ + m: :manifest + ] + ) + end end -- cgit v1.2.3 From 1e44b5478da83f5841cbe292812b27b4539b975c Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 18 Apr 2019 15:57:41 +0300 Subject: Remove useless comment --- lib/pleroma/emoji.ex | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index 8ead7ea1e..35e6eee93 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -108,8 +108,6 @@ defmodule Pleroma.Emoji do shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || [] emojis = - # Add the things fro - # Deprecated? (Enum.flat_map( packs, fn pack -> load_from_file(Path.join([emoji_dir_path, pack, "emoji.txt"])) end -- cgit v1.2.3 From eff725c3af4537b2d993f85a236636cd5d5e17d0 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 18 Apr 2019 17:02:22 +0300 Subject: Add a task to generate emoji packs --- lib/mix/tasks/pleroma/emoji.ex | 103 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 71d08411f..2126588b1 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -131,6 +131,109 @@ defmodule Mix.Tasks.Pleroma.Emoji do end end + def run(["gen-pack", src]) do + Application.ensure_all_started(:hackney) + + proposed_name = Path.basename(src) |> Path.rootname() + name = String.trim(IO.gets("Pack name [#{proposed_name}]: ")) + # If there's no name, use the default one + name = if String.length(name) > 0, do: name, else: proposed_name + + license = String.trim(IO.gets("License: ")) + homepage = String.trim(IO.gets("Homepage: ")) + description = String.trim(IO.gets("Description: ")) + + proposed_files_name = "#{name}.json" + files_name = String.trim(IO.gets("Save file list to [#{proposed_files_name}]: ")) + files_name = if String.length(files_name) > 0, do: files_name, else: proposed_files_name + + default_exts = [".png", ".gif"] + 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" + + binary_archive = Tesla.get!(src).body + archive_md5 = :crypto.hash(:md5, binary_archive) |> Base.encode16() + + IO.puts "MD5 is #{archive_md5}" + + pack_json = %{ + name => %{ + license: license, + homepage: homepage, + description: description, + src: src, + src_md5: archive_md5, + files: files_name + } + } + + tmp_pack_dir = Path.join(System.tmp_dir!(), "emoji-pack-#{name}") + {:ok, _} = + :zip.unzip( + binary_archive, + cwd: tmp_pack_dir + ) + + emoji_map = + find_all_emoji(tmp_pack_dir, exts) |> + Enum.map(&Path.relative_to(&1, tmp_pack_dir)) |> + Enum.map(fn f -> {f |> Path.basename() |> Path.rootname(), f} end) |> + Enum.into(%{}) + + File.write!(files_name, Poison.encode!(emoji_map, pretty: true)) + + IO.puts """ + + #{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. + """ + + if File.exists?("index.json") do + existing_data = File.read!("index.json") |> Poison.decode!() + + File.write!( + "index.json", + Poison.encode!( + Map.merge( + existing_data, + pack_json + ), + pretty: true + ) + ) + + IO.puts "index.json file has been update with the #{name} pack" + else + File.write!("index.json", Poison.encode!(pack_json, pretty: true)) + + IO.puts "index.json has been created with the #{name} pack" + end + + end + + defp find_all_emoji(dir, exts) do + Enum.reduce( + File.ls!(dir), + [], + fn f, acc -> + filepath = Path.join(dir, f) + if File.dir?(filepath) do + acc ++ find_all_emoji(filepath, exts) + else + acc ++ [filepath] + end + end + ) |> Enum.filter(fn f -> Path.extname(f) in exts end) + end + defp fetch_manifest(from) do Tesla.get!(from).body |> Poison.decode!() end -- cgit v1.2.3 From a141f0807bc84868fb84e3d628ab8f99f429d5c0 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 18 Apr 2019 18:04:02 +0300 Subject: Assume packs without emoji.txt only have emoji pictures, unhardcode unhardcode: remove hardcoded /instance/static and actually use the config option as it is used in other places. packs without emoji.txt: these are now assumed to have .png files that are all emojis, their names are used as shortcodes --- config/config.exs | 4 +-- lib/mix/tasks/pleroma/emoji.ex | 27 +++++--------------- lib/pleroma/emoji.ex | 58 +++++++++++++++++++++++++++++++++++++----- 3 files changed, 59 insertions(+), 30 deletions(-) diff --git a/config/config.exs b/config/config.exs index c0c06b189..edb4195d0 100644 --- a/config/config.exs +++ b/config/config.exs @@ -100,8 +100,8 @@ config :pleroma, :emoji, shortcode_globs: ["/emoji/custom/**/*.png"], groups: [ # Put groups that have higher priority than defaults here. Example in `docs/config/custom_emoji.md` - Finmoji: ["/finmoji/128px/*-128.png", "/instance/static/emoji/finmoji/128px/*-128.png"], - Custom: ["/emoji/*.png", "/emoji/custom/*.png", "/instance/static/emoji/**/*.png"] + Finmoji: ["/finmoji/128px/*-128.png"], + Custom: ["/emoji/*.png", "/emoji/custom/*.png"] ] config :pleroma, :uri_schemes, diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 2126588b1..4fb383b61 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -115,11 +115,14 @@ defmodule Mix.Tasks.Pleroma.Emoji do IO.puts(IO.ANSI.format(["Writing emoji.txt for ", :bright, pack_name])) + common_pack_path = Path.join([ + "/", Pleroma.Config.get!([:instance, :static_dir]), "emoji", pack_name + ]) emoji_txt_str = Enum.map( files, fn {shortcode, path} -> - "#{shortcode}, /instance/static/emoji/#{pack_name}/#{path}" + "#{shortcode}, #{Path.join(common_pack_path, path)}" end ) |> Enum.join("\n") @@ -182,11 +185,8 @@ defmodule Mix.Tasks.Pleroma.Emoji do cwd: tmp_pack_dir ) - emoji_map = - find_all_emoji(tmp_pack_dir, exts) |> - Enum.map(&Path.relative_to(&1, tmp_pack_dir)) |> - Enum.map(fn f -> {f |> Path.basename() |> Path.rootname(), f} end) |> - Enum.into(%{}) + emoji_map = Pleroma.Emoji.make_shortcode_to_file_map(tmp_pack_dir, exts) + File.write!(files_name, Poison.encode!(emoji_map, pretty: true)) @@ -219,21 +219,6 @@ defmodule Mix.Tasks.Pleroma.Emoji do end - defp find_all_emoji(dir, exts) do - Enum.reduce( - File.ls!(dir), - [], - fn f, acc -> - filepath = Path.join(dir, f) - if File.dir?(filepath) do - acc ++ find_all_emoji(filepath, exts) - else - acc ++ [filepath] - end - end - ) |> Enum.filter(fn f -> Path.extname(f) in exts end) - end - defp fetch_manifest(from) do Tesla.get!(from).body |> Poison.decode!() end diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index 35e6eee93..c7620b573 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -108,13 +108,13 @@ defmodule Pleroma.Emoji do shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || [] emojis = - (Enum.flat_map( - packs, - fn pack -> load_from_file(Path.join([emoji_dir_path, pack, "emoji.txt"])) end - ) ++ - load_from_file("config/emoji.txt") ++ - load_from_file("config/custom_emoji.txt") ++ - load_from_globs(shortcode_globs)) + (Enum.flat_map( + packs, + fn pack -> load_pack(Path.join(emoji_dir_path, pack)) end + ) ++ + load_from_file("config/emoji.txt") ++ + load_from_file("config/custom_emoji.txt") ++ + load_from_globs(shortcode_globs)) |> Enum.reject(fn value -> value == nil end) true = :ets.insert(@ets, emojis) @@ -123,6 +123,50 @@ defmodule Pleroma.Emoji do :ok end + defp load_pack(pack_dir) do + pack_name = Path.basename(pack_dir) + + emoji_txt = Path.join(pack_dir, "emoji.txt") + if File.exists?(emoji_txt) do + load_from_file(emoji_txt) + else + Logger.info("No emoji.txt found for pack \"#{pack_name}\", assuming all .png files are emoji") + + common_pack_path = Path.join([ + "/", Pleroma.Config.get!([:instance, :static_dir]), "emoji", pack_name + ]) + make_shortcode_to_file_map(pack_dir, [".png"]) |> + Enum.map(fn {shortcode, rel_file} -> + 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 + + def make_shortcode_to_file_map(pack_dir, exts) do + find_all_emoji(pack_dir, exts) |> + Enum.map(&Path.relative_to(&1, pack_dir)) |> + Enum.map(fn f -> {f |> Path.basename() |> Path.rootname(), f} end) |> + Enum.into(%{}) + end + + def find_all_emoji(dir, exts) do + Enum.reduce( + File.ls!(dir), + [], + fn f, acc -> + filepath = Path.join(dir, f) + if File.dir?(filepath) do + acc ++ find_all_emoji(filepath, exts) + else + acc ++ [filepath] + end + end + ) |> Enum.filter(fn f -> Path.extname(f) in exts end) + end + defp load_from_file(file) do if File.exists?(file) do load_from_file_stream(File.stream!(file)) -- cgit v1.2.3 From aaaa428512db8ace56ca5ab7ebf1488d64ac5e35 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 18 Apr 2019 18:09:43 +0300 Subject: mix format --- lib/mix/tasks/pleroma/emoji.ex | 45 +++++++++++++++++++------------- lib/pleroma/emoji.ex | 58 +++++++++++++++++++++++++----------------- 2 files changed, 62 insertions(+), 41 deletions(-) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 4fb383b61..fed3dcb40 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -64,6 +64,7 @@ defmodule Mix.Tasks.Pleroma.Emoji do archive_md5 = :crypto.hash(:md5, binary_archive) |> Base.encode16() md5_status_text = ["MD5 of ", :bright, pack_name, :normal, " source file is ", :bright] + if archive_md5 == String.upcase(pack["src_md5"]) do IO.puts(IO.ANSI.format(md5_status_text ++ [:green, "OK"])) else @@ -115,9 +116,14 @@ defmodule Mix.Tasks.Pleroma.Emoji do IO.puts(IO.ANSI.format(["Writing emoji.txt for ", :bright, pack_name])) - common_pack_path = Path.join([ - "/", Pleroma.Config.get!([:instance, :static_dir]), "emoji", pack_name - ]) + common_pack_path = + Path.join([ + "/", + Pleroma.Config.get!([:instance, :static_dir]), + "emoji", + pack_name + ]) + emoji_txt_str = Enum.map( files, @@ -152,20 +158,26 @@ defmodule Mix.Tasks.Pleroma.Emoji do default_exts = [".png", ".gif"] 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 + String.trim( + IO.gets("Emoji file extensions (separated with spaces) [#{default_exts_str}]: ") + ) - IO.puts "Downloading the pack and generating MD5" + 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 archive_md5 = :crypto.hash(:md5, binary_archive) |> Base.encode16() - IO.puts "MD5 is #{archive_md5}" + IO.puts("MD5 is #{archive_md5}") pack_json = %{ name => %{ @@ -179,6 +191,7 @@ defmodule Mix.Tasks.Pleroma.Emoji do } tmp_pack_dir = Path.join(System.tmp_dir!(), "emoji-pack-#{name}") + {:ok, _} = :zip.unzip( 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) - 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. Please review the files in the remove those not needed. - """ + """) if File.exists?("index.json") do 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 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 defp fetch_manifest(from) do diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index c7620b573..9a23bd81b 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -108,13 +108,13 @@ defmodule Pleroma.Emoji do shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || [] emojis = - (Enum.flat_map( - packs, - fn pack -> load_pack(Path.join(emoji_dir_path, pack)) end - ) ++ - load_from_file("config/emoji.txt") ++ - load_from_file("config/custom_emoji.txt") ++ - load_from_globs(shortcode_globs)) + (Enum.flat_map( + packs, + fn pack -> load_pack(Path.join(emoji_dir_path, pack)) end + ) ++ + load_from_file("config/emoji.txt") ++ + load_from_file("config/custom_emoji.txt") ++ + load_from_globs(shortcode_globs)) |> Enum.reject(fn value -> value == nil end) true = :ets.insert(@ets, emojis) @@ -127,29 +127,37 @@ defmodule Pleroma.Emoji do pack_name = Path.basename(pack_dir) emoji_txt = Path.join(pack_dir, "emoji.txt") + if File.exists?(emoji_txt) do load_from_file(emoji_txt) else - Logger.info("No emoji.txt found for pack \"#{pack_name}\", assuming all .png files are emoji") - - common_pack_path = Path.join([ - "/", Pleroma.Config.get!([:instance, :static_dir]), "emoji", pack_name - ]) - make_shortcode_to_file_map(pack_dir, [".png"]) |> - Enum.map(fn {shortcode, rel_file} -> - 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) + Logger.info( + "No emoji.txt found for pack \"#{pack_name}\", assuming all .png files are emoji" + ) + + common_pack_path = + Path.join([ + "/", + Pleroma.Config.get!([:instance, :static_dir]), + "emoji", + pack_name + ]) + + make_shortcode_to_file_map(pack_dir, [".png"]) + |> Enum.map(fn {shortcode, rel_file} -> + 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 def make_shortcode_to_file_map(pack_dir, exts) do - find_all_emoji(pack_dir, exts) |> - Enum.map(&Path.relative_to(&1, pack_dir)) |> - Enum.map(fn f -> {f |> Path.basename() |> Path.rootname(), f} end) |> - Enum.into(%{}) + find_all_emoji(pack_dir, exts) + |> Enum.map(&Path.relative_to(&1, pack_dir)) + |> Enum.map(fn f -> {f |> Path.basename() |> Path.rootname(), f} end) + |> Enum.into(%{}) end def find_all_emoji(dir, exts) do @@ -158,13 +166,15 @@ defmodule Pleroma.Emoji do [], fn f, acc -> filepath = Path.join(dir, f) + if File.dir?(filepath) do acc ++ find_all_emoji(filepath, exts) else acc ++ [filepath] end end - ) |> Enum.filter(fn f -> Path.extname(f) in exts end) + ) + |> Enum.filter(fn f -> Path.extname(f) in exts end) end defp load_from_file(file) do -- cgit v1.2.3 From 98d4b3de53a5eaf412e3b200d4f0ed04c9c4622d Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 18 Apr 2019 20:06:59 +0300 Subject: Treat the manifest path as a file if it doesn't start with http --- lib/mix/tasks/pleroma/emoji.ex | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index fed3dcb40..9cb6fb88d 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -231,7 +231,13 @@ defmodule Mix.Tasks.Pleroma.Emoji do end defp fetch_manifest(from) do - Tesla.get!(from).body |> Poison.decode!() + Poison.decode!( + if String.starts_with?(from, "http") do + Tesla.get!(from).body + else + File.read!(from) + end + ) end defp parse_global_opts(args) do -- cgit v1.2.3 From 9bd5e2dec9ce0b23f287b3ea6ad375280d92bb7b Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 18 Apr 2019 20:48:57 +0300 Subject: Make emoji default_manifest a config option --- config/config.exs | 3 ++- lib/mix/tasks/pleroma/emoji.ex | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/config/config.exs b/config/config.exs index edb4195d0..fcad55bbe 100644 --- a/config/config.exs +++ b/config/config.exs @@ -102,7 +102,8 @@ config :pleroma, :emoji, # Put groups that have higher priority than defaults here. Example in `docs/config/custom_emoji.md` Finmoji: ["/finmoji/128px/*-128.png"], Custom: ["/emoji/*.png", "/emoji/custom/*.png"] - ] + ], + default_manifest: "https://git.pleroma.social/vaartis/emoji-index/raw/master/index.json" config :pleroma, :uri_schemes, valid_schemes: [ diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 9cb6fb88d..8261c2122 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -9,7 +9,7 @@ defmodule Mix.Tasks.Pleroma.Emoji do @moduledoc """ """ - @default_manifest "https://git.pleroma.social/vaartis/emoji-index/raw/master/index.json" + @default_manifest Pleroma.Config.get!([:emoji, :default_manifest]) def run(["ls-packs" | args]) do Application.ensure_all_started(:hackney) -- cgit v1.2.3 From 52ed287e87ea18fdbf14695ccfafae00768299dc Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 18 Apr 2019 21:17:52 +0300 Subject: Fix incorrect multiple emoji tag handling introduced in initial impl --- lib/pleroma/emoji.ex | 13 ++++++------- lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 2 +- lib/pleroma/web/twitter_api/controllers/util_controller.ex | 2 +- test/emoji_test.exs | 4 ++-- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index 9a23bd81b..15455b779 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -147,8 +147,7 @@ defmodule Pleroma.Emoji do |> Enum.map(fn {shortcode, rel_file} -> 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))} + {shortcode, filename, [to_string(match_extra(@groups, filename))]} end) end end @@ -190,11 +189,11 @@ defmodule Pleroma.Emoji do |> Stream.map(&String.trim/1) |> Stream.map(fn line -> case String.split(line, ~r/,\s*/) do - [name, file, tags] -> - {name, file, tags} - [name, file] -> - {name, file, to_string(match_extra(@groups, file))} + {name, file, [to_string(match_extra(@groups, file))]} + + [name, file | tags] -> + {name, file, tags} _ -> nil @@ -217,7 +216,7 @@ defmodule Pleroma.Emoji do tag = match_extra(@groups, Path.join("/", Path.relative_to(path, static_path))) shortcode = Path.basename(path, Path.extname(path)) external_path = Path.join("/", Path.relative_to(path, static_path)) - {shortcode, external_path, to_string(tag)} + {shortcode, external_path, [to_string(tag)]} end) end diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index 3916d7c41..2a81dcc67 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -190,7 +190,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do "static_url" => url, "visible_in_picker" => true, "url" => url, - "tags" => String.split(tags, ",") + "tags" => tags } end) end diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index 9441984c7..8665e058a 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -286,7 +286,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do emoji = Emoji.get_all() |> Enum.map(fn {short_code, path, tags} -> - {short_code, %{image_url: path, tags: String.split(tags, ",")}} + {short_code, %{image_url: path, tags: tags}} end) |> Enum.into(%{}) diff --git a/test/emoji_test.exs b/test/emoji_test.exs index cb1d62d00..2eaa26be6 100644 --- a/test/emoji_test.exs +++ b/test/emoji_test.exs @@ -15,7 +15,7 @@ defmodule Pleroma.EmojiTest do assert tuple_size(emoji) == 3 assert is_binary(code) assert is_binary(path) - assert is_binary(tags) + assert is_list(tags) end test "random emoji", %{emoji_list: emoji_list} do @@ -25,7 +25,7 @@ defmodule Pleroma.EmojiTest do assert tuple_size(emoji) == 3 assert is_binary(code) assert is_binary(path) - assert is_binary(tags) + assert is_list(tags) end end -- cgit v1.2.3 From aef3a3ca46afb98a93e1893162fb012ce433c368 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 18 Apr 2019 22:04:37 +0300 Subject: Fix tests that used finmoji --- test/formatter_test.exs | 8 ++++---- test/web/activity_pub/transmogrifier_test.exs | 2 +- test/web/common_api/common_api_test.exs | 10 +++++----- test/web/common_api/common_api_utils_test.exs | 10 +++++----- test/web/push/impl_test.exs | 4 ++-- test/web/twitter_api/twitter_api_test.exs | 7 +++---- test/web/twitter_api/views/activity_view_test.exs | 6 +++--- 7 files changed, 23 insertions(+), 24 deletions(-) diff --git a/test/formatter_test.exs b/test/formatter_test.exs index e74985c4e..97eb2f583 100644 --- a/test/formatter_test.exs +++ b/test/formatter_test.exs @@ -245,10 +245,10 @@ defmodule Pleroma.FormatterTest do end test "it adds cool emoji" do - text = "I love :moominmamma:" + text = "I love :firefox:" expected_result = - "I love \"moominmamma\"" + "I love \"firefox\"" assert Formatter.emojify(text) == expected_result end @@ -269,10 +269,10 @@ defmodule Pleroma.FormatterTest do end test "it returns the emoji used in the text" do - text = "I love :moominmamma:" + text = "I love :firefox:" assert Formatter.get_emoji(text) == [ - {"moominmamma", "/finmoji/128px/moominmamma-128.png", "Finmoji"} + {"firefox", "/emoji/Firefox.gif", ["Gif", "Fun"]} ] end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 6bb81a054..7d301b0d4 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -946,7 +946,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do test "it strips internal fields" do user = insert(:user) - {:ok, activity} = CommonAPI.post(user, %{"status" => "#2hu :moominmamma:"}) + {:ok, activity} = CommonAPI.post(user, %{"status" => "#2hu :firefox:"}) {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data) diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index 3d2bb8929..a5b07c446 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -40,19 +40,19 @@ defmodule Pleroma.Web.CommonAPITest do test "it adds emoji in the object" do user = insert(:user) - {:ok, activity} = CommonAPI.post(user, %{"status" => ":moominmamma:"}) + {:ok, activity} = CommonAPI.post(user, %{"status" => ":firefox:"}) - assert Object.normalize(activity).data["emoji"]["moominmamma"] + assert Object.normalize(activity).data["emoji"]["firefox"] end test "it adds emoji when updating profiles" do - user = insert(:user, %{name: ":karjalanpiirakka:"}) + user = insert(:user, %{name: ":firefox:"}) CommonAPI.update(user) user = User.get_cached_by_ap_id(user.ap_id) - [karjalanpiirakka] = user.info.source_data["tag"] + [firefox] = user.info.source_data["tag"] - assert karjalanpiirakka["name"] == ":karjalanpiirakka:" + assert firefox["name"] == ":firefox:" end describe "posting" do diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index f0c59d5c3..837a66063 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -37,21 +37,21 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do end test "parses emoji from name and bio" do - {:ok, user} = UserBuilder.insert(%{name: ":karjalanpiirakka:", bio: ":perkele:"}) + {:ok, user} = UserBuilder.insert(%{name: ":blank:", bio: ":firefox:"}) expected = [ %{ "type" => "Emoji", - "icon" => %{"type" => "Image", "url" => "#{Endpoint.url()}/finmoji/128px/perkele-128.png"}, - "name" => ":perkele:" + "icon" => %{"type" => "Image", "url" => "#{Endpoint.url()}/emoji/Firefox.gif"}, + "name" => ":firefox:" }, %{ "type" => "Emoji", "icon" => %{ "type" => "Image", - "url" => "#{Endpoint.url()}/finmoji/128px/karjalanpiirakka-128.png" + "url" => "#{Endpoint.url()}/emoji/blank.png" }, - "name" => ":karjalanpiirakka:" + "name" => ":blank:" } ] diff --git a/test/web/push/impl_test.exs b/test/web/push/impl_test.exs index 6bac2c9f6..49b2a9203 100644 --- a/test/web/push/impl_test.exs +++ b/test/web/push/impl_test.exs @@ -107,7 +107,7 @@ defmodule Pleroma.Web.Push.ImplTest do "type" => "Create", "object" => %{ "content" => - "Lorem ipsum dolor sit amet, consectetur :bear: adipiscing elit. Fusce sagittis finibus turpis." + "Lorem ipsum dolor sit amet, consectetur :firefox: adipiscing elit. Fusce sagittis finibus turpis." } } } @@ -129,7 +129,7 @@ defmodule Pleroma.Web.Push.ImplTest do insert(:note, %{ data: %{ "content" => - "Lorem ipsum dolor sit amet, consectetur :bear: adipiscing elit. Fusce sagittis finibus turpis." + "Lorem ipsum dolor sit amet, consectetur :firefox: adipiscing elit. Fusce sagittis finibus turpis." } }) diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index 5bea1037a..6b4cefacf 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -41,7 +41,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do input = %{ "status" => - "Hello again, @shp.\nThis is on another :moominmamma: line. #2hu #epic #phantasmagoric", + "Hello again, @shp.\nThis is on another :firefox: line. #2hu #epic #phantasmagoric", "media_ids" => [object.id] } @@ -49,7 +49,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do object = Object.normalize(activity.data["object"]) expected_text = - "Hello again, @shp.<script></script>
This is on another :moominmamma: line.
image.jpg" + "Hello again, @shp.<script></script>
This is on another :firefox: line.
image.jpg" assert get_in(object.data, ["content"]) == expected_text assert get_in(object.data, ["type"]) == "Note" @@ -65,8 +65,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do assert Enum.member?(get_in(activity.data, ["to"]), "shp") assert activity.local == true - assert %{"moominmamma" => "http://localhost:4001/finmoji/128px/moominmamma-128.png"} = - object.data["emoji"] + assert %{"firefox" => "http://localhost:4001/emoji/Firefox.gif"} = object.data["emoji"] # hashtags assert object.data["tag"] == ["2hu", "epic", "phantasmagoric"] diff --git a/test/web/twitter_api/views/activity_view_test.exs b/test/web/twitter_api/views/activity_view_test.exs index b5440c612..d84ab7420 100644 --- a/test/web/twitter_api/views/activity_view_test.exs +++ b/test/web/twitter_api/views/activity_view_test.exs @@ -91,16 +91,16 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do test "a create activity with a summary containing emoji" do {:ok, activity} = CommonAPI.post(insert(:user), %{ - "spoiler_text" => ":woollysocks: meow", + "spoiler_text" => ":firefox: meow", "status" => "." }) result = ActivityView.render("activity.json", activity: activity) - expected = ":woollysocks: meow" + expected = ":firefox: meow" expected_html = - "\"woollysocks\" meow" + "\"firefox\" meow" assert result["summary"] == expected assert result["summary_html"] == expected_html -- cgit v1.2.3 From 1e311d6662812377f2ed8c4483754d5876d82631 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sat, 20 Apr 2019 00:22:11 +0300 Subject: Add a newline at the end of pack in ls-packs --- lib/mix/tasks/pleroma/emoji.ex | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 8261c2122..f4da183ad 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -31,6 +31,9 @@ defmodule Mix.Tasks.Pleroma.Emoji do for {param, value} <- to_print do IO.puts(IO.ANSI.format([:bright, param, :normal, ": ", value])) end + + # A newline + IO.puts("") end) end -- cgit v1.2.3 From 31cff7dbcaf7d8087fb2c8eef2b949820fd5767c Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sat, 20 Apr 2019 10:57:31 +0300 Subject: Document the pleroma.emoji task --- docs/config/custom_emoji.md | 20 ++++++++++++++----- lib/mix/tasks/pleroma/emoji.ex | 44 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 6 deletions(-) diff --git a/docs/config/custom_emoji.md b/docs/config/custom_emoji.md index 5ce9865a2..ac28635d0 100644 --- a/docs/config/custom_emoji.md +++ b/docs/config/custom_emoji.md @@ -1,15 +1,25 @@ # Custom Emoji +Before you add your own custom emoji, check if they are available in an existing pack. +See `Mix.Tasks.Pleroma.Emoji` for information about emoji packs. + To add custom emoji: -* Add the image file(s) to `priv/static/emoji/custom` -* In case of conflicts: add the desired shortcode with the path to `config/custom_emoji.txt`, comma-separated and one per line -* Force recompilation (``mix clean && mix compile``) +* Create the `STATIC-DIR/emoji/` directory if it doesn't exist + (`STATIC-DIR` is configurable, `instance/static/` by default) +* Create a directory with whatever name you want (custom is a good name to show the purpose of it). + This will create a local emoji pack. +* Put your `.png` emoji files in that directory. In case of conflicts, you can create an `emoji.txt` + file in that directory and specify a custom shortcode using the following format: + `shortcode, file-path, tag1, tag2, etc`. One emoji per line. Note that if you do so, + you'll have to list all other emojis in the pack too. +* Either restart pleroma or connect to the iex session pleroma's running and + run `Pleroma.Emoji.reload/0` in it. Example: -image files (in `/priv/static/emoji/custom`): `happy.png` and `sad.png` +image files (in `instance/static/emoji/custom`): `happy.png` and `sad.png` -content of `config/custom_emoji.txt`: +content of `emoji.txt`: ``` happy, /emoji/custom/happy.png, Tag1,Tag2 sad, /emoji/custom/sad.png, Tag1 diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index f4da183ad..0a1bf24e2 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -5,8 +5,50 @@ defmodule Mix.Tasks.Pleroma.Emoji do use Mix.Task - @shortdoc "Manages Pleroma instance" + @shortdoc "Manages emoji packs" @moduledoc """ + Manages emoji packs + + ## ls-packs + + mix pleroma.emoji ls-packs [OPTION...] + + Lists the emoji packs and metadata specified in the manifest. + + ### Options + + - `-m, --manifest PATH/URL` - path to a custom manifest, it can either be an URL + starting with `http`, in that case the manifest will be fetched from that address, + or a local path + + ## get-packs + + mix pleroma.emoji get-packs [OPTION...] PACKS + + Fetches, verifies and installs the specified PACKS from the manifest into + the `STATIC-DIR/emoji/PACK-NAME + + ### Options + + - `-m, --manifest PATH/URL` - same as ls-packs + + ## gen-pack + + mix pleroma.emoji gen-pack PACK-URL + + Creates a new manifest entry and a file list from the specified remote pack file. + Currently, only .zip archives are recognized as remote pack files and packs are therefore + assumed to be zip archives. This command is intended to run interactively and + will first ask you some basic questions about the pack, then download the remote + file and generate an MD5 signature for it, then generate an emoji file list for you. + + The manifest entry will either be written to a newly created `index.json` file or appended to the existing one, + *replacing* the old pack with the same name if it was in the file previously. + + The file list will be written to the file specified previously, *replacing* that file. + You _should_ check that the file list doesn't contain anything you don't need in the pack, that is, + anything that is not an emoji (the whole pack is downloaded, but only emoji files are extracted). + """ @default_manifest Pleroma.Config.get!([:emoji, :default_manifest]) -- cgit v1.2.3 From 53a3e61016592b25cca4876c4f8f7be8aa6efa9b Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sat, 20 Apr 2019 15:06:56 +0300 Subject: Fix priv/static/instance/static to be just instance/static It was a misunderstanding --- lib/mix/tasks/pleroma/emoji.ex | 14 ++------------ lib/pleroma/emoji.ex | 25 +++++++------------------ 2 files changed, 9 insertions(+), 30 deletions(-) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 0a1bf24e2..02cfaa774 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -137,11 +137,8 @@ defmodule Mix.Tasks.Pleroma.Emoji do IO.puts(IO.ANSI.format(["Unpacking ", :bright, pack_name])) - static_path = Path.join(:code.priv_dir(:pleroma), "static") - pack_path = Path.join([ - static_path, Pleroma.Config.get!([:instance, :static_dir]), "emoji", pack_name @@ -161,19 +158,12 @@ defmodule Mix.Tasks.Pleroma.Emoji do IO.puts(IO.ANSI.format(["Writing emoji.txt for ", :bright, pack_name])) - common_pack_path = - Path.join([ - "/", - Pleroma.Config.get!([:instance, :static_dir]), - "emoji", - pack_name - ]) - emoji_txt_str = Enum.map( files, fn {shortcode, path} -> - "#{shortcode}, #{Path.join(common_pack_path, path)}" + emojo_path = Path.join("/emoji/#{pack_name}", path) + "#{shortcode}, #{emojo_path}" end ) |> Enum.join("\n") diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index 15455b779..169094438 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -81,14 +81,11 @@ defmodule Pleroma.Emoji do end defp load do - static_path = Path.join(:code.priv_dir(:pleroma), "static") - emoji_dir_path = - Path.join([ - static_path, + Path.join( Pleroma.Config.get!([:instance, :static_dir]), "emoji" - ]) + ) case File.ls(emoji_dir_path) do {:error, :enoent} -> @@ -135,20 +132,12 @@ defmodule Pleroma.Emoji do "No emoji.txt found for pack \"#{pack_name}\", assuming all .png files are emoji" ) - common_pack_path = - Path.join([ - "/", - Pleroma.Config.get!([:instance, :static_dir]), - "emoji", - pack_name - ]) + make_shortcode_to_file_map(pack_dir, [".png"]) |> + Enum.map(fn {shortcode, rel_file} -> + filename = Path.join("/emoji/#{pack_name}", rel_file) - make_shortcode_to_file_map(pack_dir, [".png"]) - |> Enum.map(fn {shortcode, rel_file} -> - filename = Path.join(common_pack_path, rel_file) - - {shortcode, filename, [to_string(match_extra(@groups, filename))]} - end) + {shortcode, filename, [to_string(match_extra(@groups, filename))]} + end) end end -- cgit v1.2.3 From 1f3ddb031cdc554552d80a5974b28897c1e764dc Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sat, 20 Apr 2019 15:17:21 +0300 Subject: Add the emoji packs & finmoji removal to the changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02bb3fde5..c778e0234 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: [Reports](https://docs.joinmastodon.org/api/rest/reports/) - ActivityPub C2S: OAuth endpoints - Metadata RelMe provider +- Emoji packs and emoji pack manager ### Changed - **Breaking:** Configuration: move from Pleroma.Mailer to Pleroma.Emails.Mailer @@ -50,6 +51,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Remove attachment limit in the Status entity - Deps: Updated Cowboy to 2.6 - Deps: Updated Ecto to 3.0.7 +- Don't ship finmoji by default, they can be installed as an emoji pack ### Fixed - Followers counter not being updated when a follower is blocked -- cgit v1.2.3 From 8f93d4c42366ccce1949717ad2a9e1de0f91011b Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sat, 20 Apr 2019 15:34:45 +0300 Subject: Remove most finmoji mentions where appropriate --- COPYING | 7 ------- config/config.exs | 4 +--- docs/config.md | 1 - lib/pleroma/emoji.ex | 2 +- 4 files changed, 2 insertions(+), 12 deletions(-) diff --git a/COPYING b/COPYING index ceec519ae..eceb68efe 100644 --- a/COPYING +++ b/COPYING @@ -39,10 +39,3 @@ does not include the right to compile photos from Unsplash to replicate a similar or competing service. priv/static/images/city.jpg - ---- - -The files present under the priv/static/finmoji directory are copyright -Finland , and are distributed under the Creative -Commons Attribution-NonCommercial-NoDerivatives 4.0 International license, you -should have received a copy of the license file as CC-BY-NC-ND-4.0. diff --git a/config/config.exs b/config/config.exs index fcad55bbe..5ea4cb899 100644 --- a/config/config.exs +++ b/config/config.exs @@ -100,8 +100,7 @@ config :pleroma, :emoji, shortcode_globs: ["/emoji/custom/**/*.png"], groups: [ # Put groups that have higher priority than defaults here. Example in `docs/config/custom_emoji.md` - Finmoji: ["/finmoji/128px/*-128.png"], - Custom: ["/emoji/*.png", "/emoji/custom/*.png"] + Custom: ["/emoji/*.png", "/emoji/**/*.png"] ], default_manifest: "https://git.pleroma.social/vaartis/emoji-index/raw/master/index.json" @@ -224,7 +223,6 @@ config :pleroma, :instance, "text/html", "text/markdown" ], - finmoji_enabled: true, mrf_transparency: true, autofollowed_nicknames: [], max_pinned_statuses: 1, diff --git a/docs/config.md b/docs/config.md index 5a97033b2..ccf744f42 100644 --- a/docs/config.md +++ b/docs/config.md @@ -87,7 +87,6 @@ config :pleroma, Pleroma.Emails.Mailer, * `quarantined_instances`: List of ActivityPub instances where private(DMs, followers-only) activities will not be send. * `managed_config`: Whenether the config for pleroma-fe is configured in this config or in ``static/config.json`` * `allowed_post_formats`: MIME-type list of formats allowed to be posted (transformed into HTML) -* `finmoji_enabled`: Whenether to enable the finmojis in the custom emojis. * `mrf_transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo). * `scope_copy`: Copy the scope (private/unlisted/public) in replies to posts by default. * `subject_line_behavior`: Allows changing the default behaviour of subject lines in replies. Valid values: diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index 169094438..6f9bd3eda 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Emoji do @moduledoc """ The emojis are loaded from: - * the built-in Finmojis (if enabled in configuration), + * emoji packs in INSTANCE-DIR/emoji * the files: `config/emoji.txt` and `config/custom_emoji.txt` * glob paths, nested folder is used as tag name for grouping e.g. priv/static/emoji/custom/nested_folder -- cgit v1.2.3 From d5c0fd35e1486040d4c57ba18942b2a228d6a4a8 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 21 Apr 2019 22:16:46 +0300 Subject: Wrap the docstrings to 70 characters --- lib/mix/tasks/pleroma/emoji.ex | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 02cfaa774..92d62b6de 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -17,16 +17,16 @@ defmodule Mix.Tasks.Pleroma.Emoji do ### Options - - `-m, --manifest PATH/URL` - path to a custom manifest, it can either be an URL - starting with `http`, in that case the manifest will be fetched from that address, - or a local path + - `-m, --manifest PATH/URL` - path to a custom manifest, it can + either be an URL starting with `http`, in that case the + manifest will be fetched from that address, or a local path ## get-packs mix pleroma.emoji get-packs [OPTION...] PACKS - Fetches, verifies and installs the specified PACKS from the manifest into - the `STATIC-DIR/emoji/PACK-NAME + Fetches, verifies and installs the specified PACKS from the + manifest into the `STATIC-DIR/emoji/PACK-NAME ### Options @@ -36,19 +36,23 @@ defmodule Mix.Tasks.Pleroma.Emoji do mix pleroma.emoji gen-pack PACK-URL - Creates a new manifest entry and a file list from the specified remote pack file. - Currently, only .zip archives are recognized as remote pack files and packs are therefore - assumed to be zip archives. This command is intended to run interactively and - will first ask you some basic questions about the pack, then download the remote - file and generate an MD5 signature for it, then generate an emoji file list for you. - - The manifest entry will either be written to a newly created `index.json` file or appended to the existing one, - *replacing* the old pack with the same name if it was in the file previously. - - The file list will be written to the file specified previously, *replacing* that file. - You _should_ check that the file list doesn't contain anything you don't need in the pack, that is, - anything that is not an emoji (the whole pack is downloaded, but only emoji files are extracted). - + Creates a new manifest entry and a file list from the specified + remote pack file. Currently, only .zip archives are recognized + as remote pack files and packs are therefore assumed to be zip + archives. This command is intended to run interactively and will + first ask you some basic questions about the pack, then download + the remote file and generate an MD5 signature for it, then + generate an emoji file list for you. + + The manifest entry will either be written to a newly created + `index.json` file or appended to the existing one, *replacing* + the old pack with the same name if it was in the file previously. + + The file list will be written to the file specified previously, + *replacing* that file. You _should_ check that the file list doesn't + contain anything you don't need in the pack, that is, anything that is + not an emoji (the whole pack is downloaded, but only emoji files + are extracted). """ @default_manifest Pleroma.Config.get!([:emoji, :default_manifest]) -- cgit v1.2.3 From 153f5375a6fa7ed3ae78a921acc87b1fb025aba9 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 21 Apr 2019 22:19:19 +0300 Subject: Replace MD5 with SHA256 for emoji pack verification --- lib/mix/tasks/pleroma/emoji.ex | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 92d62b6de..2754dd876 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -41,7 +41,7 @@ defmodule Mix.Tasks.Pleroma.Emoji do as remote pack files and packs are therefore assumed to be zip archives. This command is intended to run interactively and will first ask you some basic questions about the pack, then download - the remote file and generate an MD5 signature for it, then + the remote file and generate an SHA256 checksum for it, then generate an emoji file list for you. The manifest entry will either be written to a newly created @@ -110,16 +110,16 @@ defmodule Mix.Tasks.Pleroma.Emoji do ) binary_archive = Tesla.get!(src_url).body - archive_md5 = :crypto.hash(:md5, binary_archive) |> Base.encode16() + archive_sha = :crypto.hash(:sha256, binary_archive) |> Base.encode16() - md5_status_text = ["MD5 of ", :bright, pack_name, :normal, " source file is ", :bright] + sha_status_text = ["SHA256 of ", :bright, pack_name, :normal, " source file is ", :bright] - if archive_md5 == String.upcase(pack["src_md5"]) do - IO.puts(IO.ANSI.format(md5_status_text ++ [:green, "OK"])) + if archive_sha == String.upcase(pack["src_sha256"]) do + IO.puts(IO.ANSI.format(sha_status_text ++ [:green, "OK"])) else - IO.puts(IO.ANSI.format(md5_status_text ++ [:red, "BAD"])) + IO.puts(IO.ANSI.format(sha_status_text ++ [:red, "BAD"])) - raise "Bad MD5 for #{pack_name}" + raise "Bad SHA256 for #{pack_name}" end # The url specified in files should be in the same directory @@ -211,12 +211,12 @@ defmodule Mix.Tasks.Pleroma.Emoji do default_exts end - IO.puts("Downloading the pack and generating MD5") + IO.puts("Downloading the pack and generating SHA256") binary_archive = Tesla.get!(src).body - archive_md5 = :crypto.hash(:md5, binary_archive) |> Base.encode16() + archive_sha = :crypto.hash(:sha256, binary_archive) |> Base.encode16() - IO.puts("MD5 is #{archive_md5}") + IO.puts("SHA256 is #{archive_sha}") pack_json = %{ name => %{ @@ -224,7 +224,7 @@ defmodule Mix.Tasks.Pleroma.Emoji do homepage: homepage, description: description, src: src, - src_md5: archive_md5, + src_sha256: archive_sha, files: files_name } } -- cgit v1.2.3 From 0d6265cfe2763a2dd6411cc37e6b5c9e05fa259a Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 21 Apr 2019 22:32:34 +0300 Subject: Change the default manifest to pleroma's namespace --- config/config.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.exs b/config/config.exs index 5ea4cb899..9f2244222 100644 --- a/config/config.exs +++ b/config/config.exs @@ -102,7 +102,7 @@ config :pleroma, :emoji, # Put groups that have higher priority than defaults here. Example in `docs/config/custom_emoji.md` Custom: ["/emoji/*.png", "/emoji/**/*.png"] ], - default_manifest: "https://git.pleroma.social/vaartis/emoji-index/raw/master/index.json" + default_manifest: "https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json" config :pleroma, :uri_schemes, valid_schemes: [ -- cgit v1.2.3 From ba19ba8a88c206f1570abdd22aa09a45b48a8de5 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 21 Apr 2019 22:33:54 +0300 Subject: Formatting --- lib/pleroma/emoji.ex | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index 6f9bd3eda..071c7f6cd 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -132,12 +132,12 @@ defmodule Pleroma.Emoji do "No emoji.txt found for pack \"#{pack_name}\", assuming all .png files are emoji" ) - make_shortcode_to_file_map(pack_dir, [".png"]) |> - Enum.map(fn {shortcode, rel_file} -> - filename = Path.join("/emoji/#{pack_name}", rel_file) + make_shortcode_to_file_map(pack_dir, [".png"]) + |> Enum.map(fn {shortcode, rel_file} -> + filename = Path.join("/emoji/#{pack_name}", rel_file) - {shortcode, filename, [to_string(match_extra(@groups, filename))]} - end) + {shortcode, filename, [to_string(match_extra(@groups, filename))]} + end) end end -- cgit v1.2.3 From 3cefdc62e0dda75985221853fb123572d6fc068b Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 21 Apr 2019 22:46:55 +0300 Subject: Fix emoji.txt / custom_emoji.txt / shortcode_globs handling --- lib/pleroma/emoji.ex | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index 071c7f6cd..6390cce4c 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -101,22 +101,27 @@ defmodule Pleroma.Emoji do # Print the packs we've found Logger.info("Found emoji packs: #{Enum.join(packs, ", ")}") - # compat thing for old custom emoji handling - shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || [] - emojis = - (Enum.flat_map( - packs, - fn pack -> load_pack(Path.join(emoji_dir_path, pack)) end - ) ++ - load_from_file("config/emoji.txt") ++ - load_from_file("config/custom_emoji.txt") ++ - load_from_globs(shortcode_globs)) - |> Enum.reject(fn value -> value == nil end) + Enum.flat_map( + packs, + fn pack -> load_pack(Path.join(emoji_dir_path, pack)) end + ) true = :ets.insert(@ets, emojis) end + # Compat thing for old custom emoji handling & default emoji, + # it should run even if there are no emoji packs + shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || [] + + emojis = + (load_from_file("config/emoji.txt") ++ + load_from_file("config/custom_emoji.txt") ++ + load_from_globs(shortcode_globs)) + |> Enum.reject(fn value -> value == nil end) + + true = :ets.insert(@ets, emojis) + :ok end -- cgit v1.2.3