never executed always true always false
    1 module HelVM.HelMA.Automaton.Extra where
    2 
    3 import           HelVM.HelMA.Automaton.API.BoolTypes
    4 import           HelVM.HelMA.Automaton.API.Env
    5 import           HelVM.HelMA.Automaton.API.EvalParams
    6 import           HelVM.HelMA.Automaton.API.IOTypes
    7 
    8 import           HelVM.HelIO.Control.Message
    9 
   10 import           HelVM.HelIO.Control.Safe
   11 
   12 import           Control.Monad.Logger
   13 
   14 import qualified RIO
   15 
   16 runAsRIO :: (MonadIO m, MonadReader env m, Has env) => LoggingT (SafeT m) a -> m a
   17 runAsRIO action = do
   18   logFunc <- RIO.view RIO.logFuncL
   19   let logOutput _ source level msg =  RIO.runRIO logFunc $ RIO.logGeneric source (toRioLevel level) (RIO.displayBytesUtf8 $ fromLogStr msg)
   20   result <- runExceptT $ runLoggingT action logOutput
   21   either ((*> RIO.exitFailure) . RIO.logError . RIO.display . errorsToText) pure result
   22 
   23 readSourceFile :: Has env => Exec -> String -> RIO.RIO env Source
   24 readSourceFile True = pure . toText
   25 readSourceFile _    = readTextFileRio
   26 
   27 fallback :: Has env => EvalParams -> RIO.RIO env ()
   28 fallback = putLTextLnRio . show . source
   29 
   30 toRioLevel :: LogLevel -> RIO.LogLevel
   31 toRioLevel  LevelError    = RIO.LevelError
   32 toRioLevel  LevelWarn     = RIO.LevelWarn
   33 toRioLevel  LevelInfo     = RIO.LevelInfo
   34 toRioLevel  LevelDebug    = RIO.LevelDebug
   35 toRioLevel (LevelOther l) = RIO.LevelOther l