Web Dev Solutions

Catalin Mititiuc

defmodule Pandoc do @moduledoc """ Documentation for `Pandoc`. """ def run(profile, ["--watch" | dirs]) do ref = __MODULE__.Supervisor |> Supervisor.start_child( Supervisor.child_spec({Pandoc.Watcher, [profile, dirs: dirs]}, restart: :transient, id: __MODULE__.Watcher ) ) |> case do {:ok, pid} -> pid {:error, {:already_started, pid}} -> pid end |> Process.monitor() receive do {:DOWN, ^ref, _, _, _} -> :ok end end def run(profile, extra_args) do config = Application.get_env(:pandoc, profile) args = config[:args] || [] opts = [ cd: config[:cd] || File.cwd!(), into: IO.stream(:stdio, :line), stderr_to_stdout: true ] [path] = extra_args args = List.update_at(args, -1, fn v -> Path.join( v, path |> Path.basename() |> String.replace_suffix(".md", ".html") |> String.slice(11..-1//1) ) end) "pandoc" |> System.cmd(args ++ extra_args, opts) |> elem(1) end end