lebd/src/Package/Types.hs

28 lines
783 B
Haskell

{-# LANGUAGE DeriveLift #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TemplateHaskell #-}
module Package.Types where
import Data.Aeson
import Data.Aeson.Types ( fieldLabelModifier )
import Data.Aeson.TH ( deriveJSON )
import Data.Char ( toLower )
import Language.Haskell.TH.Syntax ( Lift )
import Util ( mapFirst )
data Package = Package
{ packageName :: !String
, packageVersion :: !String
, packageRepository :: !Repository
} deriving (Show, Lift)
data Repository = Repository
{ repositoryType :: !String
, repositoryUrl :: !String
} deriving (Show, Lift)
$(deriveJSON defaultOptions { fieldLabelModifier = mapFirst toLower . drop 7 } ''Package)
$(deriveJSON defaultOptions { fieldLabelModifier = mapFirst toLower . drop 10 } ''Repository)