Skip to content

Commit 3ef44ef

Browse files
committed
Prettify diff errors.
1 parent 5c6aa51 commit 3ef44ef

File tree

3 files changed

+113
-11
lines changed

3 files changed

+113
-11
lines changed

src/Main.gren

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,7 @@ parseUserArgs model compilerPath =
690690
, stdin = model.stdin
691691
}
692692
Nothing
693-
|> Task.mapError Debug.toString
693+
|> Task.mapError Terminal.PackageDiff.prettifyLocalError
694694

695695
CliParser.DiffVersion version ->
696696
Terminal.PackageDiff.runLocal
@@ -702,17 +702,19 @@ parseUserArgs model compilerPath =
702702
, stdin = model.stdin
703703
}
704704
(Just version)
705-
|> Task.mapError Debug.toString
705+
|> Task.mapError Terminal.PackageDiff.prettifyLocalError
706706

707707
CliParser.DiffRange { lower, upper } ->
708708
Terminal.PackageInstall.readProjectOutline model.fsPermission
709-
|> Task.mapError Debug.toString
709+
|> Task.mapError Terminal.PackageInstall.prettifyProjectOutlineError
710710
|> Task.andThen
711711
(\{ outline } ->
712712
when outline is
713713
Outline.App _ ->
714714
-- TODO
715-
Task.fail "Only supported on packages"
715+
Terminal.PackageDiff.LocalCannotDiffApplication
716+
|> Terminal.PackageDiff.prettifyLocalError
717+
|> Task.fail
716718

717719
Outline.Pkg pkgOutline ->
718720
Terminal.PackageDiff.runGlobal
@@ -726,7 +728,7 @@ parseUserArgs model compilerPath =
726728
pkgOutline.name
727729
lower
728730
upper
729-
|> Task.mapError Debug.toString
731+
|> Task.mapError Terminal.PackageDiff.prettifyGlobalError
730732
)
731733

732734
CliParser.DiffGlobal { package, lower, upper } ->
@@ -741,7 +743,7 @@ parseUserArgs model compilerPath =
741743
package
742744
lower
743745
upper
744-
|> Task.mapError Debug.toString
746+
|> Task.mapError Terminal.PackageDiff.prettifyGlobalError
745747
in
746748
diffTask
747749
|> Task.map
@@ -759,7 +761,8 @@ parseUserArgs model compilerPath =
759761
)
760762
|> Task.onError
761763
(\err ->
762-
Stream.Log.line model.stdout err
764+
Terminal.Help.prettyPrint printOpts err
765+
|> Stream.Log.string model.stderr
763766
|> Task.execute
764767
|> Task.succeed
765768
)

src/Terminal/PackageDiff.gren

Lines changed: 102 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
module Terminal.PackageDiff exposing
22
( Config
33
, Options
4-
, Error (..)
4+
, LocalError (..)
55
, Result
66
, runLocal
7+
, prettifyLocalError
8+
, GlobalError (..)
79
, runGlobal
10+
, prettifyGlobalError
811
)
912

1013

@@ -28,6 +31,8 @@ import Json.Encode as Json
2831
import Json.Decode as Decode exposing (Decoder)
2932
import Stream.Extra
3033
import Terminal.PackageInstall
34+
import Terminal.Help as Help
35+
import CLI.PrettyPrinter as PP
3136

3237

3338
type alias Config =
@@ -46,7 +51,7 @@ type alias Options =
4651
}
4752

4853

49-
type Error
54+
type LocalError
5055
= LocalReadProjectOutlineError Terminal.PackageInstall.ReadProjectOutlineError
5156
| LocalCannotDiffApplication
5257
| LocalFetchVersionsFailed Git.Error
@@ -69,7 +74,7 @@ type alias Result =
6974
}
7075

7176

72-
runLocal : Config -> Maybe SemanticVersion -> Task Error Result
77+
runLocal : Config -> Maybe SemanticVersion -> Task LocalError Result
7378
runLocal config maybeVersion =
7479
Terminal.PackageInstall.readProjectOutline config.fsPermission
7580
|> Task.mapError LocalReadProjectOutlineError
@@ -151,6 +156,32 @@ runLocal config maybeVersion =
151156
)
152157

153158

