Some fixes

This commit is contained in:
Michael Snoyman 2014-04-13 09:16:05 +03:00
parent 4f122f6282
commit b3a5c53a0b
2 changed files with 21 additions and 4 deletions

View File

@ -2,6 +2,7 @@ module Data.Hackage
( loadCabalFiles ( loadCabalFiles
, sourceHackageSdist , sourceHackageSdist
, createView , createView
, sourceHackageViewSdist
) where ) where
import ClassyPrelude.Yesod hiding (get) import ClassyPrelude.Yesod hiding (get)
@ -153,6 +154,21 @@ sourceHackageSdist name version = do
then storeRead key then storeRead key
else return Nothing else return Nothing
sourceHackageViewSdist :: ( MonadIO m
, MonadThrow m
, MonadBaseControl IO m
, MonadResource m
, MonadReader env m
, HasHttpManager env
, HasHackageRoot env
, HasBlobStore env StoreKey
, MonadLogger m
, MonadActive m
)
=> HackageView
-> PackageName
-> Version
-> m (Maybe (Source m ByteString))
sourceHackageViewSdist viewName name version = do sourceHackageViewSdist viewName name version = do
let key = HackageViewSdist viewName name version let key = HackageViewSdist viewName name version
msrc1 <- storeRead key msrc1 <- storeRead key
@ -164,13 +180,13 @@ sourceHackageViewSdist viewName name version = do
Nothing -> return Nothing Nothing -> return Nothing
Just cabalSrc -> do Just cabalSrc -> do
cabalLBS <- cabalSrc $$ sinkLazy cabalLBS <- cabalSrc $$ sinkLazy
msrc <- storeRead $ HackageSdist name version msrc <- sourceHackageSdist name version
case msrc of case msrc of
Nothing -> return Nothing Nothing -> return Nothing
Just src -> do Just src -> do
lbs <- fromChunks <$> lazyConsume src lbs <- fromChunks <$> lazyConsume (src $= ungzip)
let lbs' = Tar.write $ replaceCabal cabalLBS $ Tar.read lbs let lbs' = Tar.write $ replaceCabal cabalLBS $ Tar.read lbs
sourceLazy lbs' $$ storeWrite key sourceLazy lbs' $$ gzip =$ storeWrite key
storeRead key storeRead key
where where
cabalName = unpack $ concat cabalName = unpack $ concat

View File

@ -2,6 +2,7 @@ module Handler.StackageSdist where
import Import import Import
import Data.BlobStore import Data.BlobStore
import Data.Hackage
getStackageSdistR :: PackageSetIdent -> PackageNameVersion -> Handler TypedContent getStackageSdistR :: PackageSetIdent -> PackageNameVersion -> Handler TypedContent
getStackageSdistR ident (PackageNameVersion name version) = do getStackageSdistR ident (PackageNameVersion name version) = do
@ -9,7 +10,7 @@ getStackageSdistR ident (PackageNameVersion name version) = do
msrc <- msrc <-
case msrc1 of case msrc1 of
Just src -> return $ Just src Just src -> return $ Just src
Nothing -> storeRead $ HackageSdist name version Nothing -> sourceHackageSdist name version
case msrc of case msrc of
Nothing -> notFound Nothing -> notFound
Just src -> do Just src -> do