@@ -21,12 +21,14 @@ import qualified System.Directory as Dir
2121import qualified System.FilePath as FP
2222import System.FilePath ((</>))
2323
24+import qualified Elm.Compiler as Compiler
2425import qualified Elm.Compiler.Module as Module
2526import qualified Elm.Compiler.Objects as Obj
2627import qualified Elm.Interface as I
2728import qualified Elm.Name as N
2829import qualified Elm.Package as Pkg
2930
31+import qualified AST.Module.Name as ModuleName
3032import qualified Elm.Project.Json as Project
3133import qualified Elm.Project.Summary as Summary
3234import qualified File.Args as Args
@@ -50,8 +52,15 @@ import Terminal.Args (Parser(..))
5052data Mode = Debug | Dev | Prod
5153
5254
53−generate :: Mode -> Mode.Target -> Maybe Output -> Summary.Summary -> Crawl.Result -> Task.Task ()
54−generate mode target maybeOutput summary graph@(Crawl.Graph args _ _ _ _) =
55+generate
56+ :: Mode
57+ -> Mode.Target
58+ -> Maybe Output
59+ -> Summary.Summary
60+ -> Crawl.Result
61+ -> Map.Map Module.Raw Compiler.Artifacts
62+ -> Task.Task ()
63+generate mode target maybeOutput summary graph@(Crawl.Graph args _ _ _ _) artifacts =
5564 case args of
5665 Args.Pkg _ ->
5766 return ()
@@ -61,20 +70,40 @@ generate mode target maybeOutput summary graph@(Crawl.Graph args _ _ _ _) =
6170
6271 realMode <-
6372 case mode of
64− Debug -> return (Mode.debug target (error "TODO"))
65− Dev -> return (Mode.dev target)
73+ Debug ->
74+ return $ Mode.debug target (getInterfaces summary artifacts)
75+
76+ Dev ->
77+ return $ Mode.dev target
78+
6679 Prod ->
6780 do noDebugUses summary objectGraph
68− return (Mode.prod target objectGraph)
81+ return $ Mode.prod target objectGraph
6982
7083 generateMonolith realMode maybeOutput summary objectGraph (name:names)
7184
7285
86+getInterfaces :: Summary.Summary -> Map.Map Module.Raw Compiler.Artifacts -> I.Interfaces
87+getInterfaces (Summary.Summary _ project _ interfaces _) artifacts =
88+ let
89+ pkg = Project.getName project
90+ addArtifact home (Compiler.Artifacts elmi _ _) ifaces =
91+ Map.insert (ModuleName.Canonical pkg home) elmi ifaces
92+ in
93+ Map.foldrWithKey addArtifact interfaces artifacts
94+
95+
7396
7497-- GENERATE MONOLITH
7598
7699
77−generateMonolith :: Mode.Mode -> Maybe Output -> Summary.Summary -> Obj.Graph -> [Module.Raw] -> Task.Task ()
100+generateMonolith
101+ :: Mode.Mode
102+ -> Maybe Output
103+ -> Summary.Summary
104+ -> Obj.Graph
105+ -> [Module.Raw]
106+ -> Task.Task ()
78107generateMonolith mode maybeOutput (Summary.Summary _ project _ _ _) graph rootNames =
79108 do let pkg = Project.getName project
80109 let roots = map (Module.Canonical pkg) rootNames