Track whether an individual package has documentation #49

This commit is contained in:
Michael Snoyman 2014-12-10 11:12:53 +02:00
parent 45e7f50fea
commit 6f4e9eb4fd
5 changed files with 33 additions and 5 deletions

View File

@ -164,6 +164,7 @@ makeFoundation useEcho conf = do
let haddockRootDir' = "/tmp/stackage-server-haddocks2" let haddockRootDir' = "/tmp/stackage-server-haddocks2"
(statusRef, unpacker) <- createHaddockUnpacker haddockRootDir' blobStore' (statusRef, unpacker) <- createHaddockUnpacker haddockRootDir' blobStore'
(flip (Database.Persist.runPool dbconf) p)
widgetCache' <- newIORef mempty widgetCache' <- newIORef mempty
#if MIN_VERSION_yesod_gitrepo(0,1,1) #if MIN_VERSION_yesod_gitrepo(0,1,1)

View File

@ -17,6 +17,7 @@ import Data.Byteable (toBytes)
import Crypto.Hash (Digest, SHA1) import Crypto.Hash (Digest, SHA1)
import qualified Filesystem.Path.CurrentOS as F import qualified Filesystem.Path.CurrentOS as F
import Data.Slug (SnapSlug) import Data.Slug (SnapSlug)
import qualified Data.Text as T
form :: Form FileInfo form :: Form FileInfo
form = renderDivs $ areq fileField "tarball containing docs" form = renderDivs $ areq fileField "tarball containing docs"
@ -208,8 +209,10 @@ dirCacheFp dirs digest =
-- demand. -- demand.
createHaddockUnpacker :: FilePath -- ^ haddock root createHaddockUnpacker :: FilePath -- ^ haddock root
-> BlobStore StoreKey -> BlobStore StoreKey
-> (forall a m. (MonadIO m, MonadBaseControl IO m)
=> SqlPersistT m a -> m a)
-> IO (IORef Text, ForceUnpack -> PackageSetIdent -> IO ()) -> IO (IORef Text, ForceUnpack -> PackageSetIdent -> IO ())
createHaddockUnpacker root store = do createHaddockUnpacker root store runDB' = do
createTree $ dirCacheRoot dirs createTree $ dirCacheRoot dirs
createTree $ dirRawRoot dirs createTree $ dirRawRoot dirs
createTree $ dirGzRoot dirs createTree $ dirGzRoot dirs
@ -256,9 +259,31 @@ createHaddockUnpacker root store = do
Just src -> src $$ sinkHandle temph Just src -> src $$ sinkHandle temph
hClose temph hClose temph
createTree $ dirRawIdent dirs ident createTree $ dirRawIdent dirs ident
let destdir = dirRawIdent dirs ident
(Nothing, Nothing, Nothing, ph) <- createProcess (Nothing, Nothing, Nothing, ph) <- createProcess
(proc "tar" ["xf", tempfp]) (proc "tar" ["xf", tempfp])
{ cwd = Just $ fpToString $ dirRawIdent dirs ident { cwd = Just $ fpToString destdir
} }
ec <- waitForProcess ph ec <- waitForProcess ph
if ec == ExitSuccess then return () else throwM ec if ec == ExitSuccess then return () else throwM ec
-- Determine which packages have documentation and update the
-- database appropriately
runResourceT $ runDB' $ do
ment <- getBy $ UniqueStackage ident
forM_ ment $ \(Entity sid _) -> do
updateWhere
[PackageStackage ==. sid]
[PackageHasHaddocks =. False]
sourceDirectory destdir $$ mapM_C (\fp -> do
let mname = stripSuffix "-"
$ fst
$ T.breakOnEnd "-"
$ fpToText
$ filename fp
forM_ mname $ \name -> updateWhere
[ PackageStackage ==. sid
, PackageName' ==. PackageName name
]
[PackageHasHaddocks =. True]
)

View File

@ -45,7 +45,7 @@ getStackageMetadataR slug = do
, Asc PackageVersion , Asc PackageVersion
] $= mapC (Chunk . toBuilder . showPackage) ] $= mapC (Chunk . toBuilder . showPackage)
showPackage (Entity _ (Package _ name version _)) = concat showPackage (Entity _ (Package _ name version _ _)) = concat
[ toPathPiece name [ toPathPiece name
, "-" , "-"
, toPathPiece version , toPathPiece version
@ -68,13 +68,13 @@ getStackageCabalConfigR slug = do
goFirst = do goFirst = do
mx <- await mx <- await
forM_ mx $ \(Entity _ (Package _ name version _)) -> yield $ Chunk $ forM_ mx $ \(Entity _ (Package _ name version _ _)) -> yield $ Chunk $
toBuilder (asText "constraints: ") ++ toBuilder (asText "constraints: ") ++
toBuilder (toPathPiece name) ++ toBuilder (toPathPiece name) ++
toBuilder (asText " ==") ++ toBuilder (asText " ==") ++
toBuilder (toPathPiece version) toBuilder (toPathPiece version)
showPackage (Entity _ (Package _ name version _)) = showPackage (Entity _ (Package _ name version _ _)) =
toBuilder (asText ",\n ") ++ toBuilder (asText ",\n ") ++
toBuilder (toPathPiece name) ++ toBuilder (toPathPiece name) ++
toBuilder (asText " ==") ++ toBuilder (asText " ==") ++

View File

@ -143,6 +143,7 @@ putUploadStackageR = do
, packageName' = name , packageName' = name
, packageVersion = version , packageVersion = version
, packageOverwrite = overwrite , packageOverwrite = overwrite
, packageHasHaddocks = False
} }
setAlias setAlias

View File

@ -42,6 +42,7 @@ Package
stackage StackageId stackage StackageId
name' PackageName sql=name name' PackageName sql=name
version Version version Version
hasHaddocks Bool default=true
overwrite Bool overwrite Bool
Tag Tag