mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-02-04 15:20:25 +01:00
Track whether an individual package has documentation #49
This commit is contained in:
parent
45e7f50fea
commit
6f4e9eb4fd
@ -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)
|
||||||
|
|||||||
@ -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]
|
||||||
|
)
|
||||||
|
|||||||
@ -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 " ==") ++
|
||||||
|
|||||||
@ -143,6 +143,7 @@ putUploadStackageR = do
|
|||||||
, packageName' = name
|
, packageName' = name
|
||||||
, packageVersion = version
|
, packageVersion = version
|
||||||
, packageOverwrite = overwrite
|
, packageOverwrite = overwrite
|
||||||
|
, packageHasHaddocks = False
|
||||||
}
|
}
|
||||||
|
|
||||||
setAlias
|
setAlias
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user