@@ -20,6 +20,7 @@ import Control.Monad.Catch
20
20
import Data.ByteString as BSS
21
21
import Data.ByteString.Lazy as BSL
22
22
import Data.ByteString.UTF8 as BSS
23
+ import Data.List.NonEmpty
23
24
import Data.Map as Map
24
25
import Data.Maybe
25
26
import Data.Time.Clock
@@ -34,7 +35,7 @@ type HackageDB = Map PackageName PackageData
34
35
35
36
type PackageData = Map Version VersionData
36
37
37
- data VersionData = VersionData { cabalFile :: ! GenericPackageDescription
38
+ data VersionData = VersionData { cabalFileRevisions :: NonEmpty GenericPackageDescription
38
39
, tarballHashes :: ! (Map String String )
39
40
}
40
41
deriving (Show , Eq , Generic )
@@ -58,12 +59,12 @@ parsePackageData pn (U.PackageData pv vs') =
58
59
| otherwise = parseText " preferred version range" (toString pv)
59
60
60
61
parseVersionData :: PackageName -> Version -> U. VersionData -> VersionData
61
- parseVersionData pn v (U. VersionData cf m) =
62
+ parseVersionData pn v (U. VersionData cfs m) =
62
63
mapException (\ e -> HackageDBPackageVersion v (e :: SomeException )) $
63
64
VersionData gpd (parseMetaData pn v m)
64
65
where
65
66
gpd = fromMaybe (throw (InvalidCabalFile (show (pn,v)))) $
66
- parseGenericPackageDescriptionMaybe cf
67
+ nonEmpty =<< traverse parseGenericPackageDescriptionMaybe cfs
67
68
68
69
parseMetaData :: PackageName -> Version -> BSS. ByteString -> Map String String
69
70
parseMetaData pn v buf | BSS. null buf = Map. empty
0 commit comments