on master help sign in
Begin adding back --report=json

Trying to make it a more consistent format this time though.

commita24e86a874dcbac3a503e81f4c7f5073bc133752 authorEvan Czaplicki <evancz@users.noreply.github.com> dateTue 27 Mar 2018, 18:03 (9 years ago) parentf9540d6
2 files changed+69−14
builder/src/Reporting/Progress/Json.hs+44 ui/terminal/src/Make.hs+25−14
builder/src/Reporting/Progress/Json.hsnew file+44
@@ -0,0 +1,44 @@
1+module Reporting.Progress.Json
2+ ( create
3+ )
4+ where
5+
6+
7+import Control.Concurrent (forkIO)
8+import Control.Concurrent.Chan (Chan, newChan, readChan)
9+import Control.Concurrent.MVar (newEmptyMVar, putMVar)
10+
11+import qualified Reporting.Exit as Exit
12+import qualified Reporting.Progress as Progress
13+
14+
15+
16+-- CREATE
17+
18+
19+create :: IO Progress.Reporter
20+create =
21+ do chan <- newChan
22+ mvar <- newEmptyMVar
23+ _ <- forkIO (loop chan >>= putMVar mvar)
24+ return (Progress.makeReporter chan mvar)
25+
26+
27+
28+-- LOOP
29+
30+
31+loop :: Chan Progress.Msg -> IO ()
32+loop chan =
33+ do msg <- readChan chan
34+ case msg of
35+ Progress.Progress _ ->
36+ loop chan
37+
38+ Progress.End maybeExit ->
39+ case maybeExit of
40+ Just exit ->
41+ Exit.toJson exit
42+
43+ Nothing ->
44+ return ()
ui/terminal/src/Make.hs+25−14
@@ -1,5 +1,6 @@
11module Make
22 ( Flags(..)
3+ , ReportType(..)
34 , run
45 )
56 where
@@ -11,6 +12,7 @@ import qualified Elm.Compiler.Objects as Obj
1112import qualified Elm.Project as Project
1213import qualified Generate.Output as Output
1314import qualified Reporting.Task as Task
15+import qualified Reporting.Progress.Json as Json
1416import qualified Reporting.Progress.Terminal as Terminal
1517
1618
@@ -20,25 +22,34 @@ import qualified Reporting.Progress.Terminal as Terminal
2022
2123data Flags =
2224 Flags
23− { _warn :: Bool
24− , _debug :: Bool
25+ { _debug :: Bool
2526 , _output :: Maybe Output.Output
27+ , _report :: Maybe ReportType
2628 }
2729
2830
29−run :: [FilePath] -> Flags -> IO ()
30−run paths flags =
31− do reporter <- Terminal.create
32− void $ Task.run reporter $
33− do summary <- Project.getRoot
34− Project.compile (toOptions flags) summary paths
31+data ReportType
32+ = Json
3533
3634
37−-- TODO figure out --warn flag
38−toOptions :: Flags -> Output.Options
39−toOptions (Flags warn debug output) =
35+run :: [FilePath] -> Flags -> IO ()
36+run paths (Flags debug output report) =
4037 let
41− mode = if debug then Obj.Debug else Obj.Prod
42− target = if False then Obj.Server else Obj.Client
38+ mode =
39+ if debug then Obj.Debug else Obj.Prod
40+
41+ outputOptions =
42+ Output.Options mode Obj.Client output
43+
44+ makeReporter =
45+ case report of
46+ Nothing ->
47+ Terminal.create
48+
49+ Just Json ->
50+ Json.create
4351 in
44− Output.Options warn mode target output
52+ do reporter <- makeReporter
53+ void $ Task.run reporter $
54+ do summary <- Project.getRoot
55+ Project.compile outputOptions summary paths