@@ -21,7 +21,6 @@ import Data.Aeson ((.=))
2121import qualified Data.Aeson.Key as Key
2222import qualified Data.Map.Strict as Map
2323import qualified Data.Text as T
24- import qualified Data.Vector as Vector
2524
2625import Distribution.License (licenseToSPDX )
2726import Distribution.Package (PackageIdentifier (.. ),
@@ -39,7 +38,7 @@ import qualified Distribution.Server.Framework as Framework
3938import Distribution.Server.Features.Core (CoreFeature (.. ),
4039 CoreResource (.. ))
4140import qualified Distribution.Server.Features.PreferredVersions as Preferred
42- import Distribution.Server.Packages.Types (CabalFileText (.. ), pkgMetadataRevisions )
41+ import Distribution.Server.Packages.Types (CabalFileText (.. ), pkgSpecificRevision , pkgLatestRevision , pkgMaxRevision , pkgNumRevisions )
4342
4443import Distribution.Utils.ShortText (fromShortText )
4544import Data.Foldable (toList )
@@ -245,24 +244,23 @@ servePackageBasicDescription resource userFeature preferred dpath = do
245244 guardValidPackageId resource pkgid
246245 pkg <- lookupPackageId resource pkgid
247246
248- let metadataRevs = fst <$> pkgMetadataRevisions pkg
249- uploadInfos = snd <$> pkgMetadataRevisions pkg
250- nMetadata = Vector. length metadataRevs
251- metadataInd = fromMaybe (nMetadata - 1 ) metadataRev
252- descr <- getPackageDescr metadataInd nMetadata metadataRevs uploadInfos
247+ (metadataInd, (cabalFile, uploadInfo)) <- do
248+ case metadataRev of
249+ Nothing ->
250+ pure (pkgMaxRevision pkg, pkgLatestRevision pkg)
251+ Just ix ->
252+ case pkgSpecificRevision pkg ix of
253+ Nothing ->
254+ Framework. errNotFound " Revision not found"
255+ [Framework. MText
256+ $ " There are " <> show (pkgNumRevisions pkg) <> " metadata revisions. Index "
257+ <> show ix <> " is out of bounds." ]
258+ Just rev -> pure (ix, rev)
259+
260+ descr <- getPackageDescr cabalFile uploadInfo metadataInd
253261 return $ Framework. toResponse $ Aeson. toJSON descr
254262
255- getPackageDescr metadataInd nMetadata metadataRevs uploadInfos = do
256- when (metadataInd < 0 || metadataInd >= nMetadata)
257- (Framework. errNotFound " Revision not found"
258- [Framework. MText
259- $ " There are " <> show nMetadata <> " metadata revisions. Index "
260- <> show metadataInd <> " is out of bounds." ]
261- )
262-
263- let cabalFile = metadataRevs Vector. ! metadataInd
264- uploadedAt = fst $ uploadInfos Vector. ! metadataInd
265- uploaderId = snd $ uploadInfos Vector. ! metadataInd
263+ getPackageDescr cabalFile (uploadedAt, uploaderId) metadataInd = do
266264 uploader <- userName <$> lookupUserInfo userFeature uploaderId
267265 let pkgDescr = getBasicDescription uploadedAt cabalFile metadataInd
268266 case pkgDescr of
0 commit comments