@@ -447,19 +447,19 @@ defmodule Mix.Tasks.Compile.App do
447447 end
448448
449449 { all , optional } =
450- project_apps ( properties , config , extra , fn ->
451- apps_from_runtime_prod_deps ( properties , config )
450+ Mix.Utils . project_apps ( properties , config , extra , fn apps_opts ->
451+ apps_from_runtime_prod_deps ( properties , apps_opts )
452452 end )
453453
454454 properties
455455 |> Keyword . put ( :applications , all )
456456 |> Keyword . put ( :optional_applications , optional )
457457 end
458458
459- defp apps_from_runtime_prod_deps ( properties , config ) do
459+ defp apps_from_runtime_prod_deps ( properties , apps_opts ) do
460460 included_applications = Keyword . get ( properties , :included_applications , [ ] )
461461
462- for { app , opts } <- deps_opts ( config ) ,
462+ for { app , opts } <- apps_opts ,
463463 runtime_app? ( opts ) ,
464464 app not in included_applications ,
465465 do: { app , if ( Keyword . get ( opts , :optional , false ) , do: :optional , else: :required ) }
@@ -483,44 +483,4 @@ defmodule Mix.Tasks.Compile.App do
483483 :error -> true
484484 end
485485 end
486-
487- defp deps_opts ( config ) do
488- for config_dep <- Keyword . get ( config , :deps , [ ] ) ,
489- do: { elem ( config_dep , 0 ) , dep_opts ( config_dep ) }
490- end
491-
492- defp dep_opts ( { _app , opts } ) when is_list ( opts ) , do: opts
493- defp dep_opts ( { _app , _req , opts } ) when is_list ( opts ) , do: opts
494- defp dep_opts ( _ ) , do: [ ]
495-
496- ## Helpers for loading and manipulating apps
497-
498- @ doc false
499- def project_apps ( properties , config , extra , deps_loader ) do
500- apps = Keyword . get ( properties , :applications ) || deps_loader . ( )
501- { all , required , optional } = split_by_type ( extra ++ apps )
502- all = Enum . uniq ( language_apps ( config ) ++ Enum . reverse ( all ) )
503- optional = Enum . uniq ( Enum . reverse ( optional -- required ) )
504- { all , optional }
505- end
506-
507- defp split_by_type ( apps ) do
508- Enum . reduce ( apps , { [ ] , [ ] , [ ] } , fn
509- app , { all , required , optional } when is_atom ( app ) ->
510- { [ app | all ] , [ app | required ] , optional }
511-
512- { app , :required } , { all , required , optional } ->
513- { [ app | all ] , [ app | required ] , optional }
514-
515- { app , :optional } , { all , required , optional } ->
516- { [ app | all ] , required , [ app | optional ] }
517- end )
518- end
519-
520- defp language_apps ( config ) do
521- case Keyword . get ( config , :language , :elixir ) do
522- :elixir -> [ :kernel , :stdlib , :elixir ]
523- :erlang -> [ :kernel , :stdlib ]
524- end
525- end
526486end
0 commit comments