cabal.config link

This commit is contained in:
Michael Snoyman 2014-10-18 19:43:57 +03:00
parent 25fa854a84
commit 11f0d37904
3 changed files with 35 additions and 0 deletions

View File

@ -2,6 +2,7 @@ module Handler.StackageHome where
import Data.BlobStore (storeExists)
import Import
import Data.Time (FormatTime)
getStackageHomeR :: PackageSetIdent -> Handler Html
getStackageHomeR ident = do
@ -49,4 +50,33 @@ getStackageMetadataR ident = do
, "\n"
]
getStackageCabalConfigR :: PackageSetIdent -> Handler TypedContent
getStackageCabalConfigR ident = do
Entity sid _ <- runDB $ getBy404 $ UniqueStackage ident
respondSourceDB typePlain $ stream sid
where
stream sid =
selectSource
[ PackageStackage ==. sid
, PackageOverwrite ==. False
]
[ Asc PackageName'
, Asc PackageVersion
] $= (goFirst >> mapC (Chunk . showPackage))
goFirst = do
mx <- await
forM_ mx $ \(Entity _ (Package _ name version _)) -> yield $ Chunk $
toBuilder (asText "constraints: ") ++
toBuilder (toPathPiece name) ++
toBuilder (asText " ==") ++
toBuilder (toPathPiece version)
showPackage (Entity _ (Package _ name version _)) =
toBuilder (asText ",\n ") ++
toBuilder (toPathPiece name) ++
toBuilder (asText " ==") ++
toBuilder (toPathPiece version)
yearMonthDay :: FormatTime t => t -> String
yearMonthDay = formatTime defaultTimeLocale "%Y-%m-%d"

View File

@ -12,6 +12,7 @@
/upload UploadStackageR GET PUT
/stackage/#PackageSetIdent StackageHomeR GET
/stackage/#PackageSetIdent/metadata StackageMetadataR GET
/stackage/#PackageSetIdent/cabal.config StackageCabalConfigR GET
/stackage/#PackageSetIdent/00-index.tar.gz StackageIndexR GET
/stackage/#PackageSetIdent/bundle StackageBundleR GET
/stackage/#PackageSetIdent/package/#PackageNameVersion StackageSdistR GET

View File

@ -13,6 +13,10 @@ $newline never
<span>
<a href=@{StackageBundleR ident} title="This is useful for making modifications to an existing snapshot">
\Bundle
<span .separator>
<span>
<a href=@{StackageCabalConfigR ident} title="If you want to stick with upstream Hackage but get a stable package set">
\cabal.config
<p>
<pre>
remote-repo: stackage:@{StackageHomeR ident}