pleroma/lib/mix/tasks/create_custom_emoji_list.ex

38 lines
1.1 KiB
Elixir

defmodule Mix.Tasks.CreateCustomEmojiList do
use Mix.Task
@emoji_root "priv/static/emoji/"
@custom_emoji_root "#{@emoji_root}custom"
@custom_emoji_file "config/custom_emoji.txt"
@shortdoc "Generates #{@custom_emoji_file}"
def run(_) do
if File.dir?(@custom_emoji_root) do
IO.puts("#{@custom_emoji_root} directory found.")
{:ok, file_handle} = File.open(@custom_emoji_file, [:write])
handle_dir(@custom_emoji_root, file_handle)
File.close(file_handle)
else
IO.puts("#{@custom_emoji_root} directory does not exist.")
end
end
def handle_dir(dir, file_handle) do
for entry <- File.ls!(dir) do
full_entry_path = Path.join(dir, entry)
if File.dir?(full_entry_path) do
handle_dir(full_entry_path, file_handle)
else
handle_file(full_entry_path, file_handle)
end
end
end
def handle_file(file, file_handle) do
relative_name = Path.relative_to(file, @emoji_root)
basename = String.downcase(Path.basename(file, Path.extname(file)))
IO.puts(file_handle, "#{basename}, /emoji/#{relative_name}")
end
end