module System.Nix.Store.Remote.Types.Activity
  ( Activity(..)
  , ActivityID(..)
  , ActivityResult(..)
  ) where

import GHC.Generics

-- | Type of the activity
--
-- We don't have Activity_Unknown here
-- as we can do @Maybe Activity@ and @Nothing@
-- corresponding to Unknown (which has 0 value)
--
-- Rest of the values are offset by @(+100)@
-- on the wire, i.e.:
--
--   * @Activity_CopyPath = 100@
--   * @Activity_BuildWaiting = 111@
data Activity
  = Activity_CopyPath
  | Activity_FileTransfer
  | Activity_Realise
  | Activity_CopyPaths
  | Activity_Builds
  | Activity_Build
  | Activity_OptimiseStore
  | Activity_VerifyPaths
  | Activity_Substitute
  | Activity_QueryPathInfo
  | Activity_PostBuildHook
  | Activity_BuildWaiting
  deriving (Activity
Activity -> Activity -> Bounded Activity
forall a. a -> a -> Bounded a
$cminBound :: Activity
minBound :: Activity
$cmaxBound :: Activity
maxBound :: Activity
Bounded, Activity -> Activity -> Bool
(Activity -> Activity -> Bool)
-> (Activity -> Activity -> Bool) -> Eq Activity
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Activity -> Activity -> Bool
== :: Activity -> Activity -> Bool
$c/= :: Activity -> Activity -> Bool
/= :: Activity -> Activity -> Bool
Eq, Int -> Activity
Activity -> Int
Activity -> [Activity]
Activity -> Activity
Activity -> Activity -> [Activity]
Activity -> Activity -> Activity -> [Activity]
(Activity -> Activity)
-> (Activity -> Activity)
-> (Int -> Activity)
-> (Activity -> Int)
-> (Activity -> [Activity])
-> (Activity -> Activity -> [Activity])
-> (Activity -> Activity -> [Activity])
-> (Activity -> Activity -> Activity -> [Activity])
-> Enum Activity
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: Activity -> Activity
succ :: Activity -> Activity
$cpred :: Activity -> Activity
pred :: Activity -> Activity
$ctoEnum :: Int -> Activity
toEnum :: Int -> Activity
$cfromEnum :: Activity -> Int
fromEnum :: Activity -> Int
$cenumFrom :: Activity -> [Activity]
enumFrom :: Activity -> [Activity]
$cenumFromThen :: Activity -> Activity -> [Activity]
enumFromThen :: Activity -> Activity -> [Activity]
$cenumFromTo :: Activity -> Activity -> [Activity]
enumFromTo :: Activity -> Activity -> [Activity]
$cenumFromThenTo :: Activity -> Activity -> Activity -> [Activity]
enumFromThenTo :: Activity -> Activity -> Activity -> [Activity]
Enum, (forall x. Activity -> Rep Activity x)
-> (forall x. Rep Activity x -> Activity) -> Generic Activity
forall x. Rep Activity x -> Activity
forall x. Activity -> Rep Activity x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Activity -> Rep Activity x
from :: forall x. Activity -> Rep Activity x
$cto :: forall x. Rep Activity x -> Activity
to :: forall x. Rep Activity x -> Activity
Generic, Eq Activity
Eq Activity =>
(Activity -> Activity -> Ordering)
-> (Activity -> Activity -> Bool)
-> (Activity -> Activity -> Bool)
-> (Activity -> Activity -> Bool)
-> (Activity -> Activity -> Bool)
-> (Activity -> Activity -> Activity)
-> (Activity -> Activity -> Activity)
-> Ord Activity
Activity -> Activity -> Bool
Activity -> Activity -> Ordering
Activity -> Activity -> Activity
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Activity -> Activity -> Ordering
compare :: Activity -> Activity -> Ordering
$c< :: Activity -> Activity -> Bool
< :: Activity -> Activity -> Bool
$c<= :: Activity -> Activity -> Bool
<= :: Activity -> Activity -> Bool
$c> :: Activity -> Activity -> Bool
> :: Activity -> Activity -> Bool
$c>= :: Activity -> Activity -> Bool
>= :: Activity -> Activity -> Bool
$cmax :: Activity -> Activity -> Activity
max :: Activity -> Activity -> Activity
$cmin :: Activity -> Activity -> Activity
min :: Activity -> Activity -> Activity
Ord, Int -> Activity -> ShowS
[Activity] -> ShowS
Activity -> String
(Int -> Activity -> ShowS)
-> (Activity -> String) -> ([Activity] -> ShowS) -> Show Activity
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Activity -> ShowS
showsPrec :: Int -> Activity -> ShowS
$cshow :: Activity -> String
show :: Activity -> String
$cshowList :: [Activity] -> ShowS
showList :: [Activity] -> ShowS
Show)

