diff --git a/installer/lib/mix/tasks/igniter.new.ex b/installer/lib/mix/tasks/igniter.new.ex index 2141e17..03e3e7c 100644 --- a/installer/lib/mix/tasks/igniter.new.ex +++ b/installer/lib/mix/tasks/igniter.new.ex @@ -105,10 +105,12 @@ defmodule Mix.Tasks.Igniter.New do "--example" end - install_args = Enum.filter([Enum.join(install, ","), "--yes", example], & &1) + install_args = + Enum.filter([Enum.join(install, ","), "--yes", example], & &1) System.cmd("mix", ["deps.get"]) - System.cmd("mix", ["igniter.install" | install_args], use_stdio: false) + System.cmd("mix", ["deps.compile"]) + System.cmd("mix", ["igniter.install" | install_args]) end :ok diff --git a/installer/lib/private/deps_compile.ex b/installer/lib/private/deps_compile.ex index 3799643..e3cf8e6 100644 --- a/installer/lib/private/deps_compile.ex +++ b/installer/lib/private/deps_compile.ex @@ -45,6 +45,8 @@ defmodule Igniter.Util.DepsCompile do [include_children: true] compile(filter_available_and_local_deps(deps), opts) + Mix.Task.reenable("deps.loadpaths") + Mix.Task.run("deps.loadpaths", ["--no-deps-check"]) end @doc false diff --git a/lib/igniter/code/module.ex b/lib/igniter/code/module.ex index 99169c7..daa04ae 100644 --- a/lib/igniter/code/module.ex +++ b/lib/igniter/code/module.ex @@ -31,23 +31,7 @@ defmodule Igniter.Code.Module do igniter {:error, igniter} -> - contents = - """ - defmodule #{inspect(module_name)} do - #{contents} - end - """ - - location = - case Keyword.get(opts, :path, nil) do - nil -> - proper_location(module_name) - - path -> - path - end - - Igniter.create_new_elixir_file(igniter, location, contents) + create_module(igniter, module_name, contents, opts) end end @@ -63,6 +47,27 @@ defmodule Igniter.Code.Module do find_and_update_or_create_module(igniter, module_name, contents, updater, path: path) end + @doc "Creates a new file & module in its appropriate location." + def create_module(igniter, module_name, contents, opts \\ []) do + contents = + """ + defmodule #{inspect(module_name)} do + #{contents} + end + """ + + location = + case Keyword.get(opts, :path, nil) do + nil -> + proper_location(module_name) + + path -> + path + end + + Igniter.create_new_elixir_file(igniter, location, contents) + end + @doc "Checks if a module is defined somewhere in the project. The returned igniter should not be discarded." def module_exists?(igniter, module_name) do case find_module(igniter, module_name) do