## ls-packs
- mix pleroma.emoji ls-packs [OPTION...]
+ mix pleroma.emoji ls-packs [OPTION...]
Lists the emoji packs and metadata specified in the manifest.
## get-packs
- mix pleroma.emoji get-packs [OPTION...] 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
+ manifest into the `STATIC-DIR/emoji/PACK-NAME`
### Options
## gen-pack
- mix pleroma.emoji gen-pack PACK-URL
+ 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
+ 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
])
)
- binary_archive = Tesla.get!(src_url).body
- archive_md5 = :crypto.hash(:md5, binary_archive) |> Base.encode16()
+ binary_archive = Tesla.get!(client(), src_url).body
+ 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
])
)
- files = Tesla.get!(files_url).body |> Poison.decode!()
+ files = Tesla.get!(client(), files_url).body |> Jason.decode!()
IO.puts(IO.ANSI.format(["Unpacking ", :bright, pack_name]))
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()
+ binary_archive = Tesla.get!(client(), src).body
+ archive_sha = :crypto.hash(:sha256, binary_archive) |> Base.encode16()
- IO.puts("MD5 is #{archive_md5}")
+ IO.puts("SHA256 is #{archive_sha}")
pack_json = %{
name => %{
homepage: homepage,
description: description,
src: src,
- src_md5: archive_md5,
+ src_sha256: archive_sha,
files: files_name
}
}
emoji_map = Pleroma.Emoji.make_shortcode_to_file_map(tmp_pack_dir, exts)
- File.write!(files_name, Poison.encode!(emoji_map, pretty: true))
+ File.write!(files_name, Jason.encode!(emoji_map, pretty: true))
IO.puts("""
""")
if File.exists?("index.json") do
- existing_data = File.read!("index.json") |> Poison.decode!()
+ existing_data = File.read!("index.json") |> Jason.decode!()
File.write!(
"index.json",
- Poison.encode!(
+ Jason.encode!(
Map.merge(
existing_data,
pack_json
IO.puts("index.json file has been update with the #{name} pack")
else
- File.write!("index.json", Poison.encode!(pack_json, pretty: true))
+ File.write!("index.json", Jason.encode!(pack_json, pretty: true))
IO.puts("index.json has been created with the #{name} pack")
end
end
defp fetch_manifest(from) do
- Poison.decode!(
+ Jason.decode!(
if String.starts_with?(from, "http") do
- Tesla.get!(from).body
+ Tesla.get!(client(), from).body
else
File.read!(from)
end
]
)
end
+
+ defp client do
+ middleware = [
+ {Tesla.Middleware.FollowRedirects, [max_redirects: 3]}
+ ]
+
+ Tesla.client(middleware)
+ end
end