-- | A newtype around a list of Strings which represent hosts to look up. -- This is all to avoid an orphan instance of 'Configured' for -- [String] if we had defined one in e.g. 'OptionalConfiguration'. -- {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} module Hosts ( Hosts(..) ) where import Data.Configurator () -- Needed for predefined instances. import Data.Configurator.Types ( Configured(..) ) import Data.Monoid ( Monoid ) import Data.Data ( Data ) import System.Console.CmdArgs.Default ( Default(..) ) import Data.Typeable ( Typeable ) import Configurator ( convert_newtype_list ) -- | A (wrapper around a) list of hosts. -- newtype Hosts = Hosts { get_hosts :: [String] } deriving (Data, Eq, Monoid, Show, Typeable) -- | The default list of hosts. It's empty. -- instance Default Hosts where def = Hosts [] instance Configured Hosts where -- | This allows us to read a Hosts object out of a Configurator -- config file: by default Configurator wouldn't know what to do. convert = convert_newtype_list Hosts