diff options
author | Joey Hess <joey@kitenet.net> | 2014-04-10 17:22:32 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2014-04-10 17:23:43 -0400 |
commit | 25942fb0cca0ca90933026bf959506e099ff95a4 (patch) | |
tree | 2f84378c71abaa4458c5078e8cb8e6726bffbefd /Propellor/Exception.hs | |
parent | 5acaf8758f752574140dd79de7996d91a81d1cd4 (diff) |
Propellor monad is a Reader for HostAttr
So far, the hostname is only used to improve a message in withPrivData,
but I anticipate using HostAttr for a lot more.
Diffstat (limited to 'Propellor/Exception.hs')
-rw-r--r-- | Propellor/Exception.hs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/Propellor/Exception.hs b/Propellor/Exception.hs new file mode 100644 index 00000000..bd9212a8 --- /dev/null +++ b/Propellor/Exception.hs @@ -0,0 +1,16 @@ +{-# LANGUAGE PackageImports #-} + +module Propellor.Exception where + +import qualified "MonadCatchIO-transformers" Control.Monad.CatchIO as M +import Control.Exception +import Control.Applicative + +import Propellor.Types + +-- | Catches IO exceptions and returns FailedChange. +catchPropellor :: Propellor Result -> Propellor Result +catchPropellor a = either (\_ -> FailedChange) id <$> tryPropellor a + +tryPropellor :: Propellor a -> Propellor (Either IOException a) +tryPropellor = M.try |