Better parse error messages #252

This commit is contained in:
Michael Snoyman 2018-03-12 11:27:06 +02:00
parent f732899303
commit 800b8907c8
No known key found for this signature in database
GPG Key ID: A048E8C057E86876

View File

@ -65,7 +65,7 @@ import Stackage.Types
import Stackage.Metadata
import Stackage.PackageIndex.Conduit
import Web.PathPieces (fromPathPiece)
import Data.Yaml (decodeFileEither)
import Data.Yaml (decodeFileEither, decodeEither)
import Database.Persist
import Database.Persist.Postgresql
import Database.Persist.TH
@ -316,7 +316,13 @@ getPackageId x = do
addPackage :: Tar.Entry -> SqlPersistT (ResourceT IO) ()
addPackage e =
case ("packages/" `isPrefixOf` fp && takeExtension fp == ".yaml", Tar.entryContent e) of
(True, Tar.NormalFile lbs _) | Just pi <- decode $ toStrict lbs -> do
(True, Tar.NormalFile lbs _) ->
case decodeEither $ toStrict lbs of
Left err -> putStrLn $ "ERROR: Could not parse " ++ tshow fp ++ ": " ++ tshow err
Right pi -> onParse pi
_ -> return ()
where
onParse pi = do
let p = Package
{ packageName = pack base
, packageLatest = display $ piLatest pi
@ -341,8 +347,7 @@ addPackage e =
, depUses = display uses
, depRange = display range
}
_ -> return ()
where
fp = Tar.entryPath e
base = takeBaseName fp