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