never executed always true always false
1 module HelVM.HelMA.Automaton.API.LogLevel where
2
3 import qualified Control.Monad.Logger as Logger
4
5 import qualified RIO
6
7 import Data.Default
8
9 import HelVM.HelIO.Containers.MTIndexSafe
10
11 logLevelFromInt ∷ Int → LogLevel
12 logLevelFromInt = fromInt logLevels
13
14 showEitherTextLogLevel ∷ Either Text LogLevel → Text
15 showEitherTextLogLevel (Right l) = show l
16 showEitherTextLogLevel (Left t) = show t
17
18 fromLogger ∷ Logger.LogLevel → Either Text LogLevel
19 fromLogger Logger.LevelError = Right Error
20 fromLogger Logger.LevelWarn = Right Warn
21 fromLogger Logger.LevelInfo = Right Info
22 fromLogger Logger.LevelDebug = Right Debug
23 fromLogger (Logger.LevelOther t) = Left t
24
25 fromRio ∷ RIO.LogLevel → Either Text LogLevel
26 fromRio RIO.LevelError = Right Error
27 fromRio RIO.LevelWarn = Right Warn
28 fromRio RIO.LevelInfo = Right Info
29 fromRio RIO.LevelDebug = Right Debug
30 fromRio (RIO.LevelOther t) = Left t
31
32 toLogger ∷ LogLevel → Logger.LogLevel
33 toLogger Error = Logger.LevelError
34 toLogger Warn = Logger.LevelWarn
35 toLogger Info = Logger.LevelInfo
36 toLogger Debug = Logger.LevelDebug
37
38 toRio ∷ LogLevel → RIO.LogLevel
39 toRio Error = RIO.LevelError
40 toRio Warn = RIO.LevelWarn
41 toRio Info = RIO.LevelInfo
42 toRio Debug = RIO.LevelDebug
43
44 defaultLogLevel ∷ LogLevel
45 defaultLogLevel = def
46
47 logLevels ∷ NonEmpty LogLevel
48 logLevels = universeNonEmpty
49
50 data LogLevel
51 = Error
52 | Warn
53 | Info
54 | Debug
55 deriving stock (Bounded, Enum, Eq, Ord, Read, Show)
56
57 instance Default LogLevel where
58 def = minBound
59
60 ----
61
62 fromInt ∷ (Bounded a, Foldable t) ⇒ t a → Int → a
63 fromInt l i = fromMaybe maxBound $ indexMaybe (toList l) i