mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-01-12 04:08:29 +01:00
44 lines
1.3 KiB
Haskell
44 lines
1.3 KiB
Haskell
module Handler.StackageHome where
|
|
|
|
import Import
|
|
import Data.BlobStore (storeExists)
|
|
|
|
getStackageHomeR :: PackageSetIdent -> Handler Html
|
|
getStackageHomeR ident = do
|
|
(stackage, user) <- runDB $ do
|
|
Entity _ stackage <- getBy404 $ UniqueStackage ident
|
|
user <- get404 $ stackageUser stackage
|
|
return (stackage, user)
|
|
|
|
hasBundle <- storeExists $ SnapshotBundle ident
|
|
defaultLayout $ do
|
|
setTitle $ toHtml $ stackageTitle stackage
|
|
$(widgetFile "stackage-home")
|
|
|
|
getStackageMetadataR :: PackageSetIdent -> Handler TypedContent
|
|
getStackageMetadataR ident = do
|
|
Entity sid _ <- runDB $ getBy404 $ UniqueStackage ident
|
|
respondSourceDB typePlain $ do
|
|
sendChunkBS "Override packages\n"
|
|
sendChunkBS "=================\n"
|
|
stream sid True
|
|
sendChunkBS "\nPackages from Hackage\n"
|
|
sendChunkBS "=====================\n"
|
|
stream sid False
|
|
where
|
|
stream sid isOverwrite =
|
|
selectSource
|
|
[ PackageStackage ==. sid
|
|
, PackageOverwrite ==. isOverwrite
|
|
]
|
|
[ Asc PackageName'
|
|
, Asc PackageVersion
|
|
] $= mapC (Chunk . toBuilder . showPackage)
|
|
|
|
showPackage (Entity _ (Package _ name version _)) = concat
|
|
[ toPathPiece name
|
|
, "-"
|
|
, toPathPiece version
|
|
, "\n"
|
|
]
|