on master help sign in
Keep flowing Generate.JavaScript.Mode through codebase

The only important thing is that there is a TODO remaining. I need to load all interfaces if we are in debug mode. That’ll come in a later commit.

commitbf83edc12fd3784026e205f77395db325ad10910 authorEvan Czaplicki <evancz@users.noreply.github.com> dateTue 10 Apr 2018, 16:27 (9 years ago) parente4797db
6 files changed+38−44
builder/src/Elm/Project.hs+10−3 builder/src/Generate/Output.hs+18−18 compiler/src/Elm/Compiler/Objects.hs+1−4 ui/terminal/src/Develop.hs+2−4 ui/terminal/src/Develop/StaticFiles/Build.hs+2−8 ui/terminal/src/Make.hs+5−7
builder/src/Elm/Project.hs+10−3
@@ -48,15 +48,22 @@ getRootWithReplFallback =
4848-- COMPILE
4949
5050
51−compile :: Output.Options -> Maybe FilePath -> Summary -> [FilePath] -> Task.Task ()
52−compile options docs summary@(Summary.Summary root project _ _ _) paths =
51+compile
52+ :: Output.Mode
53+ -> Output.Target
54+ -> Maybe Output.Output
55+ -> Maybe FilePath
56+ -> Summary
57+ -> [FilePath]
58+ -> Task.Task ()
59+compile mode target maybeOutput docs summary@(Summary.Summary root project _ _ _) paths =
5360 do args <- Args.fromPaths summary paths
5461 graph <- Crawl.crawl summary args
5562 (dirty, ifaces) <- Plan.plan docs summary graph
5663 answers <- Compile.compile project docs ifaces dirty
5764 results <- Artifacts.write root answers
5865 _ <- traverse (Artifacts.writeDocs results) docs
59− Output.generate options summary graph
66+ Output.generate mode target maybeOutput summary graph
6067
6168
6269
builder/src/Generate/Output.hs+18−18
@@ -1,10 +1,11 @@
11{-# OPTIONS_GHC -Wall #-}
22{-# LANGUAGE OverloadedStrings #-}
33module Generate.Output
4− ( generate
4+ ( Mode(..)
5+ , Mode.Target(..)
6+ , generate
57 , generateReplFile
68 , noDebugUsesInPackage
7− , Options(..)
89 , Output(..)
910 , output
1011 )
@@ -34,6 +35,7 @@ import qualified File.IO as IO
3435import qualified Generate.Functions as Functions
3536import qualified Generate.Html as Html
3637import qualified Generate.Nitpick as Nitpick
38+import qualified Generate.JavaScript.Mode as Mode
3739import qualified Reporting.Exit as Exit
3840import qualified Reporting.Exit.Make as E
3941import qualified Reporting.Task as Task
@@ -45,16 +47,11 @@ import Terminal.Args (Parser(..))
4547-- GENERATE
4648
4749
48−data Options =
49− Options
50− { _mode :: Obj.Mode
51− , _target :: Obj.Target
52− , _output :: Maybe Output
53− }
50+data Mode = Debug | Dev | Prod
5451
5552
56−generate :: Options -> Summary.Summary -> Crawl.Result -> Task.Task ()
57−generate options summary graph@(Crawl.Graph args _ _ _ _) =
53+generate :: Mode -> Mode.Target -> Maybe Output -> Summary.Summary -> Crawl.Result -> Task.Task ()
54+generate mode target maybeOutput summary graph@(Crawl.Graph args _ _ _ _) =
5855 case args of
5956 Args.Pkg _ ->
6057 return ()
@@ -62,23 +59,26 @@ generate options summary graph@(Crawl.Graph args _ _ _ _) =
6259 Args.Roots name names ->
6360 do objectGraph <- organize summary graph
6461
65− case _mode options of
66− Obj.Debug -> return ()
67− Obj.Dev -> return ()
68− Obj.Prod -> noDebugUses summary objectGraph
62+ realMode <-
63+ case mode of
64+ Debug -> return (Mode.debug target (error "TODO"))
65+ Dev -> return (Mode.dev target)
66+ Prod ->
67+ do noDebugUses summary objectGraph
68+ return (Mode.prod target objectGraph)
6969
70− generateMonolith options summary objectGraph (name:names)
70+ generateMonolith realMode maybeOutput summary objectGraph (name:names)
7171
7272
7373
7474-- GENERATE MONOLITH
7575
7676
77−generateMonolith :: Options -> Summary.Summary -> Obj.Graph -> [Module.Raw] -> Task.Task ()
78−generateMonolith (Options mode target maybeOutput) (Summary.Summary _ project _ ifaces _) graph rootNames =
77+generateMonolith :: Mode.Mode -> Maybe Output -> Summary.Summary -> Obj.Graph -> [Module.Raw] -> Task.Task ()
78+generateMonolith mode maybeOutput (Summary.Summary _ project _ _ _) graph rootNames =
7979 do let pkg = Project.getName project
8080 let roots = map (Module.Canonical pkg) rootNames
81− case Obj.generate mode target ifaces graph roots of
81+ case Obj.generate mode graph roots of
8282 Obj.None ->
8383 return ()
8484
compiler/src/Elm/Compiler/Objects.hs+1−4
@@ -1,8 +1,6 @@
11{-# OPTIONS_GHC -Wall #-}
22module Elm.Compiler.Objects
3− ( Name.Target(..)
4− , JS.Mode(..)
5− , JS.Output(..)
3+ ( JS.Output(..)
64 , JS.generate
75 , JS.generateForRepl
86 , Opt.Graph
@@ -23,7 +21,6 @@ import qualified AST.Module.Name as ModuleName
2321import qualified Elm.Name as N
2422import qualified Elm.Package as Pkg
2523import qualified Generate.JavaScript as JS
26−import qualified Generate.JavaScript.Name as Name
2724
2825
2926
ui/terminal/src/Develop.hs+2−4
@@ -20,7 +20,6 @@ import Snap.Core
2020import Snap.Http.Server
2121import Snap.Util.FileServe
2222
23−import qualified Elm.Compiler.Objects as Obj
2423import qualified Elm.Project as Project
2524import qualified Develop.Generate.Help as Generate
2625import qualified Develop.Generate.Index as Index
@@ -30,7 +29,6 @@ import qualified Json.Encode as Encode
3029import qualified Reporting.Exit as Exit
3130import qualified Reporting.Progress as Progress
3231import qualified Reporting.Task as Task
33−import qualified Stuff.Paths as Path
3432
3533
3634
@@ -166,11 +164,11 @@ compileToHtmlBuilder file =
166164 mvar2 <- newEmptyMVar
167165
168166 let reporter = Progress.Reporter (\_ -> return ()) (putMVar mvar1)
169− let options = Output.Options Obj.Dev Obj.Client (Just (Output.HtmlBuilder mvar2))
167+ let output = Just (Output.HtmlBuilder mvar2)
170168
171169 void $ Task.run reporter $
172170 do summary <- Project.getRoot
173− Project.compile options Nothing summary [file]
171+ Project.compile Output.Dev Output.Client output Nothing summary [file]
174172
175173 result <- takeMVar mvar1
176174 case result of
ui/terminal/src/Develop/StaticFiles/Build.hs+2−8
@@ -11,7 +11,6 @@ import qualified Data.ByteString as BS
1111import qualified System.Directory as Dir
1212import System.FilePath ((</>))
1313
14−import qualified Elm.Compiler.Objects as Obj
1514import qualified Elm.Project as Project
1615import qualified Generate.Output as Output
1716import qualified Reporting.Task as Task
@@ -37,19 +36,14 @@ compile =
3736 do reporter <- Terminal.create
3837 void $ Task.run reporter $
3938 do summary <- Project.getRoot
40− Project.compile options Nothing summary rootPaths
39+ let jsOutput = Just (Output.JavaScript Nothing tempFileName)
40+ Project.compile Output.Prod Output.Client jsOutput Nothing summary rootPaths
4141
4242 result <- BS.readFile tempFileName
4343 seq (BS.length result) (Dir.removeFile tempFileName)
4444 return result
4545
4646
47−options :: Output.Options
48−options =
49− Output.Options Obj.Prod Obj.Client $
50− Just (Output.JavaScript Nothing tempFileName)
51−
52−
5347tempFileName :: FilePath
5448tempFileName =
5549 "elm.js"
ui/terminal/src/Make.hs+5−7
@@ -11,7 +11,6 @@ module Make
1111import Control.Monad (void)
1212import qualified System.FilePath as FP
1313
14−import qualified Elm.Compiler.Objects as Obj
1514import qualified Elm.Project as Project
1615import qualified Generate.Output as Output
1716import qualified Reporting.Exit as Exit
@@ -43,17 +42,16 @@ run paths (Flags debug optimize output report docs) =
4342 void $ Task.run reporter $
4443 do mode <- toMode debug optimize
4544 summary <- Project.getRoot
46− let options = Output.Options mode Obj.Client output
47− Project.compile options docs summary paths
45+ Project.compile mode Output.Client output docs summary paths
4846
4947
50−toMode :: Bool -> Bool -> Task.Task Obj.Mode
48+toMode :: Bool -> Bool -> Task.Task Output.Mode
5149toMode debug optimize =
5250 case (debug, optimize) of
5351 (True , True ) -> Task.throw $ Exit.Make E.CannotOptimizeAndDebug
54− (False, True ) -> return Obj.Prod
55− (False, False) -> return Obj.Dev
56− (True , False) -> return Obj.Debug
52+ (False, True ) -> return Output.Prod
53+ (False, False) -> return Output.Dev
54+ (True , False) -> return Output.Debug
5755
5856
5957toReporter :: Maybe ReportType -> IO Progress.Reporter