on master help sign in
Add missing mtl-style instances for HasCliConfig
commit244342471c32934e6a0922f974124669d280e5e1 authorJohn Ericson <John.Ericson@Obsidian.Systems> dateMon 15 Oct 2018, 19:28 (8 years ago) parent5fc7a33
2 files changed+17−5
lib/cliapp/src/Obelisk/CliApp/Types.hs+16 lib/command/src/Obelisk/App.hs+1−5
lib/cliapp/src/Obelisk/CliApp/Types.hs+16
@@ -9,6 +9,10 @@ import Control.Concurrent.MVar (MVar)
99import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
1010import Control.Monad.Log (LoggingT, MonadLog, Severity (..), WithSeverity (..))
1111import 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)
1216import Data.IORef (IORef)
1317import Data.Text (Text)
1418
@@ -47,3 +51,15 @@ class Monad m => HasCliConfig m where
4751
4852instance Monad m => HasCliConfig (CliT m) where
4953 getCliConfig = CliT ask
54+
55+instance HasCliConfig m => HasCliConfig (ReaderT r m) where
56+ getCliConfig = lift getCliConfig
57+
58+instance (Monoid w, HasCliConfig m) => HasCliConfig (WriterT w m) where
59+ getCliConfig = lift getCliConfig
60+
61+instance HasCliConfig m => HasCliConfig (StateT s m) where
62+ getCliConfig = lift getCliConfig
63+
64+instance HasCliConfig m => HasCliConfig (ExceptT e m) where
65+ getCliConfig = lift getCliConfig
lib/command/src/Obelisk/App.hs+1−5
@@ -9,11 +9,10 @@ module Obelisk.App where
99
1010import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
1111import Control.Monad.Reader (MonadIO, ReaderT (..), ask, runReaderT)
12−import Control.Monad.Trans.Class (lift)
1312import System.Directory (XdgDirectory (XdgData), getXdgDirectory)
1413import Control.Monad.Log (MonadLog)
1514
16−import Obelisk.CliApp (CliConfig, CliT, HasCliConfig, getCliConfig, runCli, Output)
15+import Obelisk.CliApp (CliConfig, CliT, HasCliConfig, runCli, Output)
1716
1817newtype Obelisk = Obelisk
1918 { _obelisk_cliConfig :: CliConfig
@@ -34,9 +33,6 @@ class HasObelisk m where
3433instance Monad m => HasObelisk (ReaderT Obelisk m) where
3534 getObelisk = ask
3635
37−instance HasCliConfig m => HasCliConfig (ReaderT Obelisk m) where
38− getCliConfig = lift getCliConfig
39−
4036runObelisk :: MonadIO m => Obelisk -> ObeliskT m a -> m a
4137runObelisk c =
4238 runCli (_obelisk_cliConfig c)