    {-# 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 (Show, Typeable)

    instance Exception StopPropellorException