{-# LANGUAGE TemplateHaskell #-} -- |The `Template` module exports functions dealing with parsing YAML CloudFormation templates. module Network.CloudSeeder.Template ( Template(..) , HasParameterSpecs(..) ) where import Control.Lens (makeFields) import Data.Aeson.Types (typeMismatch) import Data.Yaml (FromJSON(..), Value(..), (.:)) import Network.CloudSeeder.Types newtype Template = Template { _templateParameterSpecs :: ParameterSpecs } deriving (Eq, Show) makeFields ''Template instance FromJSON Template where parseJSON (Object v) = Template <$> v .: "Parameters" parseJSON invalid = typeMismatch "Template" invalid