module Hix.Managed.Data.Packages where import Data.Aeson (FromJSON) import Distribution.Pretty (Pretty (pretty)) import GHC.Exts (IsList) import Hix.Class.EncodeNix (EncodeNix) import Hix.Class.Map (LookupMaybe, LookupMonoid, NMap, nPretty, nPretty1) import Hix.Data.PackageName (LocalPackage, PackageName) newtype Packages a = Packages (Map LocalPackage a) deriving stock (Packages a -> Packages a -> Bool (Packages a -> Packages a -> Bool) -> (Packages a -> Packages a -> Bool) -> Eq (Packages a) forall a. Eq a => Packages a -> Packages a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: forall a. Eq a => Packages a -> Packages a -> Bool == :: Packages a -> Packages a -> Bool $c/= :: forall a. Eq a => Packages a -> Packages a -> Bool /= :: Packages a -> Packages a -> Bool Eq, Int -> Packages a -> ShowS [Packages a] -> ShowS Packages a -> String (Int -> Packages a -> ShowS) -> (Packages a -> String) -> ([Packages a] -> ShowS) -> Show (Packages a) forall a. Show a => Int -> Packages a -> ShowS forall a. Show a => [Packages a] -> ShowS forall a. Show a => Packages a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: forall a. Show a => Int -> Packages a -> ShowS showsPrec :: Int -> Packages a -> ShowS $cshow :: forall a. Show a => Packages a -> String show :: Packages a -> String $cshowList :: forall a. Show a => [Packages a] -> ShowS showList :: [Packages a] -> ShowS Show, (forall x. Packages a -> Rep (Packages a) x) -> (forall x. Rep (Packages a) x -> Packages a) -> Generic (Packages a) forall x. Rep (Packages a) x -> Packages a forall x. Packages a -> Rep (Packages a) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall a x. Rep (Packages a) x -> Packages a forall a x. Packages a -> Rep (Packages a) x $cfrom :: forall a x. Packages a -> Rep (Packages a) x from :: forall x. Packages a -> Rep (Packages a) x $cto :: forall a x. Rep (Packages a) x -> Packages a to :: forall x. Rep (Packages a) x -> Packages a Generic) deriving newtype (Maybe (Packages a) Value -> Parser [Packages a] Value -> Parser (Packages a) (Value -> Parser (Packages a)) -> (Value -> Parser [Packages a]) -> Maybe (Packages a) -> FromJSON (Packages a) forall a. FromJSON a => Maybe (Packages a) forall a. FromJSON a => Value -> Parser [Packages a] forall a. FromJSON a => Value -> Parser (Packages a) forall a. (Value -> Parser a) -> (Value -> Parser [a]) -> Maybe a -> FromJSON a $cparseJSON :: forall a. FromJSON a => Value -> Parser (Packages a) parseJSON :: Value -> Parser (Packages a) $cparseJSONList :: forall a. FromJSON a => Value -> Parser [Packages a] parseJSONList :: Value -> Parser [Packages a] $comittedField :: forall a. FromJSON a => Maybe (Packages a) omittedField :: Maybe (Packages a) FromJSON, NonEmpty (Packages a) -> Packages a Packages a -> Packages a -> Packages a (Packages a -> Packages a -> Packages a) -> (NonEmpty (Packages a) -> Packages a) -> (forall b. Integral b => b -> Packages a -> Packages a) -> Semigroup (Packages a) forall b. Integral b => b -> Packages a -> Packages a forall a. NonEmpty (Packages a) -> Packages a forall a. Packages a -> Packages a -> Packages a forall a. (a -> a -> a) -> (NonEmpty a -> a) -> (forall b. Integral b => b -> a -> a) -> Semigroup a forall a b. Integral b => b -> Packages a -> Packages a $c<> :: forall a. Packages a -> Packages a -> Packages a <> :: Packages a -> Packages a -> Packages a $csconcat :: forall a. NonEmpty (Packages a) -> Packages a sconcat :: NonEmpty (Packages a) -> Packages a $cstimes :: forall a b. Integral b => b -> Packages a -> Packages a stimes :: forall b. Integral b => b -> Packages a -> Packages a Semigroup, Semigroup (Packages a) Packages a Semigroup (Packages a) => Packages a -> (Packages a -> Packages a -> Packages a) -> ([Packages a] -> Packages a) -> Monoid (Packages a) [Packages a] -> Packages a Packages a -> Packages a -> Packages a forall a. Semigroup (Packages a) forall a. Packages a forall a. Semigroup a => a -> (a -> a -> a) -> ([a] -> a) -> Monoid a forall a. [Packages a] -> Packages a forall a. Packages a -> Packages a -> Packages a $cmempty :: forall a. Packages a mempty :: Packages a $cmappend :: forall a. Packages a -> Packages a -> Packages a mappend :: Packages a -> Packages a -> Packages a $cmconcat :: forall a. [Packages a] -> Packages a mconcat :: [Packages a] -> Packages a Monoid, Int -> [Item (Packages a)] -> Packages a [Item (Packages a)] -> Packages a Packages a -> [Item (Packages a)] ([Item (Packages a)] -> Packages a) -> (Int -> [Item (Packages a)] -> Packages a) -> (Packages a -> [Item (Packages a)]) -> IsList (Packages a) forall a. Int -> [Item (Packages a)] -> Packages a forall a. [Item (Packages a)] -> Packages a forall a. Packages a -> [Item (Packages a)] forall l. ([Item l] -> l) -> (Int -> [Item l] -> l) -> (l -> [Item l]) -> IsList l $cfromList :: forall a. [Item (Packages a)] -> Packages a fromList :: [Item (Packages a)] -> Packages a $cfromListN :: forall a. Int -> [Item (Packages a)] -> Packages a fromListN :: Int -> [Item (Packages a)] -> Packages a $ctoList :: forall a. Packages a -> [Item (Packages a)] toList :: Packages a -> [Item (Packages a)] IsList, Packages a -> Expr (Packages a -> Expr) -> EncodeNix (Packages a) forall a. EncodeNix a => Packages a -> Expr forall a. (a -> Expr) -> EncodeNix a $cencodeNix :: forall a. EncodeNix a => Packages a -> Expr encodeNix :: Packages a -> Expr EncodeNix) instance NMap (Packages a) LocalPackage a LookupMonoid where instance Pretty a => Pretty (Packages a) where pretty :: Packages a -> Doc pretty = Packages a -> Doc forall k v map sort. (Pretty k, Pretty v, NMap map k v sort) => map -> Doc nPretty1 newtype Deps a = Deps (Map PackageName a) deriving stock (Deps a -> Deps a -> Bool (Deps a -> Deps a -> Bool) -> (Deps a -> Deps a -> Bool) -> Eq (Deps a) forall a. Eq a => Deps a -> Deps a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: forall a. Eq a => Deps a -> Deps a -> Bool == :: Deps a -> Deps a -> Bool $c/= :: forall a. Eq a => Deps a -> Deps a -> Bool /= :: Deps a -> Deps a -> Bool Eq, Int -> Deps a -> ShowS [Deps a] -> ShowS Deps a -> String (Int -> Deps a -> ShowS) -> (Deps a -> String) -> ([Deps a] -> ShowS) -> Show (Deps a) forall a. Show a => Int -> Deps a -> ShowS forall a. Show a => [Deps a] -> ShowS forall a. Show a => Deps a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: forall a. Show a => Int -> Deps a -> ShowS showsPrec :: Int -> Deps a -> ShowS $cshow :: forall a. Show a => Deps a -> String show :: Deps a -> String $cshowList :: forall a. Show a => [Deps a] -> ShowS showList :: [Deps a] -> ShowS Show, (forall x. Deps a -> Rep (Deps a) x) -> (forall x. Rep (Deps a) x -> Deps a) -> Generic (Deps a) forall x. Rep (Deps a) x -> Deps a forall x. Deps a -> Rep (Deps a) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall a x. Rep (Deps a) x -> Deps a forall a x. Deps a -> Rep (Deps a) x $cfrom :: forall a x. Deps a -> Rep (Deps a) x from :: forall x. Deps a -> Rep (Deps a) x $cto :: forall a x. Rep (Deps a) x -> Deps a to :: forall x. Rep (Deps a) x -> Deps a Generic) deriving newtype (Maybe (Deps a) Value -> Parser [Deps a] Value -> Parser (Deps a) (Value -> Parser (Deps a)) -> (Value -> Parser [Deps a]) -> Maybe (Deps a) -> FromJSON (Deps a) forall a. FromJSON a => Maybe (Deps a) forall a. FromJSON a => Value -> Parser [Deps a] forall a. FromJSON a => Value -> Parser (Deps a) forall a. (Value -> Parser a) -> (Value -> Parser [a]) -> Maybe a -> FromJSON a $cparseJSON :: forall a. FromJSON a => Value -> Parser (Deps a) parseJSON :: Value -> Parser (Deps a) $cparseJSONList :: forall a. FromJSON a => Value -> Parser [Deps a] parseJSONList :: Value -> Parser [Deps a] $comittedField :: forall a. FromJSON a => Maybe (Deps a) omittedField :: Maybe (Deps a) FromJSON, NonEmpty (Deps a) -> Deps a Deps a -> Deps a -> Deps a (Deps a -> Deps a -> Deps a) -> (NonEmpty (Deps a) -> Deps a) -> (forall b. Integral b => b -> Deps a -> Deps a) -> Semigroup (Deps a) forall b. Integral b => b -> Deps a -> Deps a forall a. NonEmpty (Deps a) -> Deps a forall a. Deps a -> Deps a -> Deps a forall a. (a -> a -> a) -> (NonEmpty a -> a) -> (forall b. Integral b => b -> a -> a) -> Semigroup a forall a b. Integral b => b -> Deps a -> Deps a $c<> :: forall a. Deps a -> Deps a -> Deps a <> :: Deps a -> Deps a -> Deps a $csconcat :: forall a. NonEmpty (Deps a) -> Deps a sconcat :: NonEmpty (Deps a) -> Deps a $cstimes :: forall a b. Integral b => b -> Deps a -> Deps a stimes :: forall b. Integral b => b -> Deps a -> Deps a Semigroup, Semigroup (Deps a) Deps a Semigroup (Deps a) => Deps a -> (Deps a -> Deps a -> Deps a) -> ([Deps a] -> Deps a) -> Monoid (Deps a) [Deps a] -> Deps a Deps a -> Deps a -> Deps a forall a. Semigroup (Deps a) forall a. Deps a forall a. Semigroup a => a -> (a -> a -> a) -> ([a] -> a) -> Monoid a forall a. [Deps a] -> Deps a forall a. Deps a -> Deps a -> Deps a $cmempty :: forall a. Deps a mempty :: Deps a $cmappend :: forall a. Deps a -> Deps a -> Deps a mappend :: Deps a -> Deps a -> Deps a $cmconcat :: forall a. [Deps a] -> Deps a mconcat :: [Deps a] -> Deps a Monoid, Int -> [Item (Deps a)] -> Deps a [Item (Deps a)] -> Deps a Deps a -> [Item (Deps a)] ([Item (Deps a)] -> Deps a) -> (Int -> [Item (Deps a)] -> Deps a) -> (Deps a -> [Item (Deps a)]) -> IsList (Deps a) forall a. Int -> [Item (Deps a)] -> Deps a forall a. [Item (Deps a)] -> Deps a forall a. Deps a -> [Item (Deps a)] forall l. ([Item l] -> l) -> (Int -> [Item l] -> l) -> (l -> [Item l]) -> IsList l $cfromList :: forall a. [Item (Deps a)] -> Deps a fromList :: [Item (Deps a)] -> Deps a $cfromListN :: forall a. Int -> [Item (Deps a)] -> Deps a fromListN :: Int -> [Item (Deps a)] -> Deps a $ctoList :: forall a. Deps a -> [Item (Deps a)] toList :: Deps a -> [Item (Deps a)] IsList, Deps a -> Expr (Deps a -> Expr) -> EncodeNix (Deps a) forall a. EncodeNix a => Deps a -> Expr forall a. (a -> Expr) -> EncodeNix a $cencodeNix :: forall a. EncodeNix a => Deps a -> Expr encodeNix :: Deps a -> Expr EncodeNix) instance NMap (Deps a) PackageName a LookupMaybe where instance Pretty a => Pretty (Deps a) where pretty :: Deps a -> Doc pretty = Deps a -> Doc forall k v map sort. (Pretty k, Pretty v, NMap map k v sort) => map -> Doc nPretty