Packages
maru
0.2.5
0.14.0-pre.1
0.13.2
0.13.1
0.13.0
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.0
0.5.1
0.5.0
0.4.1
0.4.0
0.3.1
0.3.0
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
REST-like API micro-framework for elixir inspired by grape.
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/routers.ex
defmodule Mix.Tasks.Maru.Routers do
use Mix.Task
def run(_) do
unless System.get_env("MIX_ENV") do
Mix.env(:dev)
end
for {mod, _} <- Maru.Config.servers do
mod |> generate_module
end
end
defp generate_module(mod, path \\ []) do
for ep <- mod.__endpoints__ do
generate_endpoint(ep, path)
end
for {_, [router: m, resource: resource], _} <- mod.__routers__ do
generate_module(m, path ++ resource.path)
end
end
defp generate_endpoint(ep, path) do
method = String.ljust(ep.method, 7)
path = generate_path(path ++ ep.path)
desc = ep.desc
IO.puts "#{method} #{path} #{desc}"
end
defp generate_path([]), do: "/"
defp generate_path(p) do
func = fn(i) when is_atom(i) -> ":#{i}"
(i) -> i
end
["" | p] |> Enum.map(func) |> Enum.join("/")
end
end