summaryrefslogtreecommitdiff
path: root/Propellor/Exception.hs
blob: bd9212a813ba3c7e3737e0cdefb4c7180b7450e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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