module Hix.Managed.Data.EnvState where
import Distribution.Pretty (Pretty (pretty))
import GHC.Generics (Generically (Generically))
import Text.PrettyPrint (hang, ($+$))
import Hix.Data.Overrides (Overrides)
import Hix.Managed.Data.Diff (BoundsChange, VersionChange)
import Hix.Managed.Data.Mutable (MutableDeps)
data EnvState =
EnvState {
EnvState -> MutableDeps BoundsChange
bounds :: MutableDeps BoundsChange,
EnvState -> MutableDeps VersionChange
versions :: MutableDeps VersionChange,
EnvState -> Overrides
overrides :: Overrides,
EnvState -> MutableDeps VersionChange
initial :: MutableDeps VersionChange
}
deriving stock (EnvState -> EnvState -> Bool
(EnvState -> EnvState -> Bool)
-> (EnvState -> EnvState -> Bool) -> Eq EnvState
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: EnvState -> EnvState -> Bool
== :: EnvState -> EnvState -> Bool
$c/= :: EnvState -> EnvState -> Bool
/= :: EnvState -> EnvState -> Bool
Eq, Int -> EnvState -> ShowS
[EnvState] -> ShowS
EnvState -> String
(Int -> EnvState -> ShowS)
-> (EnvState -> String) -> ([EnvState] -> ShowS) -> Show EnvState
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> EnvState -> ShowS
showsPrec :: Int -> EnvState -> ShowS
$cshow :: EnvState -> String
show :: EnvState -> String
$cshowList :: [EnvState] -> ShowS
showList :: [EnvState] -> ShowS
Show, (forall x. EnvState -> Rep EnvState x)
-> (forall x. Rep EnvState x -> EnvState) -> Generic EnvState
forall x. Rep EnvState x -> EnvState
forall x. EnvState -> Rep EnvState x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. EnvState -> Rep EnvState x
from :: forall x. EnvState -> Rep EnvState x
$cto :: forall x. Rep EnvState x -> EnvState
to :: forall x. Rep EnvState x -> EnvState
Generic)
deriving (NonEmpty EnvState -> EnvState
EnvState -> EnvState -> EnvState
(EnvState -> EnvState -> EnvState)
-> (NonEmpty EnvState -> EnvState)
-> (forall b. Integral b => b -> EnvState -> EnvState)
-> Semigroup EnvState
forall b. Integral b => b -> EnvState -> EnvState
forall a.
(a -> a -> a)
-> (NonEmpty a -> a)
-> (forall b. Integral b => b -> a -> a)
-> Semigroup a
$c<> :: EnvState -> EnvState -> EnvState
<> :: EnvState -> EnvState -> EnvState
$csconcat :: NonEmpty EnvState -> EnvState
sconcat :: NonEmpty EnvState -> EnvState
$cstimes :: forall b. Integral b => b -> EnvState -> EnvState
stimes :: forall b. Integral b => b -> EnvState -> EnvState
Semigroup, Semigroup EnvState
EnvState
Semigroup EnvState =>
EnvState
-> (EnvState -> EnvState -> EnvState)
-> ([EnvState] -> EnvState)
-> Monoid EnvState
[EnvState] -> EnvState
EnvState -> EnvState -> EnvState
forall a.
Semigroup a =>
a -> (a -> a -> a) -> ([a] -> a) -> Monoid a
$cmempty :: EnvState
mempty :: EnvState
$cmappend :: EnvState -> EnvState -> EnvState
mappend :: EnvState -> EnvState -> EnvState
$cmconcat :: [EnvState] -> EnvState
mconcat :: [EnvState] -> EnvState
Monoid) via (Generically EnvState)
instance Pretty EnvState where
pretty :: EnvState -> Doc
pretty EnvState {Overrides
MutableDeps VersionChange
MutableDeps BoundsChange
bounds :: EnvState -> MutableDeps BoundsChange
versions :: EnvState -> MutableDeps VersionChange
overrides :: EnvState -> Overrides
initial :: EnvState -> MutableDeps VersionChange
bounds :: MutableDeps BoundsChange
versions :: MutableDeps VersionChange
overrides :: Overrides
initial :: MutableDeps VersionChange
..} =
Doc -> Int -> Doc -> Doc
hang Doc
"bounds:" Int
2 (MutableDeps BoundsChange -> Doc
forall a. Pretty a => a -> Doc
pretty MutableDeps BoundsChange
bounds) Doc -> Doc -> Doc
$+$
Doc -> Int -> Doc -> Doc
hang Doc
"versions:" Int
2 (MutableDeps VersionChange -> Doc
forall a. Pretty a => a -> Doc
pretty MutableDeps VersionChange
versions) Doc -> Doc -> Doc
$+$
Doc -> Int -> Doc -> Doc
hang Doc
"overrides:" Int
2 (Overrides -> Doc
forall a. Pretty a => a -> Doc
pretty Overrides
overrides) Doc -> Doc -> Doc
$+$
Doc -> Int -> Doc -> Doc
hang Doc
"initial:" Int
2 (MutableDeps VersionChange -> Doc
forall a. Pretty a => a -> Doc
pretty MutableDeps VersionChange
initial)