index : pandoc | |
Hex package with a file-watcher and Mix task for using Pandoc to convert Markdown files to HTML. |
aboutsummaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'lib/pandoc.ex')
-rw-r--r-- | lib/pandoc.ex | 59 |
1 files changed, 22 insertions, 37 deletions
diff --git a/lib/pandoc.ex b/lib/pandoc.ex index bf01873..336aeec 100644 --- a/lib/pandoc.ex +++ b/lib/pandoc.ex @@ -2,50 +2,36 @@ defmodule Pandoc do @moduledoc """ Documentation for `Pandoc`. """ - use GenServer - def start_link(args) do - GenServer.start_link(__MODULE__, args) - end - - def init([profile | args]) do - IO.puts "pandoc filesystem watcher init args #{inspect(args)}" - # inspect(Application.get_all_env(:pandoc)) |> IO.puts - inspect(Application.get_env(:pandoc, profile)) |> IO.puts - {:ok, watcher_pid} = FileSystem.start_link(args) - FileSystem.subscribe(watcher_pid) - {:ok, %{watcher_pid: watcher_pid}} - end - - def handle_info({:file_event, watcher_pid, {path, events}}, %{watcher_pid: watcher_pid} = state) do - case {Path.extname(path), :closed in events} do - {".md", true} -> - System.cmd("pandoc", [ - "--mathjax", - path, - "-o", - Path.join("priv/static/posts", Path.basename(path) |> String.replace_suffix(".md", ".html") |> String.slice(11..-1//1)) - ]) - _ -> nil - end - - {:noreply, state} - end - - def handle_info({:file_event, watcher_pid, :stop}, %{watcher_pid: watcher_pid} = state) do - # Your own logic when monitor stop - {:noreply, state} + def install_and_run(path) do + System.cmd("pandoc", [ + "--mathjax", + path, + "-o", + Path.join( + "priv/static/posts", + Path.basename(path) + |> String.replace_suffix(".md", ".html") + |> String.slice(11..-1//1) + ) + ]) end - def run(profile) do + def install_and_run(profile, ["--watch"]) do # Application.get_env(:pandoc, a1) |> inspect(pretty: true) |> IO.puts - Application.get_all_env(profile) |> inspect(pretty: true) |> IO.puts + IO.puts( + "Pandoc watcher starting, env: #{Application.get_env(:pandoc, profile) |> inspect(pretty: true)}" + ) + + # Application.get_env(:pandoc, profile) |> inspect(pretty: true) |> IO.puts() ref = __MODULE__.Supervisor |> Supervisor.start_child( - Supervisor.child_spec({Pandoc, [profile, dirs: ["priv/posts"]]}, restart: :transient, id: - __MODULE__.Watcher) + Supervisor.child_spec({Pandoc.Watcher, [profile, dirs: ["priv/posts"]]}, + restart: :transient, + id: __MODULE__.Watcher + ) ) |> case do {:ok, pid} -> pid @@ -58,4 +44,3 @@ defmodule Pandoc do end end end - |