@@ -38,7 +38,7 @@ import qualified Distribution.Server.Framework as Framework
3838import Distribution.Server.Features.Core (CoreFeature (.. ),
3939 CoreResource (.. ))
4040import qualified Distribution.Server.Features.PreferredVersions as Preferred
41- import Distribution.Server.Packages.Types (CabalFileText (.. ), pkgSpecificRevision , pkgLatestRevision , pkgMaxRevision )
41+ import Distribution.Server.Packages.Types (CabalFileText (.. ), pkgSpecificRevision , pkgLatestRevision , pkgMaxRevision , pkgNumRevisions )
4242
4343import Distribution.Utils.ShortText (fromShortText )
4444import Data.Foldable (toList )
@@ -245,11 +245,19 @@ servePackageBasicDescription resource userFeature preferred dpath = do
245245 guardValidPackageId resource pkgid
246246 pkg <- lookupPackageId resource pkgid
247247
248- let (metadataInd, (cabalFile, uploadInfo)) =
249- fromMaybe (pkgMaxRevision pkg, pkgLatestRevision pkg) $ do
250- ix <- metadataRev
251- rev <- pkgSpecificRevision pkg ix
252- pure (ix, rev)
248+ (metadataInd, (cabalFile, uploadInfo)) <- do
249+ case metadataRev of
250+ Nothing ->
251+ pure (pkgMaxRevision pkg, pkgLatestRevision pkg)
252+ Just ix ->
253+ case pkgSpecificRevision pkg ix of
254+ Nothing ->
255+ Framework. errNotFound " Revision not found"
256+ [Framework. MText
257+ $ " There are " <> show (pkgNumRevisions pkg) <> " metadata revisions. Index "
258+ <> show ix <> " is out of bounds." ]
259+ Just rev -> pure (ix, rev)
260+
253261 descr <- getPackageDescr cabalFile uploadInfo metadataInd
254262 return $ Framework. toResponse $ Aeson. toJSON descr
255263
0 commit comments