aboutsummaryrefslogtreecommitdiff
path: root/lib/mix
diff options
context:
space:
mode:
authorEkaterina Vaartis <vaartis@cock.li>2019-04-17 23:54:09 +0300
committerEkaterina Vaartis <vaartis@cock.li>2019-04-20 11:17:17 +0300
commitc26724cc5580a13d9e7e7468860eff8e49e02ba2 (patch)
tree2cff62eec405e0e30ed0501f8951c4b1bd06b17a /lib/mix
parent6ca82c18a738205483dbbef2fd4de662d70227fb (diff)
downloadpleroma-c26724cc5580a13d9e7e7468860eff8e49e02ba2.tar.gz
Remove finmoji and add a way to download emojis in packs
These packs are stored in a git repo on pleroma gitlab
Diffstat (limited to 'lib/mix')
-rw-r--r--lib/mix/tasks/pleroma/emoji.ex98
1 files changed, 98 insertions, 0 deletions
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 <https://pleroma.social/>
+# 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