@@ -15,6 +15,7 @@ import Terminal.Init
1515import Terminal.Run
1616import Terminal.Help
1717import Terminal.Repl
18+ import Terminal.Report exposing (Report)
1819import Compiler.Backend
1920import Compiler.PackageName as PackageName exposing (PackageName)
2021import Compiler.Paths
@@ -293,7 +294,7 @@ update msg model =
293294 |> Task.onError
294295 (\error ->
295296 Terminal.Run.prettifyError error
296- |> Terminal.Help.prettyPrint { useColor = model.useColor }
297+ |> Terminal.Report.toString (Terminal.Report.Terminal { useColor = model.useColor })
297298 |> Stream.Log.line model.stderr
298299 |> Task.map (\_ -> Task.execute <| Node.exitWithCode 1)
299300 )
@@ -351,6 +352,10 @@ parseUserArgs model compilerPath =
351352 endWithErrorString stringErr =
352353 Stream.Log.string model.stderr stringErr
353354 |> Task.map (\_ -> Task.execute <| Node.exitWithCode 1)
355+
356+ endWithErrorReport outputType report =
357+ Terminal.Report.toString outputType report
358+ |> endWithErrorString
354359 in
355360 when CLI.Parser.run model.args CliParser.parser is
356361 CLI.Parser.UnknownCommand commandName ->
@@ -410,7 +415,7 @@ parseUserArgs model compilerPath =
410415 }
411416 |> Task.map (\_ -> Cmd.none)
412417 |> Task.mapError Terminal.Init.prettifyError
413- |> Task.onError endWithError
418+ |> Task.onError (endWithErrorReport (Terminal.Report.Terminal printOpts))
414419 |> Task.perform RunCmd
415420
416421 CliParser.Repl flags ->
@@ -467,7 +472,7 @@ parseUserArgs model compilerPath =
467472 , onComplete = CompilerRan
468473 }
469474 )
470- |> Task.onError endWithError
475+ |> Task.onError (endWithErrorReport (Terminal.Report.Terminal printOpts))
471476 |> Task.perform RunCmd
472477
473478 CliParser.Make flags ->
@@ -482,6 +487,14 @@ parseUserArgs model compilerPath =
482487
483488 _ ->
484489 Task.succeed model.stdout
490+
491+ reportType =
492+ when flags.report is
493+ Just {} ->
494+ Terminal.Report.Json
495+
496+ Nothing ->
497+ Terminal.Report.Terminal printOpts
485498 in
486499 determineOutputStreamForResolve
487500 |> Task.andThen (\output -> resolveProject { model | stdout = output })
@@ -508,7 +521,7 @@ parseUserArgs model compilerPath =
508521 , onComplete = CompilerRan
509522 }
510523 )
511- |> Task.onError endWithError
524+ |> Task.onError (endWithErrorReport reportType)
512525 |> Task.perform RunCmd
513526
514527 CliParser.Run opts ->
@@ -543,7 +556,7 @@ parseUserArgs model compilerPath =
543556 )
544557 }
545558 |> Task.mapError Terminal.Run.prettifyError
546- |> Task.onError endWithError
559+ |> Task.onError (endWithErrorReport (Terminal.Report.Terminal printOpts))
547560 |> Task.perform RunCmd
548561
549562 CliParser.Docs flags ->
@@ -558,6 +571,14 @@ parseUserArgs model compilerPath =
558571
559572 _ ->
560573 Task.succeed model.stdout
574+
575+ reportType =
576+ when flags.report is
577+ Just {} ->
578+ Terminal.Report.Json
579+
580+ Nothing ->
581+ Terminal.Report.Terminal printOpts
561582 in
562583 determineOutputStreamForResolve
563584 |> Task.andThen (\output -> resolveProject { model | stdout = output })
@@ -581,18 +602,18 @@ parseUserArgs model compilerPath =
581602 , onComplete = CompilerRan
582603 }
583604 )
584- |> Task.onError endWithError
605+ |> Task.onError (endWithErrorReport reportType)
585606 |> Task.perform RunCmd
586607
587608 CliParser.PackageInstall Nothing ->
588609 resolveProject model
589610 |> Task.andThen
590611 (\res ->
591612 Terminal.PackageInstall.cleanPackageDirectory model.fsPermission res
592- |> Task.mapError (\_ -> PP .empty)
613+ |> Task.mapError (\_ -> Terminal.Report .empty)
593614 )
594615 |> Task.map (\_ -> Cmd.none)
595- |> Task.onError endWithError
616+ |> Task.onError (endWithErrorReport (Terminal.Report.Terminal printOpts))
596617 |> Task.perform RunCmd
597618
598619 CliParser.PackageInstall (Just requestedPackage) ->
@@ -615,7 +636,7 @@ parseUserArgs model compilerPath =
615636 |> Task.mapError Terminal.PackageInstall.prettifyAddPackageError
616637 )
617638 |> Task.map (\_ -> Cmd.none)
618- |> Task.onError endWithError
639+ |> Task.onError (endWithErrorReport (Terminal.Report.Terminal printOpts))
619640 |> Task.perform RunCmd
620641
621642 CliParser.PackageUninstall packageName ->
@@ -638,11 +659,11 @@ parseUserArgs model compilerPath =
638659 |> Task.andThen
639660 (\res ->
640661 Terminal.PackageInstall.cleanPackageDirectory model.fsPermission res
641- |> Task.mapError (\_ -> PP .empty)
662+ |> Task.mapError (\_ -> Terminal.Report .empty)
642663 )
643664 )
644665 |> Task.map (\_ -> Cmd.none)
645- |> Task.onError endWithError
666+ |> Task.onError (endWithErrorReport (Terminal.Report.Terminal printOpts))
646667 |> Task.perform RunCmd
647668
648669 CliParser.PackageOutdated ->
@@ -662,7 +683,7 @@ parseUserArgs model compilerPath =
662683 |> Task.mapError Terminal.PackageOutdated.prettifyError
663684 )
664685 |> Task.map (\_ -> Cmd.none)
665- |> Task.onError endWithError
686+ |> Task.onError (endWithErrorReport (Terminal.Report.Terminal printOpts))
666687 |> Task.perform RunCmd
667688
668689 CliParser.PackageValidate ->
@@ -695,7 +716,7 @@ parseUserArgs model compilerPath =
695716 , onComplete = CompilerRan
696717 }
697718 )
698- |> Task.onError endWithError
719+ |> Task.onError (endWithErrorReport (Terminal.Report.Terminal printOpts))
699720 |> Task.perform RunCmd
700721
701722 CliParser.PackageBump ->
@@ -728,7 +749,7 @@ parseUserArgs model compilerPath =
728749 , onComplete = CompilerRan
729750 }
730751 )
731- |> Task.onError endWithError
752+ |> Task.onError (endWithErrorReport (Terminal.Report.Terminal printOpts))
732753 |> Task.perform RunCmd
733754
734755 CliParser.PackageDiff args ->
@@ -818,7 +839,7 @@ parseUserArgs model compilerPath =
818839 , onComplete = CompilerRan
819840 }
820841 )
821- |> Task.onError endWithError
842+ |> Task.onError (endWithErrorReport (Terminal.Report.Terminal printOpts))
822843 |> Task.perform RunCmd
823844
824845 CliParser.Paths opts ->
@@ -836,7 +857,7 @@ parseUserArgs model compilerPath =
836857 |> Task.perform RunCmd
837858
838859
839- resolveProject : Model -> Task PP.Document Terminal.PackageInstall.PackageResolution
860+ resolveProject : Model -> Task Report Terminal.PackageInstall.PackageResolution
840861resolveProject model =
841862 Terminal.PackageInstall.readProjectOutline model.fsPermission
842863 |> Task.mapError Terminal.PackageInstall.prettifyProjectOutlineError
@@ -858,7 +879,7 @@ resolveProject model =
858879
859880
860881-- TODO: Move to gren-lang/compiler-node
861- verifyMakeFlags : FileSystem.Permission -> Array ModuleName -> Maybe Compiler.Backend.MakeOutput -> Terminal.PackageInstall.PackageResolution -> Task PP.Document Terminal.PackageInstall.PackageResolution
882+ verifyMakeFlags : FileSystem.Permission -> Array ModuleName -> Maybe Compiler.Backend.MakeOutput -> Terminal.PackageInstall.PackageResolution -> Task Report Terminal.PackageInstall.PackageResolution
862883verifyMakeFlags fsPermission entryPoints maybeOutput resolution =
863884 let
864885 maybeOutputPath =
@@ -908,7 +929,7 @@ verifyMakeFlags fsPermission entryPoints maybeOutput resolution =
908929
909930 else
910931 Task.fail <|
911- Terminal.Help.report
932+ Terminal.Report.create
912933 "CANNOT ACCESS OUTPUT PATH"
913934 (Just path)
914935 (PP.verticalBlock
@@ -928,7 +949,7 @@ verifyMakeFlags fsPermission entryPoints maybeOutput resolution =
928949
929950 Just metadata ->
930951 if metadata.entityType == FileSystem.Directory then
931- Terminal.Help.report
952+ Terminal.Report.create
932953 "OUTPUT PATH IS A DIRECTORY"
933954 (Just path)
934955 (PP.verticalBlock
@@ -955,7 +976,7 @@ verifyMakeFlags fsPermission entryPoints maybeOutput resolution =
955976
956977 Just { value = moduleName } ->
957978 Task.fail <|
958- Terminal.Help.report
979+ Terminal.Report.create
959980 "MODULE DOES NOT EXIST"
960981 Nothing
961982 (PP.verticalBlock
0 commit comments