on master help sign in
More informative error messages
commite97ac30568e3753d97b4dabb5e44bd360ee62bad authorMichael Snoyman <michael@snoyman.com> dateSun 7 Dec 2014, 13:04 (12 years ago) parentb66961d
2 files changed+34−8
Stackage2/CheckBuildPlan.hs+33−8 test/Stackage2/BuildPlanSpec.hs+1
Stackage2/CheckBuildPlan.hs+33−8
@@ -37,10 +37,36 @@ checkDeps allPackages (user, pb) =
3737 (dep, Just version)
3838 errMap
3939 where
40− errMap = singletonMap (user, pbVersion pb) range
40+ errMap = singletonMap pu range
41+ pu = PkgUser
42+ { puName = user
43+ , puVersion = pbVersion pb
44+ , puMaintainer = pbMaintainer pb
45+ , puGithubPings = pbGithubPings pb
46+ }
47+
48+data PkgUser = PkgUser
49+ { puName :: PackageName
50+ , puVersion :: Version
51+ , puMaintainer :: Maybe Maintainer
52+ , puGithubPings :: Set Text
53+ }
54+ deriving (Eq, Ord)
55+
56+pkgUserShow1 :: PkgUser -> String
57+pkgUserShow1 PkgUser {..} = concat
58+ [ display puName
59+ , "-"
60+ , display puVersion
61+ ]
62+
63+pkgUserShow2 :: PkgUser -> String
64+pkgUserShow2 PkgUser {..} = unwords
65+ $ (maybe "No maintainer" (unpack . unMaintainer) puMaintainer ++ ".")
66+ : map (("@" ++) . unpack) (setToList puGithubPings)
4167
4268newtype BadBuildPlan =
43− BadBuildPlan (Map (PackageName, Maybe Version) (Map (PackageName, Version) VersionRange)) -- FIXME add maintainer and Github ping info
69+ BadBuildPlan (Map (PackageName, Maybe Version) (Map PkgUser VersionRange))
4470 deriving Typeable
4571instance Exception BadBuildPlan
4672instance Show BadBuildPlan where
@@ -60,15 +86,14 @@ instance Show BadBuildPlan where
6086 , " depended on by:"
6187 ]
6288
63− showUser :: ((PackageName, Version), VersionRange) -> String
64− showUser ((user, version), range) = concat
89+ showUser :: (PkgUser, VersionRange) -> String
90+ showUser (pu, range) = concat
6591 [ "- "
66− , display user
67− , "-"
68− , display version
92+ , pkgUserShow1 pu
6993 , " ("
7094 , display range
71− , ")"
95+ , "). "
96+ , pkgUserShow2 pu
7297 ]
7398
7499instance Monoid BadBuildPlan where
test/Stackage2/BuildPlanSpec.hs+1
@@ -12,4 +12,5 @@ spec = it "works" $ do
1212 bp <- newBuildPlan
1313 let bs = Y.encode bp
1414 mbp' = Y.decode bs
15+ Y.encodeFile "myplan.yaml" bp
1516 mbp' `shouldBe` Just (() <$ bp)