Skip to content

Commit f1f528d

Browse files
ElvishJerriccohamishmack
authored andcommitted
List cabal file revisions
1 parent dc4a75b commit f1f528d

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

src/Distribution/Hackage/DB/Parsed.hs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import Control.Monad.Catch
2020
import Data.ByteString as BSS
2121
import Data.ByteString.Lazy as BSL
2222
import Data.ByteString.UTF8 as BSS
23+
import Data.List.NonEmpty
2324
import Data.Map as Map
2425
import Data.Maybe
2526
import Data.Time.Clock
@@ -34,7 +35,7 @@ type HackageDB = Map PackageName PackageData
3435

3536
type PackageData = Map Version VersionData
3637

37-
data VersionData = VersionData { cabalFile :: !GenericPackageDescription
38+
data VersionData = VersionData { cabalFileRevisions :: NonEmpty GenericPackageDescription
3839
, tarballHashes :: !(Map String String)
3940
}
4041
deriving (Show, Eq, Generic)
@@ -58,12 +59,12 @@ parsePackageData pn (U.PackageData pv vs') =
5859
| otherwise = parseText "preferred version range" (toString pv)
5960

6061
parseVersionData :: PackageName -> Version -> U.VersionData -> VersionData
61-
parseVersionData pn v (U.VersionData cf m) =
62+
parseVersionData pn v (U.VersionData cfs m) =
6263
mapException (\e -> HackageDBPackageVersion v (e :: SomeException)) $
6364
VersionData gpd (parseMetaData pn v m)
6465
where
6566
gpd = fromMaybe (throw (InvalidCabalFile (show (pn,v)))) $
66-
parseGenericPackageDescriptionMaybe cf
67+
nonEmpty =<< traverse parseGenericPackageDescriptionMaybe cfs
6768

6869
parseMetaData :: PackageName -> Version -> BSS.ByteString -> Map String String
6970
parseMetaData pn v buf | BSS.null buf = Map.empty

src/Distribution/Hackage/DB/Unparsed.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ data PackageData = PackageData { preferredVersions :: !ByteString
3737
}
3838
deriving (Show, Eq, Generic)
3939

40-
data VersionData = VersionData { cabalFile :: !ByteString
41-
, metaFile :: !ByteString
40+
data VersionData = VersionData { cabalFileRevisions :: ![ByteString]
41+
, metaFile :: !ByteString
4242
}
4343
deriving (Show, Eq, Generic)
4444

@@ -56,8 +56,8 @@ builder = Builder
5656

5757
, insertCabalFile = \pn v _ buf -> let f Nothing = PackageData mempty (Map.singleton v new)
5858
f (Just pd) = pd { versions = Map.insertWith g v new (versions pd) }
59-
new = VersionData (toStrict buf) mempty
60-
g _ old = old { cabalFile = cabalFile new }
59+
new = VersionData [toStrict buf] mempty
60+
g _ old = old { cabalFileRevisions = cabalFileRevisions new }
6161
in pure . Map.alter (Just . f) pn
6262

6363
, insertMetaFile = \pn v _ buf -> let f Nothing = PackageData mempty (Map.singleton v new)

0 commit comments

Comments
 (0)