Current section

Files

Jump to
infuse lib infuse.ex
Raw

lib/infuse.ex

defmodule Infuse do
use Application
require Logger
def start(_type, _args) do
if Mix.env == :dev do
:ets.new(:simplate_routes, [:named_table, :bag, :public])
Infuse.Simplates.Registry.start_link
autoload(Application.get_env(:infuse, :web_root))
end
Infuse.Supervisor.start_link
end
def autoload(dir) do
DirWalker.stream(dir) |> Enum.map(fn(v) ->
name = String.replace(v, Application.get_env(:infuse, :web_root), "") # Remove webroot from path
simplate = Simplate.load_file(v, name)
Infuse.Simplates.Registry.put(name, simplate)
# Register the routes!
Enum.map(simplate.routes, fn(route) ->
Infuse.HTTP.Dispatch.register("localhost", route, Infuse.HTTP.SimplateRouter, %{:simplate => simplate})
Logger.info("DISPATCH: Registering #{route}")
end)
end)
end
end