28 lines
783 B
Haskell
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)
|