    {-# LANGUAGE DeriveDataTypeable #-}
    module Propellor.Types.Exception where

    import Data.Typeable
    import Control.Exception

    -- | Normally when an exception is encountered while propellor is
    -- ensuring a property, the property fails, but propellor robustly
    -- continues on to the next property.
    --
    -- This is the only exception that will stop the entire propellor run,
    -- preventing any subsequent properties of the Host from being ensured.
    -- (When propellor is running in a container in a Host, this exception only
    -- stops the propellor run in the container; the outer run in the Host
    -- continues.)
    --
    -- You should only throw this exception when things are so badly messed up
    -- that it's best for propellor to not try to do anything else.
    data StopPropellorException = StopPropellorException String
    	deriving (Int -> StopPropellorException -> ShowS
    [StopPropellorException] -> ShowS
    StopPropellorException -> String
    (Int -> StopPropellorException -> ShowS)
    -> (StopPropellorException -> String)
    -> ([StopPropellorException] -> ShowS)
    -> Show StopPropellorException
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> StopPropellorException -> ShowS
    showsPrec :: Int -> StopPropellorException -> ShowS
    $cshow :: StopPropellorException -> String
    show :: StopPropellorException -> String
    $cshowList :: [StopPropellorException] -> ShowS
    showList :: [StopPropellorException] -> ShowS
    Show, Typeable)

    instance Exception StopPropellorException