on master help sign in
compile reactor/src/ on build again
5ecb070Evan Czaplicki
terminal/src/Develop/StaticFiles.hs+1−1
@@ -89,7 +89,7 @@ sansFontPath =
89
89
90elm :: BS.ByteString
90elm :: BS.ByteString
91elm =
91elm =
92− $(bsToExp =<< runIO Build.compile)
92+ $(bsToExp =<< runIO Build.buildReactorFrontEnd)
93
93
94
94
95
95
terminal/src/Develop/StaticFiles/Build.hs+44−29
@@ -1,19 +1,24 @@
1{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
2module Develop.StaticFiles.Build
2module Develop.StaticFiles.Build
3 ( readAsset
3 ( readAsset
4− , compile
4+ , buildReactorFrontEnd
5 )
5 )
6 where
6 where
7
7
8
8
9import qualified Data.ByteString as BS
9import qualified Data.ByteString as BS
10+import qualified Data.ByteString.Builder as B
11+import qualified Data.ByteString.Lazy as LBS
12+import qualified Data.NonEmptyList as NE
10import qualified System.Directory as Dir
13import qualified System.Directory as Dir
11import System.FilePath ((</>))
14import System.FilePath ((</>))
12
15
13−import qualified Elm.Project as Project
14−import qualified Generate.Output as Output
15import qualified Reporting.Task as Task
16import qualified Reporting.Task as Task
16−import qualified Reporting.Progress.Terminal as Terminal
17+import qualified Build
18+import qualified Elm.Details as Details
19+import qualified Generate
20+import qualified Reporting
21+import qualified Reporting.Exit as Exit
17
22
18
23
19
24
@@ -26,31 +31,41 @@ readAsset path =
26
31
27
32
28
33
29−-- COMPILE
34+-- BUILD REACTOR ELM
30
35
31
36
32−compile :: IO BS.ByteString
37+buildReactorFrontEnd :: IO BS.ByteString
33−compile =
38+buildReactorFrontEnd =
34 Dir.withCurrentDirectory "reactor" $
39 Dir.withCurrentDirectory "reactor" $
35− do reporter <- Terminal.create
40+ do root <- Dir.getCurrentDirectory
36− Task.run reporter $
41+ runTaskUnsafe $
37− do summary <- Project.getRoot
42+ do details <- Task.eio Exit.ReactorBadDetails $ Details.load Reporting.silent root
38− let jsOutput = Just (Output.JavaScript Nothing tempFileName)
43+ artifacts <- Task.eio Exit.ReactorBadBuild $ Build.fromMains Reporting.silent root details mains
39− Project.compile Output.Prod Output.Client jsOutput summary rootPaths
44+ javascript <- Task.mapError Exit.ReactorBadGenerate $ Generate.prod root details artifacts
40−
45+ return (LBS.toStrict (B.toLazyByteString javascript))
41− result <- BS.readFile tempFileName
46+
42− seq (BS.length result) (Dir.removeFile tempFileName)
47+
43− return result
44−
45−
46−tempFileName :: FilePath
47−tempFileName =
48− "elm.js"
49−
50−
51−rootPaths :: [FilePath]
48+mains :: NE.List FilePath
52−rootPaths =
49+mains =
50+ NE.List
51+ ("src" </> "NotFound.elm")
53− [ "src" </> "Errors.elm"
52+ [ "src" </> "Errors.elm"
54− , "src" </> "Index.elm"
53+ , "src" </> "Index.elm"
55− , "src" </> "NotFound.elm"
54+ ]
56− ]
55+
56+
57+runTaskUnsafe :: Task.Task Exit.Reactor a -> IO a
58+runTaskUnsafe task =
59+ do result <- Task.run task
60+ case result of
61+ Right a ->
62+ return a
63+
64+ Left exit ->
65+ do Exit.toStderr (Exit.reactorToReport exit)
66+ error
67+ "\n--------------------------------------------------------\
68+ \\nError in Develop.StaticFiles.Build.buildReactorFrontEnd\
69+ \\nCompile with `elm make` directly to figure it out faster\
70+ \\n--------------------------------------------------------\
71+ \\n"