module Hix.Managed.Data.ProjectContextProto where

import Data.Aeson (FromJSON)

import Hix.Managed.Data.EnvConfig (EnvConfig)
import Hix.Managed.Data.Envs (Envs)
import Hix.Managed.Data.ManagedPackageProto (ManagedPackageProto)
import Hix.Managed.Data.Packages (Packages)
import Hix.Managed.Data.ProjectStateProto (ProjectStateProto)
import Hix.Managed.Handlers.Build (BuildOutputsPrefix)

data ProjectContextProto =
  ProjectContextProto {
    ProjectContextProto -> Packages ManagedPackageProto
packages :: Packages ManagedPackageProto,
    ProjectContextProto -> ProjectStateProto
state :: ProjectStateProto,
    ProjectContextProto -> Envs EnvConfig
envs :: Envs EnvConfig,
    ProjectContextProto -> Maybe BuildOutputsPrefix
buildOutputsPrefix :: Maybe BuildOutputsPrefix
  }
  deriving stock (ProjectContextProto -> ProjectContextProto -> Bool
(ProjectContextProto -> ProjectContextProto -> Bool)
-> (ProjectContextProto -> ProjectContextProto -> Bool)
-> Eq ProjectContextProto
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProjectContextProto -> ProjectContextProto -> Bool
== :: ProjectContextProto -> ProjectContextProto -> Bool
$c/= :: ProjectContextProto -> ProjectContextProto -> Bool
/= :: ProjectContextProto -> ProjectContextProto -> Bool
Eq, Int -> ProjectContextProto -> ShowS
[ProjectContextProto] -> ShowS
ProjectContextProto -> String
(Int -> ProjectContextProto -> ShowS)
-> (ProjectContextProto -> String)
-> ([ProjectContextProto] -> ShowS)
-> Show ProjectContextProto
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProjectContextProto -> ShowS
showsPrec :: Int -> ProjectContextProto -> ShowS
$cshow :: ProjectContextProto -> String
show :: ProjectContextProto -> String
$cshowList :: [ProjectContextProto] -> ShowS
showList :: [ProjectContextProto] -> ShowS
Show, (forall x. ProjectContextProto -> Rep ProjectContextProto x)
-> (forall x. Rep ProjectContextProto x -> ProjectContextProto)
-> Generic ProjectContextProto
forall x. Rep ProjectContextProto x -> ProjectContextProto
forall x. ProjectContextProto -> Rep ProjectContextProto x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ProjectContextProto -> Rep ProjectContextProto x
from :: forall x. ProjectContextProto -> Rep ProjectContextProto x
$cto :: forall x. Rep ProjectContextProto x -> ProjectContextProto
to :: forall x. Rep ProjectContextProto x -> ProjectContextProto
Generic)
  deriving anyclass (Maybe ProjectContextProto
Value -> Parser [ProjectContextProto]
Value -> Parser ProjectContextProto
(Value -> Parser ProjectContextProto)
-> (Value -> Parser [ProjectContextProto])
-> Maybe ProjectContextProto
-> FromJSON ProjectContextProto
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser ProjectContextProto
parseJSON :: Value -> Parser ProjectContextProto
$cparseJSONList :: Value -> Parser [ProjectContextProto]
parseJSONList :: Value -> Parser [ProjectContextProto]
$comittedField :: Maybe ProjectContextProto
omittedField :: Maybe ProjectContextProto
FromJSON)

instance Default ProjectContextProto where
  def :: ProjectContextProto
def =
    ProjectContextProto {
      packages :: Packages ManagedPackageProto
packages = Packages ManagedPackageProto
forall a. Monoid a => a
mempty,
      state :: ProjectStateProto
state = ProjectStateProto
forall a. Default a => a
def,
      envs :: Envs EnvConfig
envs = Envs EnvConfig
forall a. Monoid a => a
mempty,
      buildOutputsPrefix :: Maybe BuildOutputsPrefix
buildOutputsPrefix = Maybe BuildOutputsPrefix
forall a. Maybe a
Nothing
    }