@@ -1,6 +1,10 @@
1{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
2module Reporting.Task
2module Reporting.Task
3− ( Task, Task_, run, throw, mapError
3+ ( Task, Task_
5 , getPackageCacheDir
9 , getPackageCacheDir
6 , getPackageCacheDirFor
10 , getPackageCacheDirFor
@@ -23,7 +27,8 @@ import Control.Monad.Reader (ReaderT, runReaderT, ask, asks)
23import Control.Monad.Trans (liftIO)
27import Control.Monad.Trans (liftIO)
24import qualified Network.HTTP.Client as Http
28import qualified Network.HTTP.Client as Http
25import qualified Network.HTTP.Client.TLS as Http
29import qualified Network.HTTP.Client.TLS as Http
26−import System.Directory (createDirectoryIfMissing)
30+import qualified System.Directory as Dir
31+import qualified System.Exit as Exit
27import System.FilePath ((</>))
32import System.FilePath ((</>))
28import qualified System.IO as IO
33import qualified System.IO as IO
@@ -55,8 +60,8 @@ data Env =
58−run :: Progress.Reporter -> Task a -> IO (Maybe a)
63+try :: Progress.Reporter -> Task a -> IO (Maybe a)
59−run (Progress.Reporter tell end) task =
64+try (Progress.Reporter tell end) task =
60 do root <- PerUserCache.getPackageRoot
65 do root <- PerUserCache.getPackageRoot
61 pool <- initPool 4
66 pool <- initPool 4
62 httpManager <- Http.newManager Http.tlsManagerSettings
67 httpManager <- Http.newManager Http.tlsManagerSettings
@@ -72,6 +77,14 @@ run (Progress.Reporter tell end) task =
72 return (Just answer)
77 return (Just answer)
80+run :: Progress.Reporter -> Task a -> IO ()
82+ do maybeAnswer <- try reporter task
84+ Nothing -> Exit.exitFailure
75throw :: e -> Task_ e a
88throw :: e -> Task_ e a
77 throwError
90 throwError
@@ -95,7 +108,7 @@ getPackageCacheDirFor :: Name -> Version -> Task_ e FilePath
95getPackageCacheDirFor name version =
108getPackageCacheDirFor name version =
96 do cacheDir <- getPackageCacheDir
109 do cacheDir <- getPackageCacheDir
97 let dir = cacheDir </> Pkg.toFilePath name </> Pkg.versionToString version
110 let dir = cacheDir </> Pkg.toFilePath name </> Pkg.versionToString version
98− liftIO (createDirectoryIfMissing True dir)
111+ liftIO (Dir.createDirectoryIfMissing True dir)
99 return dir
112 return dir