hedgehog-extras-0.3.0.1: src/Hedgehog/Extras/Internal/Plan.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
module Hedgehog.Extras.Internal.Plan
( Plan(..)
, Component(..)
) where
import Control.Applicative
import Data.Aeson
import Data.Eq
import Data.Function
import Data.Maybe
import Data.Text (Text)
import GHC.Generics
import Text.Show
data Component = Component
{ componentName :: Maybe Text
, binFile :: Maybe Text
}
deriving (Generic, Eq, Show)
newtype Plan = Plan
{ installPlan :: [Component]
}
deriving (Generic, Eq, Show)
instance FromJSON Plan where
parseJSON = withObject "Plan" $ \v -> Plan
<$> v .: "install-plan"
instance FromJSON Component where
parseJSON = withObject "Plan" $ \v -> Component
<$> v .:? "component-name"
<*> v .:? "bin-file"