38 lines
1.1 KiB
Elixir
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
|