module Hix.Managed.Data.ProjectContext where

import Hix.Data.EnvName (EnvName)
import Hix.Managed.Data.BuildConfig (BuildConfig)
import Hix.Managed.Data.EnvContext (EnvContext)
import Hix.Managed.Data.ManagedPackage (ManagedPackage)
import Hix.Managed.Data.Packages (Packages)
import Hix.Managed.Data.ProjectState (ProjectState)

data ProjectContext =
  ProjectContext {
    ProjectContext -> BuildConfig
build :: BuildConfig,
    ProjectContext -> ProjectState
state :: ProjectState,
    ProjectContext -> Packages ManagedPackage
packages :: Packages ManagedPackage,
    ProjectContext -> NonEmpty (Either EnvName EnvContext)
envs :: NonEmpty (Either EnvName EnvContext)
  }
  deriving stock (ProjectContext -> ProjectContext -> Bool
(ProjectContext -> ProjectContext -> Bool)
-> (ProjectContext -> ProjectContext -> Bool) -> Eq ProjectContext
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProjectContext -> ProjectContext -> Bool
== :: ProjectContext -> ProjectContext -> Bool
$c/= :: ProjectContext -> ProjectContext -> Bool
/= :: ProjectContext -> ProjectContext -> Bool
Eq, Int -> ProjectContext -> ShowS
[ProjectContext] -> ShowS
ProjectContext -> String
(Int -> ProjectContext -> ShowS)
-> (ProjectContext -> String)
-> ([ProjectContext] -> ShowS)
-> Show ProjectContext
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProjectContext -> ShowS
showsPrec :: Int -> ProjectContext -> ShowS
$cshow :: ProjectContext -> String
show :: ProjectContext -> String
$cshowList :: [ProjectContext] -> ShowS
showList :: [ProjectContext] -> ShowS
Show)