159+
prettifyLocalError : LocalError -> PP.Document
160+
prettifyLocalError error =
161+
when error is
162+
LocalReadProjectOutlineError outlineError ->
163+
Terminal.PackageInstall.prettifyProjectOutlineError outlineError
164+
165+
LocalCannotDiffApplication ->
166+
Help.report
167+
"CANNOT DIFF APPLICATIONS"
168+
Nothing
169+
( PP.words "This project is an application, but I can only diff packages!" )
170+
171+
LocalFetchVersionsFailed gitError ->
172+
Git.report
173+
"FAILED TO FETCH PACKAGE VERSIONS"
174+
"I was attempting to fetch the versions for a package"
175+
gitError
176+
177+
LocalInstallError installError ->
178+
Terminal.PackageInstall.prettifyError installError
179+
180+
LocalHiddenProjectError hiddenError ->
181+
prettifyHiddenProjectError hiddenError
182+
183+
184+
154185
type InstallHiddenProjectError
155186
= HiddenProjectFileSystemError FileSystem.Error
156187
| HiddenProjectGitCloneError Git.Error
@@ -209,13 +240,71 @@ installHiddenProject config projectPath packageName packageVersion =
209240
)
210241

211242

243+
prettifyHiddenProjectError : InstallHiddenProjectError -> PP.Document
244+
prettifyHiddenProjectError error =
245+
when error is
246+
HiddenProjectFileSystemError fsErr ->
247+
Help.report
248+
"FAILED TO INSTALL PACKAGE"
249+
Nothing
250+
(PP.verticalBlock
251+
[ PP.words "An error occured while I was installing the requested package."
252+
, PP.empty
253+
, PP.words "The error is:"
254+
, PP.empty
255+
, PP.words (FileSystem.errorToString fsErr)
256+
|> PP.indent
257+
]
258+
)
259+
260+
HiddenProjectGitCloneError gitError ->
261+
Git.report
262+
"FAILED TO FETCH PACKAGE"
263+
"I was attempting to fetch a package from GitHub"
264+
gitError
265+
266+
HiddenProjectReadOutlineError fsErr ->
267+
Help.report
268+
"FAILED TO READ OUTLINE"
269+
Nothing
270+
(PP.verticalBlock
271+
[ PP.words "An error occured when I attempted to read the gren.json of the requested package."
272+
, PP.empty
273+
, PP.words "The error is:"
274+
, PP.empty
275+
, PP.words (FileSystem.errorToString fsErr)
276+
|> PP.indent
277+
]
278+
)
279+
280+
HiddenProjectOutlineDecodeError jsonError ->
281+
Help.report
282+
"FAILED TO READ OUTLINE"
283+
Nothing
284+
(PP.verticalBlock
285+
[ PP.words "An error occured when I attempted to read the gren.json of the requested package."
286+
, PP.empty
287+
, PP.words "The error is:"
288+
, PP.empty
289+
, PP.words (Decode.errorToString jsonError)
290+
|> PP.indent
291+
]
292+
)
293+
294+
HiddenProjectInstallError installError ->
295+
Terminal.PackageInstall.prettifyError installError
296+
297+
298+
212299
type GlobalError
213300
= GlobalReadProjectOutlineError Terminal.PackageInstall.ReadProjectOutlineError
214301
| GlobalHiddenProjectError InstallHiddenProjectError
215302

216303

217304
runGlobal : Config -> PackageName -> SemanticVersion -> SemanticVersion -> Task GlobalError Result
218305
runGlobal config packageName lowerVersion upperVersion =
306+
-- TODO: Store in global cache
307+
-- TODO: Perform application check here when packageName isn't specified
219308
Terminal.PackageInstall.readProjectOutline config.fsPermission
220309
|> Task.mapError GlobalReadProjectOutlineError
221310
|> Task.andThen
@@ -239,3 +328,13 @@ runGlobal config packageName lowerVersion upperVersion =
239328
(installHiddenProject config projectPath packageName upperVersion)
240329
|> Task.mapError GlobalHiddenProjectError
241330
)
331+
332+
333+
prettifyGlobalError : GlobalError -> PP.Document
334+
prettifyGlobalError error =
335+
when error is
336+
GlobalReadProjectOutlineError outlineError ->
337+
Terminal.PackageInstall.prettifyProjectOutlineError outlineError
338+
339+
GlobalHiddenProjectError hiddenError ->
340+
prettifyHiddenProjectError hiddenError

src/Terminal/PackageInstall.gren

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -725,7 +725,7 @@ prettifyAddPackageError error =
725725
"FAILED TO UPDATE OUTLINE"
726726
Nothing
727727
(PP.verticalBlock
728-
[ PP.words "An error occured while I updating the gren.json file."
728+
[ PP.words "An error occured while I was updating the gren.json file."
729729
, PP.empty
730730
, PP.words "The error is:"
731731
, PP.empty

0 commit comments

Comments
 (0)