module Horizon.Spec.Types.PackageList (PackageList(MkPackageList), fromPackageList) where

import           Data.Kind                         (Type)
import           Data.Map                          (Map)
import           Dhall                             (FromDhall, Generic, ToDhall)
import           Horizon.Spec.Types.HaskellPackage (HaskellPackage)
import           Horizon.Spec.Types.Name           (Name)

type PackageList :: Type
newtype PackageList where
  MkPackageList :: { PackageList -> Map Name HaskellPackage
fromPackageList :: Map Name HaskellPackage } -> PackageList
  deriving stock (Int -> PackageList -> ShowS
[PackageList] -> ShowS
PackageList -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PackageList] -> ShowS
$cshowList :: [PackageList] -> ShowS
show :: PackageList -> String
$cshow :: PackageList -> String
showsPrec :: Int -> PackageList -> ShowS
$cshowsPrec :: Int -> PackageList -> ShowS
Show, PackageList -> PackageList -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PackageList -> PackageList -> Bool
$c/= :: PackageList -> PackageList -> Bool
== :: PackageList -> PackageList -> Bool
$c== :: PackageList -> PackageList -> Bool
Eq, forall x. Rep PackageList x -> PackageList
forall x. PackageList -> Rep PackageList x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PackageList x -> PackageList
$cfrom :: forall x. PackageList -> Rep PackageList x
Generic)
  deriving newtype (InputNormalizer -> Decoder PackageList
forall a. (InputNormalizer -> Decoder a) -> FromDhall a
autoWith :: InputNormalizer -> Decoder PackageList
$cautoWith :: InputNormalizer -> Decoder PackageList
FromDhall, InputNormalizer -> Encoder PackageList
forall a. (InputNormalizer -> Encoder a) -> ToDhall a
injectWith :: InputNormalizer -> Encoder PackageList
$cinjectWith :: InputNormalizer -> Encoder PackageList
ToDhall)