@@ -21,12 +21,14 @@ import qualified System.Directory as Dir
21import qualified System.FilePath as FP
21import qualified System.FilePath as FP
22import System.FilePath ((</>))
22import System.FilePath ((</>))
24+import qualified Elm.Compiler as Compiler
24import qualified Elm.Compiler.Module as Module
25import qualified Elm.Compiler.Module as Module
25import qualified Elm.Compiler.Objects as Obj
26import qualified Elm.Compiler.Objects as Obj
26import qualified Elm.Interface as I
27import qualified Elm.Interface as I
27import qualified Elm.Name as N
28import qualified Elm.Name as N
28import qualified Elm.Package as Pkg
29import qualified Elm.Package as Pkg
31+import qualified AST.Module.Name as ModuleName
30import qualified Elm.Project.Json as Project
32import qualified Elm.Project.Json as Project
31import qualified Elm.Project.Summary as Summary
33import qualified Elm.Project.Summary as Summary
32import qualified File.Args as Args
34import qualified File.Args as Args
@@ -50,8 +52,15 @@ import Terminal.Args (Parser(..))
50data Mode = Debug | Dev | Prod
52data Mode = Debug | Dev | Prod
53−generate :: Mode -> Mode.Target -> Maybe Output -> Summary.Summary -> Crawl.Result -> Task.Task ()
55+generate
61+ -> Map.Map Module.Raw Compiler.Artifacts
54−generate mode target maybeOutput summary graph@(Crawl.Graph args _ _ _ _) =
63+generate mode target maybeOutput summary graph@(Crawl.Graph args _ _ _ _) artifacts =
55 case args of
64 case args of
56 Args.Pkg _ ->
65 Args.Pkg _ ->
@@ -61,20 +70,40 @@ generate mode target maybeOutput summary graph@(Crawl.Graph args _ _ _ _) =
62 realMode <-
71 realMode <-
63 case mode of
72 case mode of
64− Debug -> return (Mode.debug target (error "TODO"))
73+ Debug ->
74+ return $ Mode.debug target (getInterfaces summary artifacts)
65− Dev -> return (Mode.dev target)
77+ return $ Mode.dev target
67 do noDebugUses summary objectGraph
80 do noDebugUses summary objectGraph
68− return (Mode.prod target objectGraph)
81+ return $ Mode.prod target objectGraph
70 generateMonolith realMode maybeOutput summary objectGraph (name:names)
83 generateMonolith realMode maybeOutput summary objectGraph (name:names)
86+getInterfaces :: Summary.Summary -> Map.Map Module.Raw Compiler.Artifacts -> I.Interfaces
87+getInterfaces (Summary.Summary _ project _ interfaces _) artifacts =
89+ pkg = Project.getName project
90+ addArtifact home (Compiler.Artifacts elmi _ _) ifaces =
91+ Map.insert (ModuleName.Canonical pkg home) elmi ifaces
93+ Map.foldrWithKey addArtifact interfaces artifacts
74-- GENERATE MONOLITH
97-- GENERATE MONOLITH
77−generateMonolith :: Mode.Mode -> Maybe Output -> Summary.Summary -> Obj.Graph -> [Module.Raw] -> Task.Task ()
100+generateMonolith
78generateMonolith mode maybeOutput (Summary.Summary _ project _ _ _) graph rootNames =
107generateMonolith mode maybeOutput (Summary.Summary _ project _ _ _) graph rootNames =
79 do let pkg = Project.getName project
108 do let pkg = Project.getName project
80 let roots = map (Module.Canonical pkg) rootNames
109 let roots = map (Module.Canonical pkg) rootNames