Current section
Files
Jump to
Current section
Files
lib/simplates/hotreload.ex
defmodule Infuse.Simplates.Hotreload do
use GenServer
require Logger
def start_link(web_root) do
GenServer.start_link(__MODULE__, web_root)
end
def init(web_root) do
Logger.info("Worker: Started Infuse.Simplates.Hotreload")
{:ok, watcher_pid} = FileSystem.start_link(dirs: [web_root])
FileSystem.subscribe(watcher_pid)
Logger.info("Worker: Started watch on " <> web_root)
{:ok, %{watcher_pid: watcher_pid}}
end
def handle_info({:file_event, watcher_pid, {path, _events}}, %{watcher_pid: watcher_pid}=state) do
Logger.info("Hotreload: #{path} was updated")
Infuse.Simplates.Loader.load(to_string(path))
{:noreply, state}
end
def handle_info({:file_event, watcher_pid, :stop}, %{watcher_pid: watcher_pid}=state) do
{:noreply, state}
end
end