@@ -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
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 ((</>))
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
@@ -26,31 +31,41 @@ readAsset path =
29−-- COMPILE
34+-- BUILD REACTOR ELM
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+
46−tempFileName :: FilePath
51−rootPaths :: [FilePath]
48+mains :: NE.List FilePath
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+ ]
57+runTaskUnsafe :: Task.Task Exit.Reactor a -> IO a
59+ do result <- Task.run task
65+ do Exit.toStderr (Exit.reactorToReport exit)
67+ "\n--------------------------------------------------------\
68+ \\nError in Develop.StaticFiles.Build.buildReactorFrontEnd\
69+ \\nCompile with `elm make` directly to figure it out faster\
70+ \\n--------------------------------------------------------\