@@ -367,19 +367,30 @@ defmodule Mix.Dep.Loader do
367367 { dep , [ ] }
368368 end
369369
370- defp gleam_dep ( % Mix.Dep { opts: opts } = dep , children , locked? ) do
370+ defp gleam_dep ( % Mix.Dep { opts: opts } = dep , _children = nil , locked? ) do
371371 Mix.Gleam . require! ( )
372372
373- deps =
374- if children do
375- Enum . map ( children , & to_dep ( & 1 , opts [ :dest ] , _manager = nil , locked? ) )
376- else
377- config = File . cd! ( opts [ :dest ] , fn -> Mix.Gleam . load_config ( "." ) end )
378- from = Path . join ( opts [ :dest ] , "gleam.toml" )
379- Enum . map ( config [ :deps ] , & to_dep ( & 1 , from , _manager = nil , locked? ) )
380- end
373+ config = File . cd! ( opts [ :dest ] , fn -> Mix.Gleam . load_config ( "." ) end )
374+ from = Path . join ( opts [ :dest ] , "gleam.toml" )
375+ deps = Enum . map ( config [ :deps ] , & to_dep ( & 1 , from , _manager = nil , locked? ) )
376+
377+ properties = [
378+ { :vsn , to_charlist ( config [ :version ] ) } ,
379+ { :mod , { String . to_atom ( config [ :mod ] ) , [ ] } }
380+ ]
381381
382- { % { dep | opts: Keyword . merge ( opts , app: false , override: true ) } , deps }
382+ contents = :io_lib . format ( "~p.~n" , [ { :application , dep . app , properties } ] )
383+
384+ [ opts [ :build ] , "ebin" , "#{ dep . app } .app" ]
385+ |> Path . join ( )
386+ |> File . write! ( IO . chardata_to_string ( contents ) )
387+
388+ { dep , deps }
389+ end
390+
391+ defp gleam_dep ( % Mix.Dep { opts: opts } = dep , children , locked? ) do
392+ dep = % { dep | opts: Keyword . merge ( opts , app: false , override: true ) }
393+ { dep , Enum . map ( children , & to_dep ( & 1 , opts [ :dest ] , _manager = nil , locked? ) ) }
383394 end
384395
385396 defp mix_children ( config , locked? , opts ) do
0 commit comments