-- | Numeric ID of the activity
newtype ActivityID = ActivityID { ActivityID -> Int
unActivityID :: Int }
  deriving (ActivityID -> ActivityID -> Bool
(ActivityID -> ActivityID -> Bool)
-> (ActivityID -> ActivityID -> Bool) -> Eq ActivityID
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ActivityID -> ActivityID -> Bool
== :: ActivityID -> ActivityID -> Bool
$c/= :: ActivityID -> ActivityID -> Bool
/= :: ActivityID -> ActivityID -> Bool
Eq, (forall x. ActivityID -> Rep ActivityID x)
-> (forall x. Rep ActivityID x -> ActivityID) -> Generic ActivityID
forall x. Rep ActivityID x -> ActivityID
forall x. ActivityID -> Rep ActivityID x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ActivityID -> Rep ActivityID x
from :: forall x. ActivityID -> Rep ActivityID x
$cto :: forall x. Rep ActivityID x -> ActivityID
to :: forall x. Rep ActivityID x -> ActivityID
Generic, Eq ActivityID
Eq ActivityID =>
(ActivityID -> ActivityID -> Ordering)
-> (ActivityID -> ActivityID -> Bool)
-> (ActivityID -> ActivityID -> Bool)
-> (ActivityID -> ActivityID -> Bool)
-> (ActivityID -> ActivityID -> Bool)
-> (ActivityID -> ActivityID -> ActivityID)
-> (ActivityID -> ActivityID -> ActivityID)
-> Ord ActivityID
ActivityID -> ActivityID -> Bool
ActivityID -> ActivityID -> Ordering
ActivityID -> ActivityID -> ActivityID
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: ActivityID -> ActivityID -> Ordering
compare :: ActivityID -> ActivityID -> Ordering
$c< :: ActivityID -> ActivityID -> Bool
< :: ActivityID -> ActivityID -> Bool
$c<= :: ActivityID -> ActivityID -> Bool
<= :: ActivityID -> ActivityID -> Bool
$c> :: ActivityID -> ActivityID -> Bool
> :: ActivityID -> ActivityID -> Bool
$c>= :: ActivityID -> ActivityID -> Bool
>= :: ActivityID -> ActivityID -> Bool
$cmax :: ActivityID -> ActivityID -> ActivityID
max :: ActivityID -> ActivityID -> ActivityID
$cmin :: ActivityID -> ActivityID -> ActivityID
min :: ActivityID -> ActivityID -> ActivityID
Ord, Int -> ActivityID -> ShowS
[ActivityID] -> ShowS
ActivityID -> String
(Int -> ActivityID -> ShowS)
-> (ActivityID -> String)
-> ([ActivityID] -> ShowS)
-> Show ActivityID
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ActivityID -> ShowS
showsPrec :: Int -> ActivityID -> ShowS
$cshow :: ActivityID -> String
show :: ActivityID -> String
$cshowList :: [ActivityID] -> ShowS
showList :: [ActivityID] -> ShowS
Show)

