on master help sign in
Merge pull request #242 from obsidiansystems/mtl-commute
7862167Luigy Leon
lib/cliapp/src/Obelisk/CliApp/Types.hs+16
@@ -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)
14
18
@@ -47,3 +51,15 @@ class Monad m => HasCliConfig m where
47
51
48instance Monad m => HasCliConfig (CliT m) where
52instance Monad m => HasCliConfig (CliT m) where
49 getCliConfig = CliT ask
53 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
9
9
10import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
10import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
11import Control.Monad.Reader (MonadIO, ReaderT (..), ask, runReaderT)
11import Control.Monad.Reader (MonadIO, ReaderT (..), ask, runReaderT)
12−import Control.Monad.Trans.Class (lift)
13import System.Directory (XdgDirectory (XdgData), getXdgDirectory)
12import System.Directory (XdgDirectory (XdgData), getXdgDirectory)
14import Control.Monad.Log (MonadLog)
13import Control.Monad.Log (MonadLog)
15
14
16−import Obelisk.CliApp (CliConfig, CliT, HasCliConfig, getCliConfig, runCli, Output)
15+import Obelisk.CliApp (CliConfig, CliT, HasCliConfig, runCli, Output)
17
16
18newtype Obelisk = Obelisk
17newtype Obelisk = Obelisk
19 { _obelisk_cliConfig :: CliConfig
18 { _obelisk_cliConfig :: CliConfig
@@ -34,9 +33,6 @@ class HasObelisk m where
34instance Monad m => HasObelisk (ReaderT Obelisk m) where
33instance Monad m => HasObelisk (ReaderT Obelisk m) where
35 getObelisk = ask
34 getObelisk = ask
36
35
37−instance HasCliConfig m => HasCliConfig (ReaderT Obelisk m) where
38− getCliConfig = lift getCliConfig
39−
40runObelisk :: MonadIO m => Obelisk -> ObeliskT m a -> m a
36runObelisk :: MonadIO m => Obelisk -> ObeliskT m a -> m a
41runObelisk c =
37runObelisk c =
42 runCli (_obelisk_cliConfig c)
38 runCli (_obelisk_cliConfig c)