Current section

Files

Jump to
infuse lib simplates autoloader.ex
Raw

lib/simplates/autoloader.ex

defmodule Infuse.Simplates.Autoloader do
require Logger
def start_link(web_root) do
Logger.info("Worker: Started Infuse.Simplates.Autoloader")
autoload(web_root)
{:ok, self()}
end
@doc """
Traverse the Simplates directory and load each file & register routes
"""
def autoload(dir) do
Enum.map(Path.wildcard(Path.join([dir, "**", "*.spt"])), fn(v) ->
name = String.replace(v, Infuse.config_web_root(), "") # Remove webroot from path
{:ok, simplate} = Simplate.load_file(v, name)
# Register the routes!
Enum.map(simplate.routes, fn(route) ->
Infuse.HTTP.SimplateRouter.register(route, Infuse.HTTP.SimplateDispatch, %{:simplate => simplate})
Logger.info("Dispatch: Registering #{route}")
end)
end)
end
end