[commit: Cabal] master: First stab at uploading the detailed logs. (e6dd889)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:57:46 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/e6dd889c715ec305301d4b9b24524a9084121061
>---------------------------------------------------------------
commit e6dd889c715ec305301d4b9b24524a9084121061
Author: Lemmih <lemmih at gmail.com>
Date: Fri Aug 8 15:07:37 2008 +0000
First stab at uploading the detailed logs.
>---------------------------------------------------------------
cabal-install/Distribution/Client/Upload.hs | 35 +++++++++++++++++++++++---
1 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/cabal-install/Distribution/Client/Upload.hs b/cabal-install/Distribution/Client/Upload.hs
index 7ca6edd..f5dccd7 100644
--- a/cabal-install/Distribution/Client/Upload.hs
+++ b/cabal-install/Distribution/Client/Upload.hs
@@ -1,13 +1,19 @@
-- This is a quick hack for uploading packages to Hackage.
-- See http://hackage.haskell.org/trac/hackage/wiki/CabalUpload
-module Distribution.Client.Upload (check, upload) where
+module Distribution.Client.Upload (check, upload, report) where
-import Distribution.Client.Types (Username(..), Password(..))
+import Distribution.Client.Types (Username(..), Password(..),Repo(..),RemoteRepo(..))
import Distribution.Client.HttpUtils (proxy)
-import Distribution.Simple.Utils (debug, notice, warn)
+import Distribution.Simple.Utils (debug, notice, warn, info)
import Distribution.Verbosity (Verbosity)
+import Distribution.Text (display)
+import Distribution.Client.Config
+
+import qualified Distribution.Client.BuildReports.Anonymous as BuildReport
+import qualified Distribution.Client.BuildReports.Upload as BuildReport
+import qualified Distribution.Client.BuildReports.Storage as BuildReport
import Network.Browser
( BrowserAction, browse, request
@@ -24,7 +30,9 @@ import System.IO (hFlush, stdin, stdout, hGetEcho, hSetEcho
,openBinaryFile, IOMode(ReadMode), hGetContents)
import Control.Exception (bracket)
import System.Random (randomRIO)
-
+import System.FilePath
+import System.Directory
+import Control.Monad (forM_)
--FIXME: how do we find this path for an arbitrary hackage server?
@@ -68,6 +76,25 @@ upload verbosity mUsername mPassword paths = do
hSetEcho stdin False -- no echoing for entering the password
fmap Password getLine
+report :: Verbosity -> [Repo] -> IO ()
+report verbosity repos
+ = forM_ repos $ \repo ->
+ case repoKind repo of
+ Left remoteRepo
+ -> do dotCabal <- defaultCabalDir
+ let srcDir = dotCabal </> "reports" </> remoteRepoName remoteRepo
+ contents <- getDirectoryContents srcDir
+ forM_ contents $ \logFile ->
+ do inp <- readFile (srcDir </> logFile)
+ let (reportStr, buildLog) = read inp
+ case BuildReport.parse reportStr of
+ Left errs -> do warn verbosity $ "Errors: " ++ errs -- FIXME
+ Right report ->
+ do info verbosity $ "Uploading report for " ++ display (BuildReport.package report)
+ browse $ BuildReport.uploadReports (remoteRepoURI remoteRepo) [(report, buildLog)]
+ return ()
+ Right{} -> return ()
+
check :: Verbosity -> [FilePath] -> IO ()
check verbosity paths = do
flip mapM_ paths $ \path -> do
More information about the Cvs-libraries
mailing list