-- | This module defines the 'PushBehavior' type.
module Unison.Codebase.PushBehavior
  ( PushBehavior (..),
  )
where

-- | How a `push` behaves.
data PushBehavior
  = -- Force-push over what's there.
    ForcePush
  | -- | The namespace being pushed to is required to be empty.
    RequireEmpty
  | -- | The namespace being pushed to is required to be non-empty
    RequireNonEmpty
  deriving stock (PushBehavior -> PushBehavior -> Bool
(PushBehavior -> PushBehavior -> Bool)
-> (PushBehavior -> PushBehavior -> Bool) -> Eq PushBehavior
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PushBehavior -> PushBehavior -> Bool
== :: PushBehavior -> PushBehavior -> Bool
$c/= :: PushBehavior -> PushBehavior -> Bool
/= :: PushBehavior -> PushBehavior -> Bool
Eq, Int -> PushBehavior -> ShowS
[PushBehavior] -> ShowS
PushBehavior -> String
(Int -> PushBehavior -> ShowS)
-> (PushBehavior -> String)
-> ([PushBehavior] -> ShowS)
-> Show PushBehavior
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PushBehavior -> ShowS
showsPrec :: Int -> PushBehavior -> ShowS
$cshow :: PushBehavior -> String
show :: PushBehavior -> String
$cshowList :: [PushBehavior] -> ShowS
showList :: [PushBehavior] -> ShowS
Show)