From 70e871234a8a32198989f6d13c12df6a8e84d97c Mon Sep 17 00:00:00 2001 From: Evan Czaplicki Date: Mon, 3 Jun 2019 16:36:52 -0700 Subject: [PATCH] start using D.fromVersion and stuff like that --- builder/src/Reporting/Exit.hs | 104 +++++++++++++++++++++++++--------- 1 file changed, 78 insertions(+), 26 deletions(-) diff --git a/builder/src/Reporting/Exit.hs b/builder/src/Reporting/Exit.hs index aa58e0dc..4160ae1c 100644 --- a/builder/src/Reporting/Exit.hs +++ b/builder/src/Reporting/Exit.hs @@ -43,7 +43,10 @@ import qualified Elm.ModuleName as ModuleName import qualified Elm.Package as Pkg import qualified Elm.Version as V import qualified Http +import qualified Json.Decode as Decode import qualified Json.Encode as Encode +import qualified Json.String as Json +import Parse.Primitives (Row, Col) import Reporting.Doc ((<>)) import qualified Reporting.Doc as D import qualified Reporting.Error.Import as Import @@ -171,16 +174,16 @@ diffToReport diff = Help.report "UNKNOWN PACKAGE" Nothing ( "I cannot find a package called:" ) - [ D.indent 4 $ D.red $ D.fromUtf8 $ Pkg.toString pkg + [ D.indent 4 $ D.red $ D.fromChars $ Pkg.toChars pkg , "Maybe you want one of these instead?" - , D.indent 4 $ D.dullyellow $ D.vcat $ map (D.fromUtf8 . Pkg.toString) suggestions + , D.indent 4 $ D.dullyellow $ D.vcat $ map (D.fromChars . Pkg.toChars) suggestions , "But check to see all possibilities!" ] DiffUnknownVersion _pkg vsn realVersions -> Help.docReport "UNKNOWN VERSION" Nothing ( D.fillSep $ - [ "Version", D.red (D.fromUtf8 (V.toString vsn)) + [ "Version", D.red (D.fromVersion vsn) , "has", "never", "been", "published,", "so", "I" , "cannot", "diff", "against", "it." ] @@ -189,7 +192,7 @@ diffToReport diff = , D.indent 4 $ D.dullyellow $ D.vcat $ let sameMajor v1 v2 = V._major v1 == V._major v2 - mkRow vsns = D.hsep $ map (D.fromUtf8 . V.toString) vsns + mkRow vsns = D.hsep $ map D.fromVersion vsns in map mkRow $ List.groupBy sameMajor (List.sort realVersions) , "Want one of those instead?" @@ -311,19 +314,19 @@ data Solver data Outline - = OutlineHasBadStructure (Json.Error OutlineProblem) + = OutlineHasBadStructure (Decode.Error OutlineProblem) | OutlineHasBadSrcDirs FilePath [FilePath] data OutlineProblem - = OP_BadType Utf8.String - | OP_BadPkgName Pkg.BadName - | OP_BadVersion Utf8.String + = OP_BadType + | OP_BadPkgName Row Col + | OP_BadVersion Row Col | OP_BadConstraint C.Error - | OP_BadModuleName Utf8.String - | OP_BadModuleHeaderTooLong Utf8.String - | OP_BadDependencyName Utf8.String - | OP_BadLicense Utf8.String [Utf8.String] + | OP_BadModuleName Row Col + | OP_BadModuleHeaderTooLong + | OP_BadDependencyName Row Col + | OP_BadLicense Json.String [Json.String] | OP_BadSummaryTooLong | OP_NoSrcDirs @@ -426,7 +429,7 @@ _toReport exit = Help.docReport "CANNOT BUMP" (Just "elm.json") ( D.fillSep ["Your","elm.json","says","I","should","bump","relative","to","version" - ,D.red (D.fromUtf8 (V.toString vsn)) <> "," + ,D.red (D.fromVersion vsn) <> "," ,"but","I","cannot","find","that","version","on","." ,"That","means","there","is","no","API","for","me","to","diff","against","and" ,"figure","out","if","these","are","MAJOR,","MINOR,","or","PATCH","changes." @@ -435,7 +438,7 @@ _toReport exit = [ D.fillSep $ ["Try","bumping","again","after","changing","the",D.dullyellow "\"version\"","in","elm.json"] ++ if length versions == 1 then ["to:"] else ["to","one","of","these:"] - , D.vcat $ map (D.green . D.fromUtf8 . V.toString) versions + , D.vcat $ map (D.green . D.fromVersion) versions ] BumpMustHaveLatestRegistry problem -> @@ -456,7 +459,7 @@ _toReport exit = Help.docReport "INVALID VERSION" Nothing ( D.fillSep ["I","cannot","publish" - ,D.red (D.fromUtf8 (V.toString vsn)) + ,D.red (D.fromVersion vsn) ,"as","the","initial","version." ] ) @@ -470,7 +473,7 @@ _toReport exit = Help.docReport "ALREADY PUBLISHED" Nothing ( D.vcat [ D.fillSep - [ "Version", D.green (D.fromUtf8 (V.toString vsn)) + [ "Version", D.green (D.fromVersion vsn) , "has", "already", "been", "published.", "You", "cannot" , "publish", "it", "again!" ] @@ -487,14 +490,14 @@ _toReport exit = Help.docReport "INVALID VERSION" (Just "elm.json") ( D.fillSep $ ["Your","elm.json","says","the","next","version","should","be" - ,D.red (D.fromUtf8 (V.toString statedVersion)) <> "," + ,D.red (D.fromVersion statedVersion) <> "," ,"but","that","is","not","valid","based","on","the","previously" ,"published","versions." ] ) [ D.fillSep $ ["Change","the","version","back","to" - ,D.green (D.fromUtf8 (V.toString latestVersion)) + ,D.green (D.fromVersion latestVersion) ,"which","is","the","most","recently","published","version." ,"From","there,","have","Elm","bump","the","version","by","running:" ] @@ -509,7 +512,7 @@ _toReport exit = ( D.fillSep $ ["Your","elm.json","says","the","next","version","should","be" - ,D.red (D.fromUtf8 (V.toString new)) <> "," + ,D.red (D.fromVersion new) <> "," ,"indicating","a",D.fromChars (M.toChars magnitude) ,"change","to","the","public","API." ,"This","does","not","match","the","API","diff","given","by:" @@ -522,7 +525,7 @@ _toReport exit = ["This","command","says","this","is","a" ,D.fromChars (M.toChars realMagnitude) ,"change,","so","the","next","version","should","be" - ,D.green (D.fromUtf8 (V.toString realNew)) <> "." + ,D.green (D.fromVersion realNew) <> "." ,"Double","check","everything","to","make","sure","you" ,"are","publishing","what","you","want!" ] @@ -678,10 +681,10 @@ detailsToReport details = DetailsBadElmInPkg constraint -> Help.report "ELM VERSION MISMATCH" (Just "elm.json") "Your elm.json says this package needs a version of Elm in this range:" - [ D.indent 4 $ D.dullyellow $ D.fromUtf8 $ C.toString constraint + [ D.indent 4 $ D.dullyellow $ D.fromChars $ C.toChars constraint , D.fillSep [ "But", "you", "are", "using", "Elm" - , D.red (D.fromUtf8 (V.toString V.compiler)) + , D.red (D.fromVersion V.compiler) , "right", "now." ] ] @@ -691,9 +694,9 @@ detailsToReport details = "Your elm.json says this application needs a different version of Elm." [ D.fillSep [ "It", "requires" - , D.green (D.fromUtf8 (V.toString version)) <> "," + , D.green (D.fromVersion version) <> "," , "but", "you", "are", "using" - , D.red (D.fromUtf8 (V.toString V.compiler)) + , D.red (D.fromVersion V.compiler) , "right", "now." ] ] @@ -701,8 +704,8 @@ detailsToReport details = DetailsHandEditedDependencies -> error "TODO DetailsHandEditedDependencies" - DetailsBadOutline problem -> - error "TODO DetailsBadOutline" problem + DetailsBadOutline outlineProblem -> + toOutlineReport outlineProblem DetailsCannotGetRegistry problem -> error "TODO DetailsCannotGetRegistry" problem @@ -826,3 +829,52 @@ makeToReport make = MakeCannotLoadArtifacts -> error "TODO MakeCannotLoadArtifacts" + + + +-- OUTLINE + + +toOutlineReport :: Outline -> Help.Report +toOutlineReport problem = + case problem of + OutlineHasBadSrcDirs dir dirs -> + error "TODO OutlineHasBadSrcDirs" dir dirs + + OutlineHasBadStructure decodeError -> + error "TODO OutlineHasBadStructure" decodeError toOutlineProblemReport + + +toOutlineProblemReport :: OutlineProblem -> Help.Report +toOutlineProblemReport problem = + case problem of + OP_BadType -> + error "TODO OP_BadType" + + OP_BadPkgName row col -> + error "TODO OP_BadPkgName" row col + + OP_BadVersion row col -> + error "TODO OP_BadVersion" row col + + OP_BadConstraint constraintError -> + error "TODO OP_BadConstraint" constraintError + + OP_BadModuleName row col -> + error "TODO OP_BadModuleName" row col + + OP_BadModuleHeaderTooLong -> + error "TODO OP_BadModuleHeaderTooLong" + + OP_BadDependencyName row col -> + error "TODO OP_BadDependencyName" + + OP_BadLicense badLicense suggestions -> + error "TODO OP_BadLicense" badLicense suggestions + + OP_BadSummaryTooLong -> + error "TODO OP_BadSummaryTooLong" + + OP_NoSrcDirs -> + error "TODO OP_NoSrcDirs" +