module Effectful.Notify.Internal.Os
  ( Os (..),
  )
where

import Data.Text.Display (Display (displayBuilder))

-- | Os types.
--
-- @since 0.1
data Os
  = -- | @since 0.1
    Linux
  | -- | @since 0.1
    Osx
  | -- | @since 0.1
    Windows
  deriving stock (Os
Os -> Os -> Bounded Os
forall a. a -> a -> Bounded a
$cminBound :: Os
minBound :: Os
$cmaxBound :: Os
maxBound :: Os
Bounded, Os -> Os -> Bool
(Os -> Os -> Bool) -> (Os -> Os -> Bool) -> Eq Os
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Os -> Os -> Bool
== :: Os -> Os -> Bool
$c/= :: Os -> Os -> Bool
/= :: Os -> Os -> Bool
Eq, Int -> Os -> ShowS
[Os] -> ShowS
Os -> String
(Int -> Os -> ShowS)
-> (Os -> String) -> ([Os] -> ShowS) -> Show Os
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Os -> ShowS
showsPrec :: Int -> Os -> ShowS
$cshow :: Os -> String
show :: Os -> String
$cshowList :: [Os] -> ShowS
showList :: [Os] -> ShowS
Show)

-- | @since 0.1
instance Display Os where
  displayBuilder :: Os -> Builder
displayBuilder = \case
    Os
Linux -> Builder
"linux"
    Os
Osx -> Builder
"osx"
    Os
Windows -> Builder
"windows"