diff options
-rw-r--r-- | lib/mix/lib/mix/tasks/compile.app.ex | 35 | ||||
-rw-r--r-- | lib/mix/test/mix/tasks/compile.app_test.exs | 1 |
2 files changed, 20 insertions, 16 deletions
diff --git a/lib/mix/lib/mix/tasks/compile.app.ex b/lib/mix/lib/mix/tasks/compile.app.ex index dfef7ac83..edd915fc5 100644 --- a/lib/mix/lib/mix/tasks/compile.app.ex +++ b/lib/mix/lib/mix/tasks/compile.app.ex @@ -201,19 +201,17 @@ defmodule Mix.Tasks.Compile.App do Enum.map(beams, &(&1 |> Path.basename() |> Path.rootname(".beam") |> String.to_atom())) end - defp language_app(config) do - case Keyword.fetch(config, :language) do - {:ok, :elixir} -> [:elixir] - {:ok, :erlang} -> [] - :error -> [:elixir] - end - end - defp ensure_correct_properties(properties, config) do - properties - |> validate_properties! - |> Keyword.put_new_lazy(:applications, fn -> apps_from_prod_non_optional_deps(properties) end) - |> Keyword.update!(:applications, fn apps -> normalize_apps(apps, properties, config) end) + validate_properties!(properties) + {extra, properties} = Keyword.pop(properties, :extra_applications, []) + + apps = + properties + |> Keyword.get(:applications) + |> Kernel.||(apps_from_prod_non_optional_deps(properties)) + |> normalize_apps(extra, config) + + Keyword.put(properties, :applications, apps) end defp validate_properties!(properties) do @@ -313,8 +311,6 @@ defmodule Mix.Tasks.Compile.App do _ -> :ok end) - - properties end defp apps_from_prod_non_optional_deps(properties) do @@ -328,8 +324,15 @@ defmodule Mix.Tasks.Compile.App do do: app end - defp normalize_apps(apps, properties, config) do - extra = Keyword.get(properties, :extra_applications, []) + defp normalize_apps(apps, extra, config) do Enum.uniq([:kernel, :stdlib] ++ language_app(config) ++ extra ++ apps) end + + defp language_app(config) do + case Keyword.fetch(config, :language) do + {:ok, :elixir} -> [:elixir] + {:ok, :erlang} -> [] + :error -> [:elixir] + end + end end diff --git a/lib/mix/test/mix/tasks/compile.app_test.exs b/lib/mix/test/mix/tasks/compile.app_test.exs index b1aa60bcb..618b5af84 100644 --- a/lib/mix/test/mix/tasks/compile.app_test.exs +++ b/lib/mix/test/mix/tasks/compile.app_test.exs @@ -85,6 +85,7 @@ defmodule Mix.Tasks.Compile.AppTest do assert properties[:maxT] == :infinity assert properties[:applications] == [:kernel, :stdlib, :elixir, :logger, :example_app] assert properties[:description] == 'Some UTF-8 description (uma descrição em UTF-8)' + refute Keyword.has_key?(properties, :extra_applications) end) end |