Current section

Files

Jump to
elixir_script lib mix tasks elixirscript.watch.ex
Raw

lib/mix/tasks/elixirscript.watch.ex

defmodule Mix.Tasks.Elixirscript.Watch do
use Mix.Task
@shortdoc "Watches ElixirScript files for changes"
@moduledoc """
Watches ElixirScript files for changes
Looks for the `elixir_script` key in your mix project config
def project do
[
app: :my_app,
version: "0.1.0",
elixir: "~> 1.0",
deps: deps,
elixir_script: [ input: "src/exjs", output: "dest/js"],
compilers: [:elixir_script] ++ Mix.compilers
]
end
"""
def run(_) do
Mix.Task.run "app.start"
elixirscript_config = get_elixirscript_config()
input_path = Keyword.fetch!(elixirscript_config, :input)
output_path = Keyword.fetch!(elixirscript_config, :output)
{:ok, pid} = ElixirScript.Watcher.start_link(input_path, %{ output: output_path })
:timer.sleep :infinity
end
defp get_elixirscript_config() do
config = Mix.Project.config
Keyword.fetch!(config, :elixir_script)
end
end