{-# LANGUAGE OverloadedStrings #-}

{- |
Module      : GHC.Eventlog.Live.Verbosity
Description : Logging verbosity for eventlog machines.
Stability   : experimental
Portability : portable
-}
module GHC.Eventlog.Live.Verbosity (
  Verbosity,
  showVerbosity,
  verbosityQuiet,
  verbosityError,
  verbosityWarning,
  verbosityInfo,
  verbosityDebug,
) where

import Data.Text (Text)

-------------------------------------------------------------------------------
-- Verbosity
-------------------------------------------------------------------------------

{- |
The type of logging verbosities supported by the machines
in "GHC.Eventlog.Live.Machines".
-}
data Verbosity
  = VerbosityDebug
  | VerbosityInfo
  | VerbosityWarning
  | VerbosityError
  | VerbosityQuiet
  deriving (Verbosity -> Verbosity -> Bool
(Verbosity -> Verbosity -> Bool)
-> (Verbosity -> Verbosity -> Bool) -> Eq Verbosity
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Verbosity -> Verbosity -> Bool
== :: Verbosity -> Verbosity -> Bool
$c/= :: Verbosity -> Verbosity -> Bool
/= :: Verbosity -> Verbosity -> Bool
Eq, Eq Verbosity
Eq Verbosity =>
(Verbosity -> Verbosity -> Ordering)
-> (Verbosity -> Verbosity -> Bool)
-> (Verbosity -> Verbosity -> Bool)
-> (Verbosity -> Verbosity -> Bool)
-> (Verbosity -> Verbosity -> Bool)
-> (Verbosity -> Verbosity -> Verbosity)
-> (Verbosity -> Verbosity -> Verbosity)
-> Ord Verbosity
Verbosity -> Verbosity -> Bool
Verbosity -> Verbosity -> Ordering
Verbosity -> Verbosity -> Verbosity
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 :: Verbosity -> Verbosity -> Ordering
compare :: Verbosity -> Verbosity -> Ordering
$c< :: Verbosity -> Verbosity -> Bool
< :: Verbosity -> Verbosity -> Bool
$c<= :: Verbosity -> Verbosity -> Bool
<= :: Verbosity -> Verbosity -> Bool
$c> :: Verbosity -> Verbosity -> Bool
> :: Verbosity -> Verbosity -> Bool
$c>= :: Verbosity -> Verbosity -> Bool
>= :: Verbosity -> Verbosity -> Bool
$cmax :: Verbosity -> Verbosity -> Verbosity
max :: Verbosity -> Verbosity -> Verbosity
$cmin :: Verbosity -> Verbosity -> Verbosity
min :: Verbosity -> Verbosity -> Verbosity
Ord)

{- |
Pretty-printer for t`Verbosity`.
-}
showVerbosity :: Verbosity -> Text
showVerbosity :: Verbosity -> Text
showVerbosity = \case
  Verbosity
VerbosityDebug -> Text
"Debug"
  Verbosity
VerbosityInfo -> Text
"Info"
  Verbosity
VerbosityWarning -> Text
"Warning"
  Verbosity
VerbosityError -> Text
"Error"
  Verbosity
VerbosityQuiet -> Text
"Quiet"

{- |
Quiet t`Verbosity`.
-}
verbosityQuiet :: Verbosity
verbosityQuiet :: Verbosity
verbosityQuiet = Verbosity
VerbosityQuiet

{- |
Error t`Verbosity`.
-}
verbosityError :: Verbosity
verbosityError :: Verbosity
verbosityError = Verbosity
VerbosityError

{- |
Warning t`Verbosity`.
-}
verbosityWarning :: Verbosity
verbosityWarning :: Verbosity
verbosityWarning = Verbosity
VerbosityWarning

{- |
Info t`Verbosity`.
-}
verbosityInfo :: Verbosity
verbosityInfo :: Verbosity
verbosityInfo = Verbosity
VerbosityInfo

{- |
Debug t`Verbosity`.
-}
verbosityDebug :: Verbosity
verbosityDebug :: Verbosity
verbosityDebug = Verbosity
VerbosityDebug