2014-04-10 21:22:32 +00:00
|
|
|
{-# LANGUAGE PackageImports #-}
|
|
|
|
|
|
|
|
module Propellor.Exception where
|
|
|
|
|
|
|
|
import qualified "MonadCatchIO-transformers" Control.Monad.CatchIO as M
|
|
|
|
import Control.Exception
|
|
|
|
|
|
|
|
import Propellor.Types
|
2014-04-11 05:52:12 +00:00
|
|
|
import Propellor.Message
|
2014-04-10 21:22:32 +00:00
|
|
|
|
|
|
|
-- | Catches IO exceptions and returns FailedChange.
|
|
|
|
catchPropellor :: Propellor Result -> Propellor Result
|
2014-04-11 05:52:12 +00:00
|
|
|
catchPropellor a = either err return =<< tryPropellor a
|
|
|
|
where
|
|
|
|
err e = warningMessage (show e) >> return FailedChange
|
2014-04-10 21:22:32 +00:00
|
|
|
|
|
|
|
tryPropellor :: Propellor a -> Propellor (Either IOException a)
|
|
|
|
tryPropellor = M.try
|