on master help sign in
compile reactor/src/ on build again
commit5ecb07012982fc8de6ef2a8257f768df23392cfa authorEvan Czaplicki <evancz@users.noreply.github.com> dateTue 18 Jun 2019, 16:34 (7 years ago) parent5222440
2 files changed+45−30
terminal/src/Develop/StaticFiles.hs+1−1 terminal/src/Develop/StaticFiles/Build.hs+44−29
terminal/src/Develop/StaticFiles.hs+1−1
@@ -89,7 +89,7 @@ sansFontPath =
8989
9090elm :: BS.ByteString
9191elm =
92− $(bsToExp =<< runIO Build.compile)
92+ $(bsToExp =<< runIO Build.buildReactorFrontEnd)
9393
9494
9595
terminal/src/Develop/StaticFiles/Build.hs+44−29
@@ -1,19 +1,24 @@
11{-# LANGUAGE OverloadedStrings #-}
22module Develop.StaticFiles.Build
33 ( readAsset
4− , compile
4+ , buildReactorFrontEnd
55 )
66 where
77
88
99import 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
1013import qualified System.Directory as Dir
1114import System.FilePath ((</>))
1215
13−import qualified Elm.Project as Project
14−import qualified Generate.Output as Output
1516import 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
1722
1823
1924
@@ -26,31 +31,41 @@ readAsset path =
2631
2732
2833
29−-- COMPILE
34+-- BUILD REACTOR ELM
3035
3136
32−compile :: IO BS.ByteString
33−compile =
37+buildReactorFrontEnd :: IO BS.ByteString
38+buildReactorFrontEnd =
3439 Dir.withCurrentDirectory "reactor" $
35− do reporter <- Terminal.create
36− Task.run reporter $
37− do summary <- Project.getRoot
38− let jsOutput = Just (Output.JavaScript Nothing tempFileName)
39− Project.compile Output.Prod Output.Client jsOutput summary rootPaths
40−
41− result <- BS.readFile tempFileName
42− seq (BS.length result) (Dir.removeFile tempFileName)
43− return result
44−
45−
46−tempFileName :: FilePath
47−tempFileName =
48− "elm.js"
49−
50−
51−rootPaths :: [FilePath]
52−rootPaths =
53− [ "src" </> "Errors.elm"
54− , "src" </> "Index.elm"
55− , "src" </> "NotFound.elm"
56− ]
40+ do root <- Dir.getCurrentDirectory
41+ runTaskUnsafe $
42+ do details <- Task.eio Exit.ReactorBadDetails $ Details.load Reporting.silent root
43+ artifacts <- Task.eio Exit.ReactorBadBuild $ Build.fromMains Reporting.silent root details mains
44+ javascript <- Task.mapError Exit.ReactorBadGenerate $ Generate.prod root details artifacts
45+ return (LBS.toStrict (B.toLazyByteString javascript))
46+
47+
48+mains :: NE.List FilePath
49+mains =
50+ NE.List
51+ ("src" </> "NotFound.elm")
52+ [ "src" </> "Errors.elm"
53+ , "src" </> "Index.elm"
54+ ]
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"