packages feed

serialise-0.2.6.1: bench/versus/Macro/PkgAesonTH.hs

{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Macro.PkgAesonTH where

import Macro.Types
import Data.Aeson as Aeson
import Data.Aeson.TH as Aeson
import Data.ByteString.Lazy as BS
import Data.Maybe

deriveJSON defaultOptions ''Version
deriveJSON defaultOptions ''PackageName
deriveJSON defaultOptions ''PackageId
deriveJSON defaultOptions ''VersionRange
deriveJSON defaultOptions ''Dependency
deriveJSON defaultOptions ''CompilerFlavor
deriveJSON defaultOptions ''License
deriveJSON defaultOptions ''RepoKind
deriveJSON defaultOptions ''RepoType
deriveJSON defaultOptions ''SourceRepo
deriveJSON defaultOptions ''BuildType
deriveJSON defaultOptions ''ModuleName
deriveJSON defaultOptions ''Language
deriveJSON defaultOptions ''KnownExtension
deriveJSON defaultOptions ''Extension
deriveJSON defaultOptions ''BuildInfo
deriveJSON defaultOptions ''Library
deriveJSON defaultOptions ''Executable
deriveJSON defaultOptions ''TestType
deriveJSON defaultOptions ''TestSuiteInterface
deriveJSON defaultOptions ''TestSuite
deriveJSON defaultOptions ''BenchmarkType
deriveJSON defaultOptions ''BenchmarkInterface
deriveJSON defaultOptions ''Benchmark
deriveJSON defaultOptions ''PackageDescription
deriveJSON defaultOptions ''OS
deriveJSON defaultOptions ''Arch
deriveJSON defaultOptions ''FlagName
deriveJSON defaultOptions ''Flag
deriveJSON defaultOptions ''Condition
deriveJSON defaultOptions ''CondTree
deriveJSON defaultOptions ''ConfVar
deriveJSON defaultOptions ''GenericPackageDescription

serialise :: [GenericPackageDescription] -> BS.ByteString
serialise pkgs = Aeson.encode pkgs

deserialise :: BS.ByteString -> [GenericPackageDescription]
deserialise = fromJust . Aeson.decode'