@@ -226,6 +226,7 @@ data CoreResource = CoreResource {
226
226
corePackageTarball :: Resource ,
227
227
-- | A Cabal file metatada revision.
228
228
coreCabalFileRev :: Resource ,
229
+ coreCabalFileRevName :: Resource ,
229
230
230
231
-- Rendering resources.
231
232
-- | URI for `corePackagesPage`, given a format (blank for none).
@@ -404,6 +405,7 @@ coreFeature ServerEnv{serverBlobStore = store} UserFeature{..}
404
405
, coreCabalFile
405
406
, coreCabalFileRevs
406
407
, coreCabalFileRev
408
+ , coreCabalFileRevName
407
409
, coreUserDeauth
408
410
, coreAdminDeauth
409
411
, corePackUserDeauth
@@ -457,6 +459,11 @@ coreFeature ServerEnv{serverBlobStore = store} UserFeature{..}
457
459
resourceDesc = [(GET , " Get package .cabal file revision" )]
458
460
, resourceGet = [(" cabal" , serveCabalFileRevision)]
459
461
}
462
+ coreCabalFileRevName = (resourceAt " /package/:package/revision/:tarball-:revision.:format" ) {
463
+ resourceDesc = [(GET , " Get package .cabal file revision with name" )]
464
+ , resourceGet = [(" cabal" , serveCabalFileRevisionName)]
465
+ }
466
+
460
467
461
468
coreUserDeauth = (resourceAt " /packages/deauth" ) {
462
469
resourceDesc = [(GET , " Deauth Package user" )]
@@ -754,6 +761,21 @@ coreFeature ServerEnv{serverBlobStore = store} UserFeature{..}
754
761
Nothing -> errNotFound " Package revision not found"
755
762
[MText " Cannot parse revision, or revision out of range." ]
756
763
764
+ serveCabalFileRevisionName :: DynamicPath -> ServerPartE Response
765
+ serveCabalFileRevisionName dpath = do
766
+ pkgid1 <- packageTarballInPath dpath
767
+ pkgid2 <- packageInPath dpath
768
+ guard (pkgVersion pkgid2 == pkgVersion pkgid2)
769
+ pkginfo <- packageInPath dpath >>= lookupPackageId
770
+ let mrev = lookup " revision" dpath >>= fromReqURI
771
+ revisions = pkgMetadataRevisions pkginfo
772
+ case mrev >>= \ rev -> revisions Vec. !? rev of
773
+ Just (fileRev, (utime, _uid)) -> return $ toResponse cabalfile
774
+ where
775
+ cabalfile = Resource. CabalFile (cabalFileByteString fileRev) utime
776
+ Nothing -> errNotFound " Package revision not found"
777
+ [MText " Cannot parse revision, or revision out of range." ]
778
+
757
779
758
780
deauth :: DynamicPath -> ServerPartE Response
759
781
deauth _ = do
0 commit comments