-- | Result of some activity
--
-- The values are offset by @(+100)@
-- on the wire, i.e.:
--
--   * @ActivityResult_FileLinked = 100@
--   * @ActivityResult_PostBuildLogLine = 107@
data ActivityResult
  = ActivityResult_FileLinked
  | ActivityResult_BuildLogLine
  | ActivityResult_UnstrustedPath
  | ActivityResult_CorruptedPath
  | ActivityResult_SetPhase
  | ActivityResult_Progress
  | ActivityResult_SetExpected
  | ActivityResult_PostBuildLogLine
  deriving (ActivityResult
ActivityResult -> ActivityResult -> Bounded ActivityResult
forall a. a -> a -> Bounded a
$cminBound :: ActivityResult
minBound :: ActivityResult
$cmaxBound :: ActivityResult
maxBound :: ActivityResult
Bounded, ActivityResult -> ActivityResult -> Bool
(ActivityResult -> ActivityResult -> Bool)
-> (ActivityResult -> ActivityResult -> Bool) -> Eq ActivityResult
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ActivityResult -> ActivityResult -> Bool
== :: ActivityResult -> ActivityResult -> Bool
$c/= :: ActivityResult -> ActivityResult -> Bool
/= :: ActivityResult -> ActivityResult -> Bool
Eq, Int -> ActivityResult
ActivityResult -> Int
ActivityResult -> [ActivityResult]
ActivityResult -> ActivityResult
ActivityResult -> ActivityResult -> [ActivityResult]
ActivityResult
-> ActivityResult -> ActivityResult -> [ActivityResult]
(ActivityResult -> ActivityResult)
-> (ActivityResult -> ActivityResult)
-> (Int -> ActivityResult)
-> (ActivityResult -> Int)
-> (ActivityResult -> [ActivityResult])
-> (ActivityResult -> ActivityResult -> [ActivityResult])
-> (ActivityResult -> ActivityResult -> [ActivityResult])
-> (ActivityResult
    -> ActivityResult -> ActivityResult -> [ActivityResult])
-> Enum ActivityResult
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: ActivityResult -> ActivityResult
succ :: ActivityResult -> ActivityResult
$cpred :: ActivityResult -> ActivityResult
pred :: ActivityResult -> ActivityResult
$ctoEnum :: Int -> ActivityResult
toEnum :: Int -> ActivityResult
$cfromEnum :: ActivityResult -> Int
fromEnum :: ActivityResult -> Int
$cenumFrom :: ActivityResult -> [ActivityResult]
enumFrom :: ActivityResult -> [ActivityResult]
$cenumFromThen :: ActivityResult -> ActivityResult -> [ActivityResult]
enumFromThen :: ActivityResult -> ActivityResult -> [ActivityResult]
$cenumFromTo :: ActivityResult -> ActivityResult -> [ActivityResult]
enumFromTo :: ActivityResult -> ActivityResult -> [ActivityResult]
$cenumFromThenTo :: ActivityResult
-> ActivityResult -> ActivityResult -> [ActivityResult]
enumFromThenTo :: ActivityResult
-> ActivityResult -> ActivityResult -> [ActivityResult]
Enum, (forall x. ActivityResult -> Rep ActivityResult x)
-> (forall x. Rep ActivityResult x -> ActivityResult)
-> Generic ActivityResult
forall x. Rep ActivityResult x -> ActivityResult
forall x. ActivityResult -> Rep ActivityResult x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ActivityResult -> Rep ActivityResult x
from :: forall x. ActivityResult -> Rep ActivityResult x
$cto :: forall x. Rep ActivityResult x -> ActivityResult
to :: forall x. Rep ActivityResult x -> ActivityResult
Generic, Eq ActivityResult
Eq ActivityResult =>
(ActivityResult -> ActivityResult -> Ordering)
-> (ActivityResult -> ActivityResult -> Bool)
-> (ActivityResult -> ActivityResult -> Bool)
-> (ActivityResult -> ActivityResult -> Bool)
-> (ActivityResult -> ActivityResult -> Bool)
-> (ActivityResult -> ActivityResult -> ActivityResult)
-> (ActivityResult -> ActivityResult -> ActivityResult)
-> Ord ActivityResult
ActivityResult -> ActivityResult -> Bool
ActivityResult -> ActivityResult -> Ordering
ActivityResult -> ActivityResult -> ActivityResult
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: ActivityResult -> ActivityResult -> Ordering
compare :: ActivityResult -> ActivityResult -> Ordering
$c< :: ActivityResult -> ActivityResult -> Bool
< :: ActivityResult -> ActivityResult -> Bool
$c<= :: ActivityResult -> ActivityResult -> Bool
<= :: ActivityResult -> ActivityResult -> Bool
$c> :: ActivityResult -> ActivityResult -> Bool
> :: ActivityResult -> ActivityResult -> Bool
$c>= :: ActivityResult -> ActivityResult -> Bool
>= :: ActivityResult -> ActivityResult -> Bool
$cmax :: ActivityResult -> ActivityResult -> ActivityResult
max :: ActivityResult -> ActivityResult -> ActivityResult
$cmin :: ActivityResult -> ActivityResult -> ActivityResult
min :: ActivityResult -> ActivityResult -> ActivityResult
Ord, Int -> ActivityResult -> ShowS
[ActivityResult] -> ShowS
ActivityResult -> String
(Int -> ActivityResult -> ShowS)
-> (ActivityResult -> String)
-> ([ActivityResult] -> ShowS)
-> Show ActivityResult
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ActivityResult -> ShowS
showsPrec :: Int -> ActivityResult -> ShowS
$cshow :: ActivityResult -> String
show :: ActivityResult -> String
$cshowList :: [ActivityResult] -> ShowS
showList :: [ActivityResult] -> ShowS
Show)