defmodule Mix.Tasks.UpdateSlackApi do
@moduledoc """
Updates Slack API documentation files for generating API code.
"""
use Mix.Task
@dir System.tmp_dir()
def run(_) do
try do
System.cmd("git", [
"clone",
"https://github.com/slackhq/slack-api-docs",
"#{@dir}/slack-api-docs"
])
list_files()
|> filter_json
|> copy_files
after
System.cmd("rm", ["-rf", "#{@dir}/slack-api-docs"])
end
end
defp list_files do
File.ls!("#{@dir}slack-api-docs/methods")
end
defp filter_json(files) do
Enum.filter(files, fn file ->
String.ends_with?(file, "json")
end)
end
defp copy_files(files) do
File.mkdir_p!("lib/slack/web/docs")
Enum.map(files, fn file ->
origin = "#{@dir}slack-api-docs/methods/#{file}"
dest = "lib/slack/web/docs/#{file}"
File.cp!(origin, dest)
end)
end
end