@@ -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