@@ -9,6 +9,10 @@ import Control.Concurrent.MVar (MVar)
9import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
9import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
10import Control.Monad.Log (LoggingT, MonadLog, Severity (..), WithSeverity (..))
10import Control.Monad.Log (LoggingT, MonadLog, Severity (..), WithSeverity (..))
11import Control.Monad.Reader (MonadIO, ReaderT (..), ask)
11import Control.Monad.Reader (MonadIO, ReaderT (..), ask)
12+import Control.Monad.Writer (WriterT)
13+import Control.Monad.State (StateT)
14+import Control.Monad.Except (ExceptT)
15+import Control.Monad.Trans (lift)
12import Data.IORef (IORef)
16import Data.IORef (IORef)
13import Data.Text (Text)
17import Data.Text (Text)
@@ -47,3 +51,15 @@ class Monad m => HasCliConfig m where
48instance Monad m => HasCliConfig (CliT m) where
52instance Monad m => HasCliConfig (CliT m) where
49 getCliConfig = CliT ask
53 getCliConfig = CliT ask
55+instance HasCliConfig m => HasCliConfig (ReaderT r m) where
56+ getCliConfig = lift getCliConfig
58+instance (Monoid w, HasCliConfig m) => HasCliConfig (WriterT w m) where
59+ getCliConfig = lift getCliConfig
61+instance HasCliConfig m => HasCliConfig (StateT s m) where
62+ getCliConfig = lift getCliConfig
64+instance HasCliConfig m => HasCliConfig (ExceptT e m) where
65+ getCliConfig = lift getCliConfig