{-# LANGUAGE DeriveAnyClass #-}

module Hercules.Agent.WorkerProtocol.Command.BuildResult where

import Data.Binary
import Data.UUID (UUID)
import Protolude

data BuildResult = BuildResult Text UUID BuildStatus
  deriving ((forall x. BuildResult -> Rep BuildResult x)
-> (forall x. Rep BuildResult x -> BuildResult)
-> Generic BuildResult
forall x. Rep BuildResult x -> BuildResult
forall x. BuildResult -> Rep BuildResult x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. BuildResult -> Rep BuildResult x
from :: forall x. BuildResult -> Rep BuildResult x
$cto :: forall x. Rep BuildResult x -> BuildResult
to :: forall x. Rep BuildResult x -> BuildResult
Generic, Get BuildResult
[BuildResult] -> Put
BuildResult -> Put
(BuildResult -> Put)
-> Get BuildResult -> ([BuildResult] -> Put) -> Binary BuildResult
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
$cput :: BuildResult -> Put
put :: BuildResult -> Put
$cget :: Get BuildResult
get :: Get BuildResult
$cputList :: [BuildResult] -> Put
putList :: [BuildResult] -> Put
Binary, Int -> BuildResult -> ShowS
[BuildResult] -> ShowS
BuildResult -> String
(Int -> BuildResult -> ShowS)
-> (BuildResult -> String)
-> ([BuildResult] -> ShowS)
-> Show BuildResult
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BuildResult -> ShowS
showsPrec :: Int -> BuildResult -> ShowS
$cshow :: BuildResult -> String
show :: BuildResult -> String
$cshowList :: [BuildResult] -> ShowS
showList :: [BuildResult] -> ShowS
Show, BuildResult -> BuildResult -> Bool
(BuildResult -> BuildResult -> Bool)
-> (BuildResult -> BuildResult -> Bool) -> Eq BuildResult
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BuildResult -> BuildResult -> Bool
== :: BuildResult -> BuildResult -> Bool
$c/= :: BuildResult -> BuildResult -> Bool
/= :: BuildResult -> BuildResult -> Bool
Eq, BuildResult -> ()
(BuildResult -> ()) -> NFData BuildResult
forall a. (a -> ()) -> NFData a
$crnf :: BuildResult -> ()
rnf :: BuildResult -> ()
NFData)

-- | Subset of @DerivationStatus@, with a @Binary@ instance.
data BuildStatus
  = Success
  | Failure
  | DependencyFailure
  deriving ((forall x. BuildStatus -> Rep BuildStatus x)
-> (forall x. Rep BuildStatus x -> BuildStatus)
-> Generic BuildStatus
forall x. Rep BuildStatus x -> BuildStatus
forall x. BuildStatus -> Rep BuildStatus x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. BuildStatus -> Rep BuildStatus x
from :: forall x. BuildStatus -> Rep BuildStatus x
$cto :: forall x. Rep BuildStatus x -> BuildStatus
to :: forall x. Rep BuildStatus x -> BuildStatus
Generic, Get BuildStatus
[BuildStatus] -> Put
BuildStatus -> Put
(BuildStatus -> Put)
-> Get BuildStatus -> ([BuildStatus] -> Put) -> Binary BuildStatus
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
$cput :: BuildStatus -> Put
put :: BuildStatus -> Put
$cget :: Get BuildStatus
get :: Get BuildStatus
$cputList :: [BuildStatus] -> Put
putList :: [BuildStatus] -> Put
Binary, Int -> BuildStatus -> ShowS
[BuildStatus] -> ShowS
BuildStatus -> String
(Int -> BuildStatus -> ShowS)
-> (BuildStatus -> String)
-> ([BuildStatus] -> ShowS)
-> Show BuildStatus
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BuildStatus -> ShowS
showsPrec :: Int -> BuildStatus -> ShowS
$cshow :: BuildStatus -> String
show :: BuildStatus -> String
$cshowList :: [BuildStatus] -> ShowS
showList :: [BuildStatus] -> ShowS
Show, BuildStatus -> BuildStatus -> Bool
(BuildStatus -> BuildStatus -> Bool)
-> (BuildStatus -> BuildStatus -> Bool) -> Eq BuildStatus
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BuildStatus -> BuildStatus -> Bool
== :: BuildStatus -> BuildStatus -> Bool
$c/= :: BuildStatus -> BuildStatus -> Bool
/= :: BuildStatus -> BuildStatus -> Bool
Eq, BuildStatus -> ()
(BuildStatus -> ()) -> NFData BuildStatus
forall a. (a -> ()) -> NFData a
$crnf :: BuildStatus -> ()
rnf :: BuildStatus -> ()
NFData)