{-# LANGUAGE UndecidableInstances #-}

-- | Provides the 'ShellT' monad transformer.
module Shrun.ShellT
  ( ShellT,
    runShellT,
  )
where

import Shrun.Configuration.Env.Types (Env)
import Shrun.Logging.MonadRegionLogger (MonadRegionLogger)
import Shrun.Notify.MonadAppleScript (MonadAppleScript)
import Shrun.Notify.MonadAppleScript qualified as MonadAppleScript
import Shrun.Notify.MonadDBus (MonadDBus)
import Shrun.Notify.MonadDBus qualified as MonadDBus
import Shrun.Notify.MonadNotify (MonadNotify (notify))
import Shrun.Notify.MonadNotifySend (MonadNotifySend)
import Shrun.Notify.MonadNotifySend qualified as MonadNotifySend
import Shrun.Notify.Types (NotifySystemP (AppleScript, DBus, NotifySend))
import Shrun.Prelude

-- | `ShellT` is the main application type that runs shell commands.
type ShellT :: Type -> (Type -> Type) -> Type -> Type
newtype ShellT env m a = MkShellT (ReaderT env m a)
  deriving
    ( (forall a b. (a -> b) -> ShellT env m a -> ShellT env m b)
-> (forall a b. a -> ShellT env m b -> ShellT env m a)
-> Functor (ShellT env m)
forall a b. a -> ShellT env m b -> ShellT env m a
forall a b. (a -> b) -> ShellT env m a -> ShellT env m b
forall env (m :: Type -> Type) a b.
Functor m =>
a -> ShellT env m b -> ShellT env m a
forall env (m :: Type -> Type) a b.
Functor m =>
(a -> b) -> ShellT env m a -> ShellT env m b
forall (f :: Type -> Type).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall env (m :: Type -> Type) a b.
Functor m =>
(a -> b) -> ShellT env m a -> ShellT env m b
fmap :: forall a b. (a -> b) -> ShellT env m a -> ShellT env m b
$c<$ :: forall env (m :: Type -> Type) a b.
Functor m =>
a -> ShellT env m b -> ShellT env m a
<$ :: forall a b. a -> ShellT env m b -> ShellT env m a
Functor,
      Functor (ShellT env m)
Functor (ShellT env m) =>
(forall a. a -> ShellT env m a)
-> (forall a b.
    ShellT env m (a -> b) -> ShellT env m a -> ShellT env m b)
-> (forall a b c.
    (a -> b -> c)
    -> ShellT env m a -> ShellT env m b -> ShellT env m c)
-> (forall a b. ShellT env m a -> ShellT env m b -> ShellT env m b)
-> (forall a b. ShellT env m a -> ShellT env m b -> ShellT env m a)
-> Applicative (ShellT env m)
forall a. a -> ShellT env m a
forall a b. ShellT env m a -> ShellT env m b -> ShellT env m a
forall a b. ShellT env m a -> ShellT env m b -> ShellT env m b
forall a b.
ShellT env m (a -> b) -> ShellT env m a -> ShellT env m b
forall a b c.
(a -> b -> c) -> ShellT env m a -> ShellT env m b -> ShellT env m c
forall env (m :: Type -> Type).
Applicative m =>
Functor (ShellT env m)
forall env (m :: Type -> Type) a.
Applicative m =>
a -> ShellT env m a
forall env (m :: Type -> Type) a b.
Applicative m =>
ShellT env m a -> ShellT env m b -> ShellT env m a
forall env (m :: Type -> Type) a b.
Applicative m =>
ShellT env m a -> ShellT env m b -> ShellT env m b
forall env (m :: Type -> Type) a b.
Applicative m =>
ShellT env m (a -> b) -> ShellT env m a -> ShellT env m b
forall env (m :: Type -> Type) a b c.
Applicative m =>
(a -> b -> c) -> ShellT env m a -> ShellT env m b -> ShellT env m c
forall (f :: Type -> Type).
Functor f =>
(forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
$cpure :: forall env (m :: Type -> Type) a.
Applicative m =>
a -> ShellT env m a
pure :: forall a. a -> ShellT env m a
$c<*> :: forall env (m :: Type -> Type) a b.
Applicative m =>
ShellT env m (a -> b) -> ShellT env m a -> ShellT env m b
<*> :: forall a b.
ShellT env m (a -> b) -> ShellT env m a -> ShellT env m b
$cliftA2 :: forall env (m :: Type -> Type) a b c.
Applicative m =>
(a -> b -> c) -> ShellT env m a -> ShellT env m b -> ShellT env m c
liftA2 :: forall a b c.
(a -> b -> c) -> ShellT env m a -> ShellT env m b -> ShellT env m c
$c*> :: forall env (m :: Type -> Type) a b.
Applicative m =>
ShellT env m a -> ShellT env m b -> ShellT env m b
*> :: forall a b. ShellT env m a -> ShellT env m b -> ShellT env m b
$c<* :: forall env (m :: Type -> Type) a b.
Applicative m =>
ShellT env m a -> ShellT env m b -> ShellT env m a
<* :: forall a b. ShellT env m a -> ShellT env m b -> ShellT env m a
Applicative,
      Applicative (ShellT env m)
Applicative (ShellT env m) =>
(forall a b.
 ShellT env m a -> (a -> ShellT env m b) -> ShellT env m b)
-> (forall a b. ShellT env m a -> ShellT env m b -> ShellT env m b)
-> (forall a. a -> ShellT env m a)
-> Monad (ShellT env m)
forall a. a -> ShellT env m a
forall a b. ShellT env m a -> ShellT env m b -> ShellT env m b
forall a b.
ShellT env m a -> (a -> ShellT env m b) -> ShellT env m b
forall env (m :: Type -> Type).
Monad m =>
Applicative (ShellT env m)
forall env (m :: Type -> Type) a. Monad m => a -> ShellT env m a
forall env (m :: Type -> Type) a b.
Monad m =>
ShellT env m a -> ShellT env m b -> ShellT env m b
forall env (m :: Type -> Type) a b.
Monad m =>
ShellT env m a -> (a -> ShellT env m b) -> ShellT env m b
forall (m :: Type -> Type).
Applicative m =>
(forall a b. m a -> (a -> m b) -> m b)
-> (forall a b. m a -> m b -> m b)
-> (forall a. a -> m a)
-> Monad m
$c>>= :: forall env (m :: Type -> Type) a b.
Monad m =>
ShellT env m a -> (a -> ShellT env m b) -> ShellT env m b
>>= :: forall a b.
ShellT env m a -> (a -> ShellT env m b) -> ShellT env m b
$c>> :: forall env (m :: Type -> Type) a b.
Monad m =>
ShellT env m a -> ShellT env m b -> ShellT env m b
>> :: forall a b. ShellT env m a -> ShellT env m b -> ShellT env m b
$creturn :: forall env (m :: Type -> Type) a. Monad m => a -> ShellT env m a
return :: forall a. a -> ShellT env m a
Monad,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(HasCallStack => Text -> ShellT env m (Maybe ByteString))
-> MonadAppleScript (ShellT env m)
HasCallStack => Text -> ShellT env m (Maybe ByteString)
forall env (m :: Type -> Type).
MonadAppleScript m =>
Monad (ShellT env m)
forall env (m :: Type -> Type).
(MonadAppleScript m, HasCallStack) =>
Text -> ShellT env m (Maybe ByteString)
forall (m :: Type -> Type).
Monad m =>
(HasCallStack => Text -> m (Maybe ByteString))
-> MonadAppleScript m
$cnotify :: forall env (m :: Type -> Type).
(MonadAppleScript m, HasCallStack) =>
Text -> ShellT env m (Maybe ByteString)
notify :: HasCallStack => Text -> ShellT env m (Maybe ByteString)
MonadAppleScript,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(forall a b.
 HasCallStack =>
 ShellT env m a -> (Async a -> ShellT env m b) -> ShellT env m b)
-> (forall a b.
    HasCallStack =>
    ShellT env m a -> (Async a -> ShellT env m b) -> ShellT env m b)
-> (forall a b.
    HasCallStack =>
    Int
    -> ShellT env m a -> (Async a -> ShellT env m b) -> ShellT env m b)
-> (forall a b.
    HasCallStack =>
    ((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
    -> (Async a -> ShellT env m b) -> ShellT env m b)
-> (forall a b.
    HasCallStack =>
    Int
    -> ((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
    -> (Async a -> ShellT env m b)
    -> ShellT env m b)
-> (forall a. HasCallStack => Async a -> ShellT env m a)
-> (forall a.
    HasCallStack =>
    Async a -> ShellT env m (Maybe (Either SomeException a)))
-> (forall a.
    HasCallStack =>
    Async a -> ShellT env m (Either SomeException a))
-> (forall a. HasCallStack => Async a -> ShellT env m ())
-> (forall a. HasCallStack => Async a -> ShellT env m ())
-> (forall e a.
    (Exception e, HasCallStack) =>
    Async a -> e -> ShellT env m ())
-> (forall a b.
    HasCallStack =>
    ShellT env m a -> ShellT env m b -> ShellT env m (Either a b))
-> (forall a b.
    HasCallStack =>
    ShellT env m a -> ShellT env m b -> ShellT env m (a, b))
-> (forall a b.
    HasCallStack =>
    ShellT env m a -> ShellT env m b -> ShellT env m ())
-> (forall a.
    HasCallStack =>
    [Async a] -> ShellT env m (Async a, a))
-> (forall a.
    HasCallStack =>
    [Async a] -> ShellT env m (Async a, Either SomeException a))
-> (forall a.
    HasCallStack =>
    [Async a] -> ShellT env m (Async a, a))
-> (forall a.
    HasCallStack =>
    [Async a] -> ShellT env m (Async a, Either SomeException a))
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> ShellT env m (Either a b))
-> (forall a b.
    HasCallStack =>
    Async a
    -> Async b
    -> ShellT
         env m (Either (Either SomeException a) (Either SomeException b)))
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> ShellT env m (Either a b))
-> (forall a b.
    HasCallStack =>
    Async a
    -> Async b
    -> ShellT
         env m (Either (Either SomeException a) (Either SomeException b)))
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> ShellT env m ())
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> ShellT env m (a, b))
-> (forall a.
    HasCallStack =>
    ShellT env m a -> ShellT env m (Async a))
-> (forall a.
    HasCallStack =>
    ShellT env m a -> ShellT env m (Async a))
-> (forall a.
    HasCallStack =>
    Int -> ShellT env m a -> ShellT env m (Async a))
-> (forall a.
    HasCallStack =>
    ((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
    -> ShellT env m (Async a))
-> (forall a.
    HasCallStack =>
    Int
    -> ((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
    -> ShellT env m (Async a))
-> (forall a. HasCallStack => Async a -> ShellT env m ())
-> (forall a.
    HasCallStack =>
    (SomeException -> Bool) -> Async a -> ShellT env m ())
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> ShellT env m ())
-> (forall a b.
    HasCallStack =>
    (SomeException -> Bool) -> Async a -> Async b -> ShellT env m ())
-> (forall (t :: Type -> Type) a b.
    (HasCallStack, Traversable t) =>
    Positive Int -> (a -> ShellT env m b) -> t a -> ShellT env m (t b))
-> (forall (t :: Type -> Type) a b.
    (HasCallStack, Traversable t) =>
    (a -> ShellT env m b) -> t a -> ShellT env m (t b))
-> (forall (f :: Type -> Type) a b.
    (Foldable f, HasCallStack) =>
    Positive Int -> (a -> ShellT env m b) -> f a -> ShellT env m ())
-> (forall (f :: Type -> Type) a b.
    (Foldable f, HasCallStack) =>
    (a -> ShellT env m b) -> f a -> ShellT env m ())
-> MonadAsync (ShellT env m)
forall a.
HasCallStack =>
Int -> ShellT env m a -> ShellT env m (Async a)
forall a.
HasCallStack =>
Int
-> ((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> ShellT env m (Async a)
forall a. HasCallStack => [Async a] -> ShellT env m (Async a, a)
forall a.
HasCallStack =>
[Async a] -> ShellT env m (Async a, Either SomeException a)
forall a. HasCallStack => Async a -> ShellT env m a
forall a.
HasCallStack =>
Async a -> ShellT env m (Maybe (Either SomeException a))
forall a.
HasCallStack =>
Async a -> ShellT env m (Either SomeException a)
forall a. HasCallStack => Async a -> ShellT env m ()
forall a. HasCallStack => ShellT env m a -> ShellT env m (Async a)
forall a.
HasCallStack =>
(SomeException -> Bool) -> Async a -> ShellT env m ()
forall a.
HasCallStack =>
((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> ShellT env m (Async a)
forall a b.
HasCallStack =>
Int
-> ShellT env m a -> (Async a -> ShellT env m b) -> ShellT env m b
forall a b.
HasCallStack =>
Int
-> ((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> (Async a -> ShellT env m b)
-> ShellT env m b
forall a b.
HasCallStack =>
Async a -> Async b -> ShellT env m (Either a b)
forall a b.
HasCallStack =>
Async a
-> Async b
-> ShellT
     env m (Either (Either SomeException a) (Either SomeException b))
forall a b. HasCallStack => Async a -> Async b -> ShellT env m ()
forall a b.
HasCallStack =>
Async a -> Async b -> ShellT env m (a, b)
forall a b.
HasCallStack =>
ShellT env m a -> ShellT env m b -> ShellT env m (Either a b)
forall a b.
HasCallStack =>
ShellT env m a -> ShellT env m b -> ShellT env m ()
forall a b.
HasCallStack =>
ShellT env m a -> ShellT env m b -> ShellT env m (a, b)
forall a b.
HasCallStack =>
ShellT env m a -> (Async a -> ShellT env m b) -> ShellT env m b
forall a b.
HasCallStack =>
(SomeException -> Bool) -> Async a -> Async b -> ShellT env m ()
forall a b.
HasCallStack =>
((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> (Async a -> ShellT env m b) -> ShellT env m b
forall e a.
(Exception e, HasCallStack) =>
Async a -> e -> ShellT env m ()
forall env (m :: Type -> Type).
MonadAsync m =>
Monad (ShellT env m)
forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Int -> ShellT env m a -> ShellT env m (Async a)
forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Int
-> ((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> ShellT env m (Async a)
forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
[Async a] -> ShellT env m (Async a, a)
forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
[Async a] -> ShellT env m (Async a, Either SomeException a)
forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Async a -> ShellT env m a
forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Async a -> ShellT env m (Maybe (Either SomeException a))
forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Async a -> ShellT env m (Either SomeException a)
forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Async a -> ShellT env m ()
forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
ShellT env m a -> ShellT env m (Async a)
forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
(SomeException -> Bool) -> Async a -> ShellT env m ()
forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> ShellT env m (Async a)
forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Int
-> ShellT env m a -> (Async a -> ShellT env m b) -> ShellT env m b
forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Int
-> ((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> (Async a -> ShellT env m b)
-> ShellT env m b
forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> ShellT env m (Either a b)
forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Async a
-> Async b
-> ShellT
     env m (Either (Either SomeException a) (Either SomeException b))
forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> ShellT env m ()
forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> ShellT env m (a, b)
forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
ShellT env m a -> ShellT env m b -> ShellT env m (Either a b)
forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
ShellT env m a -> ShellT env m b -> ShellT env m ()
forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
ShellT env m a -> ShellT env m b -> ShellT env m (a, b)
forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
ShellT env m a -> (Async a -> ShellT env m b) -> ShellT env m b
forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
(SomeException -> Bool) -> Async a -> Async b -> ShellT env m ()
forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> (Async a -> ShellT env m b) -> ShellT env m b
forall env (m :: Type -> Type) e a.
(MonadAsync m, Exception e, HasCallStack) =>
Async a -> e -> ShellT env m ()
forall env (m :: Type -> Type) (f :: Type -> Type) a b.
(MonadAsync m, Foldable f, HasCallStack) =>
Positive Int -> (a -> ShellT env m b) -> f a -> ShellT env m ()
forall env (m :: Type -> Type) (f :: Type -> Type) a b.
(MonadAsync m, Foldable f, HasCallStack) =>
(a -> ShellT env m b) -> f a -> ShellT env m ()
forall env (m :: Type -> Type) (t :: Type -> Type) a b.
(MonadAsync m, HasCallStack, Traversable t) =>
Positive Int -> (a -> ShellT env m b) -> t a -> ShellT env m (t b)
forall env (m :: Type -> Type) (t :: Type -> Type) a b.
(MonadAsync m, HasCallStack, Traversable t) =>
(a -> ShellT env m b) -> t a -> ShellT env m (t b)
forall (m :: Type -> Type).
Monad m =>
(forall a b. HasCallStack => m a -> (Async a -> m b) -> m b)
-> (forall a b. HasCallStack => m a -> (Async a -> m b) -> m b)
-> (forall a b.
    HasCallStack =>
    Int -> m a -> (Async a -> m b) -> m b)
-> (forall a b.
    HasCallStack =>
    ((forall c. m c -> m c) -> m a) -> (Async a -> m b) -> m b)
-> (forall a b.
    HasCallStack =>
    Int -> ((forall c. m c -> m c) -> m a) -> (Async a -> m b) -> m b)
-> (forall a. HasCallStack => Async a -> m a)
-> (forall a.
    HasCallStack =>
    Async a -> m (Maybe (Either SomeException a)))
-> (forall a.
    HasCallStack =>
    Async a -> m (Either SomeException a))
-> (forall a. HasCallStack => Async a -> m ())
-> (forall a. HasCallStack => Async a -> m ())
-> (forall e a.
    (Exception e, HasCallStack) =>
    Async a -> e -> m ())
-> (forall a b. HasCallStack => m a -> m b -> m (Either a b))
-> (forall a b. HasCallStack => m a -> m b -> m (a, b))
-> (forall a b. HasCallStack => m a -> m b -> m ())
-> (forall a. HasCallStack => [Async a] -> m (Async a, a))
-> (forall a.
    HasCallStack =>
    [Async a] -> m (Async a, Either SomeException a))
-> (forall a. HasCallStack => [Async a] -> m (Async a, a))
-> (forall a.
    HasCallStack =>
    [Async a] -> m (Async a, Either SomeException a))
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> m (Either a b))
-> (forall a b.
    HasCallStack =>
    Async a
    -> Async b
    -> m (Either (Either SomeException a) (Either SomeException b)))
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> m (Either a b))
-> (forall a b.
    HasCallStack =>
    Async a
    -> Async b
    -> m (Either (Either SomeException a) (Either SomeException b)))
-> (forall a b. HasCallStack => Async a -> Async b -> m ())
-> (forall a b. HasCallStack => Async a -> Async b -> m (a, b))
-> (forall a. HasCallStack => m a -> m (Async a))
-> (forall a. HasCallStack => m a -> m (Async a))
-> (forall a. HasCallStack => Int -> m a -> m (Async a))
-> (forall a.
    HasCallStack =>
    ((forall c. m c -> m c) -> m a) -> m (Async a))
-> (forall a.
    HasCallStack =>
    Int -> ((forall c. m c -> m c) -> m a) -> m (Async a))
-> (forall a. HasCallStack => Async a -> m ())
-> (forall a.
    HasCallStack =>
    (SomeException -> Bool) -> Async a -> m ())
-> (forall a b. HasCallStack => Async a -> Async b -> m ())
-> (forall a b.
    HasCallStack =>
    (SomeException -> Bool) -> Async a -> Async b -> m ())
-> (forall (t :: Type -> Type) a b.
    (HasCallStack, Traversable t) =>
    Positive Int -> (a -> m b) -> t a -> m (t b))
-> (forall (t :: Type -> Type) a b.
    (HasCallStack, Traversable t) =>
    (a -> m b) -> t a -> m (t b))
-> (forall (f :: Type -> Type) a b.
    (Foldable f, HasCallStack) =>
    Positive Int -> (a -> m b) -> f a -> m ())
-> (forall (f :: Type -> Type) a b.
    (Foldable f, HasCallStack) =>
    (a -> m b) -> f a -> m ())
-> MonadAsync m
forall (f :: Type -> Type) a b.
(Foldable f, HasCallStack) =>
Positive Int -> (a -> ShellT env m b) -> f a -> ShellT env m ()
forall (f :: Type -> Type) a b.
(Foldable f, HasCallStack) =>
(a -> ShellT env m b) -> f a -> ShellT env m ()
forall (t :: Type -> Type) a b.
(HasCallStack, Traversable t) =>
Positive Int -> (a -> ShellT env m b) -> t a -> ShellT env m (t b)
forall (t :: Type -> Type) a b.
(HasCallStack, Traversable t) =>
(a -> ShellT env m b) -> t a -> ShellT env m (t b)
$cwithAsync :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
ShellT env m a -> (Async a -> ShellT env m b) -> ShellT env m b
withAsync :: forall a b.
HasCallStack =>
ShellT env m a -> (Async a -> ShellT env m b) -> ShellT env m b
$cwithAsyncBound :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
ShellT env m a -> (Async a -> ShellT env m b) -> ShellT env m b
withAsyncBound :: forall a b.
HasCallStack =>
ShellT env m a -> (Async a -> ShellT env m b) -> ShellT env m b
$cwithAsyncOn :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Int
-> ShellT env m a -> (Async a -> ShellT env m b) -> ShellT env m b
withAsyncOn :: forall a b.
HasCallStack =>
Int
-> ShellT env m a -> (Async a -> ShellT env m b) -> ShellT env m b
$cwithAsyncWithUnmask :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> (Async a -> ShellT env m b) -> ShellT env m b
withAsyncWithUnmask :: forall a b.
HasCallStack =>
((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> (Async a -> ShellT env m b) -> ShellT env m b
$cwithAsyncOnWithUnmask :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Int
-> ((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> (Async a -> ShellT env m b)
-> ShellT env m b
withAsyncOnWithUnmask :: forall a b.
HasCallStack =>
Int
-> ((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> (Async a -> ShellT env m b)
-> ShellT env m b
$cwait :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Async a -> ShellT env m a
wait :: forall a. HasCallStack => Async a -> ShellT env m a
$cpoll :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Async a -> ShellT env m (Maybe (Either SomeException a))
poll :: forall a.
HasCallStack =>
Async a -> ShellT env m (Maybe (Either SomeException a))
$cwaitCatch :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Async a -> ShellT env m (Either SomeException a)
waitCatch :: forall a.
HasCallStack =>
Async a -> ShellT env m (Either SomeException a)
$ccancel :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Async a -> ShellT env m ()
cancel :: forall a. HasCallStack => Async a -> ShellT env m ()
$cuninterruptibleCancel :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Async a -> ShellT env m ()
uninterruptibleCancel :: forall a. HasCallStack => Async a -> ShellT env m ()
$ccancelWith :: forall env (m :: Type -> Type) e a.
(MonadAsync m, Exception e, HasCallStack) =>
Async a -> e -> ShellT env m ()
cancelWith :: forall e a.
(Exception e, HasCallStack) =>
Async a -> e -> ShellT env m ()
$crace :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
ShellT env m a -> ShellT env m b -> ShellT env m (Either a b)
race :: forall a b.
HasCallStack =>
ShellT env m a -> ShellT env m b -> ShellT env m (Either a b)
$cconcurrently :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
ShellT env m a -> ShellT env m b -> ShellT env m (a, b)
concurrently :: forall a b.
HasCallStack =>
ShellT env m a -> ShellT env m b -> ShellT env m (a, b)
$cconcurrently_ :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
ShellT env m a -> ShellT env m b -> ShellT env m ()
concurrently_ :: forall a b.
HasCallStack =>
ShellT env m a -> ShellT env m b -> ShellT env m ()
$cwaitAny :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
[Async a] -> ShellT env m (Async a, a)
waitAny :: forall a. HasCallStack => [Async a] -> ShellT env m (Async a, a)
$cwaitAnyCatch :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
[Async a] -> ShellT env m (Async a, Either SomeException a)
waitAnyCatch :: forall a.
HasCallStack =>
[Async a] -> ShellT env m (Async a, Either SomeException a)
$cwaitAnyCancel :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
[Async a] -> ShellT env m (Async a, a)
waitAnyCancel :: forall a. HasCallStack => [Async a] -> ShellT env m (Async a, a)
$cwaitAnyCatchCancel :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
[Async a] -> ShellT env m (Async a, Either SomeException a)
waitAnyCatchCancel :: forall a.
HasCallStack =>
[Async a] -> ShellT env m (Async a, Either SomeException a)
$cwaitEither :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> ShellT env m (Either a b)
waitEither :: forall a b.
HasCallStack =>
Async a -> Async b -> ShellT env m (Either a b)
$cwaitEitherCatch :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Async a
-> Async b
-> ShellT
     env m (Either (Either SomeException a) (Either SomeException b))
waitEitherCatch :: forall a b.
HasCallStack =>
Async a
-> Async b
-> ShellT
     env m (Either (Either SomeException a) (Either SomeException b))
$cwaitEitherCancel :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> ShellT env m (Either a b)
waitEitherCancel :: forall a b.
HasCallStack =>
Async a -> Async b -> ShellT env m (Either a b)
$cwaitEitherCatchCancel :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Async a
-> Async b
-> ShellT
     env m (Either (Either SomeException a) (Either SomeException b))
waitEitherCatchCancel :: forall a b.
HasCallStack =>
Async a
-> Async b
-> ShellT
     env m (Either (Either SomeException a) (Either SomeException b))
$cwaitEither_ :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> ShellT env m ()
waitEither_ :: forall a b. HasCallStack => Async a -> Async b -> ShellT env m ()
$cwaitBoth :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> ShellT env m (a, b)
waitBoth :: forall a b.
HasCallStack =>
Async a -> Async b -> ShellT env m (a, b)
$casync :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
ShellT env m a -> ShellT env m (Async a)
async :: forall a. HasCallStack => ShellT env m a -> ShellT env m (Async a)
$casyncBound :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
ShellT env m a -> ShellT env m (Async a)
asyncBound :: forall a. HasCallStack => ShellT env m a -> ShellT env m (Async a)
$casyncOn :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Int -> ShellT env m a -> ShellT env m (Async a)
asyncOn :: forall a.
HasCallStack =>
Int -> ShellT env m a -> ShellT env m (Async a)
$casyncWithUnmask :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> ShellT env m (Async a)
asyncWithUnmask :: forall a.
HasCallStack =>
((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> ShellT env m (Async a)
$casyncOnWithUnmask :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Int
-> ((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> ShellT env m (Async a)
asyncOnWithUnmask :: forall a.
HasCallStack =>
Int
-> ((forall c. ShellT env m c -> ShellT env m c) -> ShellT env m a)
-> ShellT env m (Async a)
$clink :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
Async a -> ShellT env m ()
link :: forall a. HasCallStack => Async a -> ShellT env m ()
$clinkOnly :: forall env (m :: Type -> Type) a.
(MonadAsync m, HasCallStack) =>
(SomeException -> Bool) -> Async a -> ShellT env m ()
linkOnly :: forall a.
HasCallStack =>
(SomeException -> Bool) -> Async a -> ShellT env m ()
$clink2 :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> ShellT env m ()
link2 :: forall a b. HasCallStack => Async a -> Async b -> ShellT env m ()
$clink2Only :: forall env (m :: Type -> Type) a b.
(MonadAsync m, HasCallStack) =>
(SomeException -> Bool) -> Async a -> Async b -> ShellT env m ()
link2Only :: forall a b.
HasCallStack =>
(SomeException -> Bool) -> Async a -> Async b -> ShellT env m ()
$cpooledMapConcurrentlyN :: forall env (m :: Type -> Type) (t :: Type -> Type) a b.
(MonadAsync m, HasCallStack, Traversable t) =>
Positive Int -> (a -> ShellT env m b) -> t a -> ShellT env m (t b)
pooledMapConcurrentlyN :: forall (t :: Type -> Type) a b.
(HasCallStack, Traversable t) =>
Positive Int -> (a -> ShellT env m b) -> t a -> ShellT env m (t b)
$cpooledMapConcurrently :: forall env (m :: Type -> Type) (t :: Type -> Type) a b.
(MonadAsync m, HasCallStack, Traversable t) =>
(a -> ShellT env m b) -> t a -> ShellT env m (t b)
pooledMapConcurrently :: forall (t :: Type -> Type) a b.
(HasCallStack, Traversable t) =>
(a -> ShellT env m b) -> t a -> ShellT env m (t b)
$cpooledMapConcurrentlyN_ :: forall env (m :: Type -> Type) (f :: Type -> Type) a b.
(MonadAsync m, Foldable f, HasCallStack) =>
Positive Int -> (a -> ShellT env m b) -> f a -> ShellT env m ()
pooledMapConcurrentlyN_ :: forall (f :: Type -> Type) a b.
(Foldable f, HasCallStack) =>
Positive Int -> (a -> ShellT env m b) -> f a -> ShellT env m ()
$cpooledMapConcurrently_ :: forall env (m :: Type -> Type) (f :: Type -> Type) a b.
(MonadAsync m, Foldable f, HasCallStack) =>
(a -> ShellT env m b) -> f a -> ShellT env m ()
pooledMapConcurrently_ :: forall (f :: Type -> Type) a b.
(Foldable f, HasCallStack) =>
(a -> ShellT env m b) -> f a -> ShellT env m ()
MonadAsync,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(HasCallStack => ShellT env m Client)
-> (HasCallStack =>
    Client -> Note -> ShellT env m (Maybe SomeException))
-> MonadDBus (ShellT env m)
HasCallStack => ShellT env m Client
HasCallStack =>
Client -> Note -> ShellT env m (Maybe SomeException)
forall env (m :: Type -> Type). MonadDBus m => Monad (ShellT env m)
forall env (m :: Type -> Type).
(MonadDBus m, HasCallStack) =>
ShellT env m Client
forall env (m :: Type -> Type).
(MonadDBus m, HasCallStack) =>
Client -> Note -> ShellT env m (Maybe SomeException)
forall (m :: Type -> Type).
Monad m =>
(HasCallStack => m Client)
-> (HasCallStack => Client -> Note -> m (Maybe SomeException))
-> MonadDBus m
$cconnectSession :: forall env (m :: Type -> Type).
(MonadDBus m, HasCallStack) =>
ShellT env m Client
connectSession :: HasCallStack => ShellT env m Client
$cnotify :: forall env (m :: Type -> Type).
(MonadDBus m, HasCallStack) =>
Client -> Note -> ShellT env m (Maybe SomeException)
notify :: HasCallStack =>
Client -> Note -> ShellT env m (Maybe SomeException)
MonadDBus,
      MonadThrow (ShellT env m)
MonadThrow (ShellT env m) =>
(forall e a.
 (HasCallStack, Exception e) =>
 ShellT env m a -> (e -> ShellT env m a) -> ShellT env m a)
-> MonadCatch (ShellT env m)
forall e a.
(HasCallStack, Exception e) =>
ShellT env m a -> (e -> ShellT env m a) -> ShellT env m a
forall env (m :: Type -> Type).
MonadCatch m =>
MonadThrow (ShellT env m)
forall env (m :: Type -> Type) e a.
(MonadCatch m, HasCallStack, Exception e) =>
ShellT env m a -> (e -> ShellT env m a) -> ShellT env m a
forall (m :: Type -> Type).
MonadThrow m =>
(forall e a.
 (HasCallStack, Exception e) =>
 m a -> (e -> m a) -> m a)
-> MonadCatch m
$ccatch :: forall env (m :: Type -> Type) e a.
(MonadCatch m, HasCallStack, Exception e) =>
ShellT env m a -> (e -> ShellT env m a) -> ShellT env m a
catch :: forall e a.
(HasCallStack, Exception e) =>
ShellT env m a -> (e -> ShellT env m a) -> ShellT env m a
MonadCatch,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(HasCallStack => OsPath -> ShellT env m ByteString)
-> MonadFileReader (ShellT env m)
HasCallStack => OsPath -> ShellT env m ByteString
forall env (m :: Type -> Type).
MonadFileReader m =>
Monad (ShellT env m)
forall env (m :: Type -> Type).
(MonadFileReader m, HasCallStack) =>
OsPath -> ShellT env m ByteString
forall (m :: Type -> Type).
Monad m =>
(HasCallStack => OsPath -> m ByteString) -> MonadFileReader m
$creadBinaryFile :: forall env (m :: Type -> Type).
(MonadFileReader m, HasCallStack) =>
OsPath -> ShellT env m ByteString
readBinaryFile :: HasCallStack => OsPath -> ShellT env m ByteString
MonadFileReader,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(HasCallStack => OsPath -> ByteString -> ShellT env m ())
-> (HasCallStack => OsPath -> ByteString -> ShellT env m ())
-> MonadFileWriter (ShellT env m)
HasCallStack => OsPath -> ByteString -> ShellT env m ()
forall env (m :: Type -> Type).
MonadFileWriter m =>
Monad (ShellT env m)
forall env (m :: Type -> Type).
(MonadFileWriter m, HasCallStack) =>
OsPath -> ByteString -> ShellT env m ()
forall (m :: Type -> Type).
Monad m =>
(HasCallStack => OsPath -> ByteString -> m ())
-> (HasCallStack => OsPath -> ByteString -> m ())
-> MonadFileWriter m
$cwriteBinaryFile :: forall env (m :: Type -> Type).
(MonadFileWriter m, HasCallStack) =>
OsPath -> ByteString -> ShellT env m ()
writeBinaryFile :: HasCallStack => OsPath -> ByteString -> ShellT env m ()
$cappendBinaryFile :: forall env (m :: Type -> Type).
(MonadFileWriter m, HasCallStack) =>
OsPath -> ByteString -> ShellT env m ()
appendBinaryFile :: HasCallStack => OsPath -> ByteString -> ShellT env m ()
MonadFileWriter,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(HasCallStack => Handle -> ShellT env m Bool)
-> (HasCallStack => Handle -> ShellT env m BufferMode)
-> (HasCallStack => Handle -> ShellT env m Bool)
-> (HasCallStack => Handle -> ShellT env m Bool)
-> (HasCallStack => Handle -> ShellT env m Bool)
-> (HasCallStack => Handle -> ShellT env m Bool)
-> (HasCallStack => Handle -> ShellT env m Bool)
-> (HasCallStack => Handle -> ShellT env m Bool)
-> (HasCallStack => Handle -> ShellT env m Bool)
-> (HasCallStack => Handle -> Int -> ShellT env m Bool)
-> (HasCallStack => Handle -> ShellT env m Bool)
-> (HasCallStack => Handle -> ShellT env m Char)
-> (HasCallStack => Handle -> ShellT env m ByteString)
-> (HasCallStack => Handle -> ShellT env m ByteString)
-> (HasCallStack => Handle -> Int -> ShellT env m ByteString)
-> (HasCallStack => Handle -> Int -> ShellT env m ByteString)
-> (HasCallStack => Handle -> Int -> ShellT env m ByteString)
-> MonadHandleReader (ShellT env m)
HasCallStack => Handle -> ShellT env m Bool
HasCallStack => Handle -> ShellT env m Char
HasCallStack => Handle -> ShellT env m ByteString
HasCallStack => Handle -> ShellT env m BufferMode
HasCallStack => Handle -> Int -> ShellT env m Bool
HasCallStack => Handle -> Int -> ShellT env m ByteString
forall env (m :: Type -> Type).
MonadHandleReader m =>
Monad (ShellT env m)
forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m Bool
forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m Char
forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m ByteString
forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m BufferMode
forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> Int -> ShellT env m Bool
forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> Int -> ShellT env m ByteString
forall (m :: Type -> Type).
Monad m =>
(HasCallStack => Handle -> m Bool)
-> (HasCallStack => Handle -> m BufferMode)
-> (HasCallStack => Handle -> m Bool)
-> (HasCallStack => Handle -> m Bool)
-> (HasCallStack => Handle -> m Bool)
-> (HasCallStack => Handle -> m Bool)
-> (HasCallStack => Handle -> m Bool)
-> (HasCallStack => Handle -> m Bool)
-> (HasCallStack => Handle -> m Bool)
-> (HasCallStack => Handle -> Int -> m Bool)
-> (HasCallStack => Handle -> m Bool)
-> (HasCallStack => Handle -> m Char)
-> (HasCallStack => Handle -> m ByteString)
-> (HasCallStack => Handle -> m ByteString)
-> (HasCallStack => Handle -> Int -> m ByteString)
-> (HasCallStack => Handle -> Int -> m ByteString)
-> (HasCallStack => Handle -> Int -> m ByteString)
-> MonadHandleReader m
$chIsEOF :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m Bool
hIsEOF :: HasCallStack => Handle -> ShellT env m Bool
$chGetBuffering :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m BufferMode
hGetBuffering :: HasCallStack => Handle -> ShellT env m BufferMode
$chIsOpen :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m Bool
hIsOpen :: HasCallStack => Handle -> ShellT env m Bool
$chIsClosed :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m Bool
hIsClosed :: HasCallStack => Handle -> ShellT env m Bool
$chIsReadable :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m Bool
hIsReadable :: HasCallStack => Handle -> ShellT env m Bool
$chIsWritable :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m Bool
hIsWritable :: HasCallStack => Handle -> ShellT env m Bool
$chIsSeekable :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m Bool
hIsSeekable :: HasCallStack => Handle -> ShellT env m Bool
$chIsTerminalDevice :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m Bool
hIsTerminalDevice :: HasCallStack => Handle -> ShellT env m Bool
$chGetEcho :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m Bool
hGetEcho :: HasCallStack => Handle -> ShellT env m Bool
$chWaitForInput :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> Int -> ShellT env m Bool
hWaitForInput :: HasCallStack => Handle -> Int -> ShellT env m Bool
$chReady :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m Bool
hReady :: HasCallStack => Handle -> ShellT env m Bool
$chGetChar :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m Char
hGetChar :: HasCallStack => Handle -> ShellT env m Char
$chGetLine :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m ByteString
hGetLine :: HasCallStack => Handle -> ShellT env m ByteString
$chGetContents :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> ShellT env m ByteString
hGetContents :: HasCallStack => Handle -> ShellT env m ByteString
$chGet :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> Int -> ShellT env m ByteString
hGet :: HasCallStack => Handle -> Int -> ShellT env m ByteString
$chGetSome :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> Int -> ShellT env m ByteString
hGetSome :: HasCallStack => Handle -> Int -> ShellT env m ByteString
$chGetNonBlocking :: forall env (m :: Type -> Type).
(MonadHandleReader m, HasCallStack) =>
Handle -> Int -> ShellT env m ByteString
hGetNonBlocking :: HasCallStack => Handle -> Int -> ShellT env m ByteString
MonadHandleReader,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(HasCallStack => OsPath -> IOMode -> ShellT env m Handle)
-> (forall a.
    HasCallStack =>
    OsPath -> IOMode -> (Handle -> ShellT env m a) -> ShellT env m a)
-> (HasCallStack => Handle -> ShellT env m ())
-> (HasCallStack => Handle -> ShellT env m ())
-> (HasCallStack => Handle -> Integer -> ShellT env m ())
-> (HasCallStack => Handle -> BufferMode -> ShellT env m ())
-> (HasCallStack =>
    Handle -> SeekMode -> Integer -> ShellT env m ())
-> (HasCallStack => Handle -> ShellT env m Integer)
-> (HasCallStack => Handle -> Bool -> ShellT env m ())
-> (HasCallStack => Handle -> ByteString -> ShellT env m ())
-> (HasCallStack =>
    Handle -> ByteString -> ShellT env m ByteString)
-> MonadHandleWriter (ShellT env m)
HasCallStack => Handle -> ShellT env m Integer
HasCallStack => Handle -> ShellT env m ()
HasCallStack => Handle -> Bool -> ShellT env m ()
HasCallStack => Handle -> Integer -> ShellT env m ()
HasCallStack => Handle -> ByteString -> ShellT env m ()
HasCallStack => Handle -> ByteString -> ShellT env m ByteString
HasCallStack => Handle -> SeekMode -> Integer -> ShellT env m ()
HasCallStack => Handle -> BufferMode -> ShellT env m ()
HasCallStack => OsPath -> IOMode -> ShellT env m Handle
forall a.
HasCallStack =>
OsPath -> IOMode -> (Handle -> ShellT env m a) -> ShellT env m a
forall env (m :: Type -> Type).
MonadHandleWriter m =>
Monad (ShellT env m)
forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ShellT env m Integer
forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ShellT env m ()
forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> Bool -> ShellT env m ()
forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> Integer -> ShellT env m ()
forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ByteString -> ShellT env m ()
forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ByteString -> ShellT env m ByteString
forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> SeekMode -> Integer -> ShellT env m ()
forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> BufferMode -> ShellT env m ()
forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
OsPath -> IOMode -> ShellT env m Handle
forall env (m :: Type -> Type) a.
(MonadHandleWriter m, HasCallStack) =>
OsPath -> IOMode -> (Handle -> ShellT env m a) -> ShellT env m a
forall (m :: Type -> Type).
Monad m =>
(HasCallStack => OsPath -> IOMode -> m Handle)
-> (forall a.
    HasCallStack =>
    OsPath -> IOMode -> (Handle -> m a) -> m a)
-> (HasCallStack => Handle -> m ())
-> (HasCallStack => Handle -> m ())
-> (HasCallStack => Handle -> Integer -> m ())
-> (HasCallStack => Handle -> BufferMode -> m ())
-> (HasCallStack => Handle -> SeekMode -> Integer -> m ())
-> (HasCallStack => Handle -> m Integer)
-> (HasCallStack => Handle -> Bool -> m ())
-> (HasCallStack => Handle -> ByteString -> m ())
-> (HasCallStack => Handle -> ByteString -> m ByteString)
-> MonadHandleWriter m
$copenBinaryFile :: forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
OsPath -> IOMode -> ShellT env m Handle
openBinaryFile :: HasCallStack => OsPath -> IOMode -> ShellT env m Handle
$cwithBinaryFile :: forall env (m :: Type -> Type) a.
(MonadHandleWriter m, HasCallStack) =>
OsPath -> IOMode -> (Handle -> ShellT env m a) -> ShellT env m a
withBinaryFile :: forall a.
HasCallStack =>
OsPath -> IOMode -> (Handle -> ShellT env m a) -> ShellT env m a
$chClose :: forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ShellT env m ()
hClose :: HasCallStack => Handle -> ShellT env m ()
$chFlush :: forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ShellT env m ()
hFlush :: HasCallStack => Handle -> ShellT env m ()
$chSetFileSize :: forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> Integer -> ShellT env m ()
hSetFileSize :: HasCallStack => Handle -> Integer -> ShellT env m ()
$chSetBuffering :: forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> BufferMode -> ShellT env m ()
hSetBuffering :: HasCallStack => Handle -> BufferMode -> ShellT env m ()
$chSeek :: forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> SeekMode -> Integer -> ShellT env m ()
hSeek :: HasCallStack => Handle -> SeekMode -> Integer -> ShellT env m ()
$chTell :: forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ShellT env m Integer
hTell :: HasCallStack => Handle -> ShellT env m Integer
$chSetEcho :: forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> Bool -> ShellT env m ()
hSetEcho :: HasCallStack => Handle -> Bool -> ShellT env m ()
$chPut :: forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ByteString -> ShellT env m ()
hPut :: HasCallStack => Handle -> ByteString -> ShellT env m ()
$chPutNonBlocking :: forall env (m :: Type -> Type).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ByteString -> ShellT env m ByteString
hPutNonBlocking :: HasCallStack => Handle -> ByteString -> ShellT env m ByteString
MonadHandleWriter,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(forall a. IO a -> ShellT env m a) -> MonadIO (ShellT env m)
forall a. IO a -> ShellT env m a
forall env (m :: Type -> Type). MonadIO m => Monad (ShellT env m)
forall env (m :: Type -> Type) a.
MonadIO m =>
IO a -> ShellT env m a
forall (m :: Type -> Type).
Monad m =>
(forall a. IO a -> m a) -> MonadIO m
$cliftIO :: forall env (m :: Type -> Type) a.
MonadIO m =>
IO a -> ShellT env m a
liftIO :: forall a. IO a -> ShellT env m a
MonadIO,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(forall a. HasCallStack => a -> ShellT env m (IORef a))
-> (forall a. HasCallStack => IORef a -> ShellT env m a)
-> (forall a. HasCallStack => IORef a -> a -> ShellT env m ())
-> (forall a. HasCallStack => IORef a -> a -> ShellT env m ())
-> (forall a.
    HasCallStack =>
    IORef a -> (a -> a) -> ShellT env m ())
-> (forall a b.
    HasCallStack =>
    IORef a -> (a -> (a, b)) -> ShellT env m b)
-> MonadIORef (ShellT env m)
forall a. HasCallStack => a -> ShellT env m (IORef a)
forall a. HasCallStack => IORef a -> ShellT env m a
forall a. HasCallStack => IORef a -> a -> ShellT env m ()
forall a. HasCallStack => IORef a -> (a -> a) -> ShellT env m ()
forall a b.
HasCallStack =>
IORef a -> (a -> (a, b)) -> ShellT env m b
forall env (m :: Type -> Type).
MonadIORef m =>
Monad (ShellT env m)
forall env (m :: Type -> Type) a.
(MonadIORef m, HasCallStack) =>
a -> ShellT env m (IORef a)
forall env (m :: Type -> Type) a.
(MonadIORef m, HasCallStack) =>
IORef a -> ShellT env m a
forall env (m :: Type -> Type) a.
(MonadIORef m, HasCallStack) =>
IORef a -> a -> ShellT env m ()
forall env (m :: Type -> Type) a.
(MonadIORef m, HasCallStack) =>
IORef a -> (a -> a) -> ShellT env m ()
forall env (m :: Type -> Type) a b.
(MonadIORef m, HasCallStack) =>
IORef a -> (a -> (a, b)) -> ShellT env m b
forall (m :: Type -> Type).
Monad m =>
(forall a. HasCallStack => a -> m (IORef a))
-> (forall a. HasCallStack => IORef a -> m a)
-> (forall a. HasCallStack => IORef a -> a -> m ())
-> (forall a. HasCallStack => IORef a -> a -> m ())
-> (forall a. HasCallStack => IORef a -> (a -> a) -> m ())
-> (forall a b. HasCallStack => IORef a -> (a -> (a, b)) -> m b)
-> MonadIORef m
$cnewIORef :: forall env (m :: Type -> Type) a.
(MonadIORef m, HasCallStack) =>
a -> ShellT env m (IORef a)
newIORef :: forall a. HasCallStack => a -> ShellT env m (IORef a)
$creadIORef :: forall env (m :: Type -> Type) a.
(MonadIORef m, HasCallStack) =>
IORef a -> ShellT env m a
readIORef :: forall a. HasCallStack => IORef a -> ShellT env m a
$cwriteIORef :: forall env (m :: Type -> Type) a.
(MonadIORef m, HasCallStack) =>
IORef a -> a -> ShellT env m ()
writeIORef :: forall a. HasCallStack => IORef a -> a -> ShellT env m ()
$catomicWriteIORef :: forall env (m :: Type -> Type) a.
(MonadIORef m, HasCallStack) =>
IORef a -> a -> ShellT env m ()
atomicWriteIORef :: forall a. HasCallStack => IORef a -> a -> ShellT env m ()
$cmodifyIORef' :: forall env (m :: Type -> Type) a.
(MonadIORef m, HasCallStack) =>
IORef a -> (a -> a) -> ShellT env m ()
modifyIORef' :: forall a. HasCallStack => IORef a -> (a -> a) -> ShellT env m ()
$catomicModifyIORef' :: forall env (m :: Type -> Type) a b.
(MonadIORef m, HasCallStack) =>
IORef a -> (a -> (a, b)) -> ShellT env m b
atomicModifyIORef' :: forall a b.
HasCallStack =>
IORef a -> (a -> (a, b)) -> ShellT env m b
MonadIORef,
      MonadCatch (ShellT env m)
MonadCatch (ShellT env m) =>
(forall b.
 HasCallStack =>
 ((forall a. ShellT env m a -> ShellT env m a) -> ShellT env m b)
 -> ShellT env m b)
-> (forall b.
    HasCallStack =>
    ((forall a. ShellT env m a -> ShellT env m a) -> ShellT env m b)
    -> ShellT env m b)
-> (forall a b c.
    HasCallStack =>
    ShellT env m a
    -> (a -> ExitCase b -> ShellT env m c)
    -> (a -> ShellT env m b)
    -> ShellT env m (b, c))
-> MonadMask (ShellT env m)
forall b.
HasCallStack =>
((forall a. ShellT env m a -> ShellT env m a) -> ShellT env m b)
-> ShellT env m b
forall a b c.
HasCallStack =>
ShellT env m a
-> (a -> ExitCase b -> ShellT env m c)
-> (a -> ShellT env m b)
-> ShellT env m (b, c)
forall env (m :: Type -> Type).
MonadMask m =>
MonadCatch (ShellT env m)
forall env (m :: Type -> Type) b.
(MonadMask m, HasCallStack) =>
((forall a. ShellT env m a -> ShellT env m a) -> ShellT env m b)
-> ShellT env m b
forall env (m :: Type -> Type) a b c.
(MonadMask m, HasCallStack) =>
ShellT env m a
-> (a -> ExitCase b -> ShellT env m c)
-> (a -> ShellT env m b)
-> ShellT env m (b, c)
forall (m :: Type -> Type).
MonadCatch m =>
(forall b. HasCallStack => ((forall a. m a -> m a) -> m b) -> m b)
-> (forall b.
    HasCallStack =>
    ((forall a. m a -> m a) -> m b) -> m b)
-> (forall a b c.
    HasCallStack =>
    m a -> (a -> ExitCase b -> m c) -> (a -> m b) -> m (b, c))
-> MonadMask m
$cmask :: forall env (m :: Type -> Type) b.
(MonadMask m, HasCallStack) =>
((forall a. ShellT env m a -> ShellT env m a) -> ShellT env m b)
-> ShellT env m b
mask :: forall b.
HasCallStack =>
((forall a. ShellT env m a -> ShellT env m a) -> ShellT env m b)
-> ShellT env m b
$cuninterruptibleMask :: forall env (m :: Type -> Type) b.
(MonadMask m, HasCallStack) =>
((forall a. ShellT env m a -> ShellT env m a) -> ShellT env m b)
-> ShellT env m b
uninterruptibleMask :: forall b.
HasCallStack =>
((forall a. ShellT env m a -> ShellT env m a) -> ShellT env m b)
-> ShellT env m b
$cgeneralBracket :: forall env (m :: Type -> Type) a b c.
(MonadMask m, HasCallStack) =>
ShellT env m a
-> (a -> ExitCase b -> ShellT env m c)
-> (a -> ShellT env m b)
-> ShellT env m (b, c)
generalBracket :: forall a b c.
HasCallStack =>
ShellT env m a
-> (a -> ExitCase b -> ShellT env m c)
-> (a -> ShellT env m b)
-> ShellT env m (b, c)
MonadMask,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(HasCallStack => Text -> ShellT env m (Maybe ByteString))
-> MonadNotifySend (ShellT env m)
HasCallStack => Text -> ShellT env m (Maybe ByteString)
forall env (m :: Type -> Type).
MonadNotifySend m =>
Monad (ShellT env m)
forall env (m :: Type -> Type).
(MonadNotifySend m, HasCallStack) =>
Text -> ShellT env m (Maybe ByteString)
forall (m :: Type -> Type).
Monad m =>
(HasCallStack => Text -> m (Maybe ByteString)) -> MonadNotifySend m
$cnotify :: forall env (m :: Type -> Type).
(MonadNotifySend m, HasCallStack) =>
Text -> ShellT env m (Maybe ByteString)
notify :: HasCallStack => Text -> ShellT env m (Maybe ByteString)
MonadNotifySend,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(HasCallStack => OsPath -> ShellT env m ())
-> (HasCallStack => Bool -> OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> ShellT env m ())
-> (forall a.
    HasCallStack =>
    OsPath -> ShellT env m a -> ShellT env m a)
-> (HasCallStack => OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> Permissions -> ShellT env m ())
-> (HasCallStack => OsPath -> OsPath -> ShellT env m ())
-> (HasCallStack => OsPath -> UTCTime -> ShellT env m ())
-> (HasCallStack => OsPath -> UTCTime -> ShellT env m ())
-> MonadPathWriter (ShellT env m)
HasCallStack => Bool -> OsPath -> ShellT env m ()
HasCallStack => OsPath -> ShellT env m ()
HasCallStack => OsPath -> UTCTime -> ShellT env m ()
HasCallStack => OsPath -> OsPath -> ShellT env m ()
HasCallStack => OsPath -> Permissions -> ShellT env m ()
forall a.
HasCallStack =>
OsPath -> ShellT env m a -> ShellT env m a
forall env (m :: Type -> Type).
MonadPathWriter m =>
Monad (ShellT env m)
forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
Bool -> OsPath -> ShellT env m ()
forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> ShellT env m ()
forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> UTCTime -> ShellT env m ()
forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> ShellT env m ()
forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> Permissions -> ShellT env m ()
forall env (m :: Type -> Type) a.
(MonadPathWriter m, HasCallStack) =>
OsPath -> ShellT env m a -> ShellT env m a
forall (m :: Type -> Type).
Monad m =>
(HasCallStack => OsPath -> m ())
-> (HasCallStack => Bool -> OsPath -> m ())
-> (HasCallStack => OsPath -> m ())
-> (HasCallStack => OsPath -> m ())
-> (HasCallStack => OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> m ())
-> (forall a. HasCallStack => OsPath -> m a -> m a)
-> (HasCallStack => OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> m ())
-> (HasCallStack => OsPath -> Permissions -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> UTCTime -> m ())
-> (HasCallStack => OsPath -> UTCTime -> m ())
-> MonadPathWriter m
$ccreateDirectory :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> ShellT env m ()
createDirectory :: HasCallStack => OsPath -> ShellT env m ()
$ccreateDirectoryIfMissing :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
Bool -> OsPath -> ShellT env m ()
createDirectoryIfMissing :: HasCallStack => Bool -> OsPath -> ShellT env m ()
$cremoveDirectory :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> ShellT env m ()
removeDirectory :: HasCallStack => OsPath -> ShellT env m ()
$cremoveDirectoryRecursive :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> ShellT env m ()
removeDirectoryRecursive :: HasCallStack => OsPath -> ShellT env m ()
$cremovePathForcibly :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> ShellT env m ()
removePathForcibly :: HasCallStack => OsPath -> ShellT env m ()
$crenameDirectory :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> ShellT env m ()
renameDirectory :: HasCallStack => OsPath -> OsPath -> ShellT env m ()
$csetCurrentDirectory :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> ShellT env m ()
setCurrentDirectory :: HasCallStack => OsPath -> ShellT env m ()
$cwithCurrentDirectory :: forall env (m :: Type -> Type) a.
(MonadPathWriter m, HasCallStack) =>
OsPath -> ShellT env m a -> ShellT env m a
withCurrentDirectory :: forall a.
HasCallStack =>
OsPath -> ShellT env m a -> ShellT env m a
$cremoveFile :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> ShellT env m ()
removeFile :: HasCallStack => OsPath -> ShellT env m ()
$crenameFile :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> ShellT env m ()
renameFile :: HasCallStack => OsPath -> OsPath -> ShellT env m ()
$crenamePath :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> ShellT env m ()
renamePath :: HasCallStack => OsPath -> OsPath -> ShellT env m ()
$ccopyFile :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> ShellT env m ()
copyFile :: HasCallStack => OsPath -> OsPath -> ShellT env m ()
$ccopyFileWithMetadata :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> ShellT env m ()
copyFileWithMetadata :: HasCallStack => OsPath -> OsPath -> ShellT env m ()
$ccreateFileLink :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> ShellT env m ()
createFileLink :: HasCallStack => OsPath -> OsPath -> ShellT env m ()
$ccreateDirectoryLink :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> ShellT env m ()
createDirectoryLink :: HasCallStack => OsPath -> OsPath -> ShellT env m ()
$cremoveDirectoryLink :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> ShellT env m ()
removeDirectoryLink :: HasCallStack => OsPath -> ShellT env m ()
$csetPermissions :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> Permissions -> ShellT env m ()
setPermissions :: HasCallStack => OsPath -> Permissions -> ShellT env m ()
$ccopyPermissions :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> ShellT env m ()
copyPermissions :: HasCallStack => OsPath -> OsPath -> ShellT env m ()
$csetAccessTime :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> UTCTime -> ShellT env m ()
setAccessTime :: HasCallStack => OsPath -> UTCTime -> ShellT env m ()
$csetModificationTime :: forall env (m :: Type -> Type).
(MonadPathWriter m, HasCallStack) =>
OsPath -> UTCTime -> ShellT env m ()
setModificationTime :: HasCallStack => OsPath -> UTCTime -> ShellT env m ()
MonadPathWriter,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(forall stdin stdout stderr.
 HasCallStack =>
 ProcessConfig stdin stdout stderr -> ShellT env m ExitCode)
-> (forall stdin stdoutIgnored stderrIgnored.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderrIgnored
    -> ShellT env m (ExitCode, ByteString, ByteString))
-> (forall stdin stdoutIgnored stderr.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderr
    -> ShellT env m (ExitCode, ByteString))
-> (forall stdin stdoutIgnored stderr.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderr
    -> ShellT env m (ExitCode, ByteString))
-> (forall stdin stdoutIgnored stderr.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderr
    -> ShellT env m (ExitCode, ByteString))
-> (forall stdin stdout stderr a.
    HasCallStack =>
    ProcessConfig stdin stdout stderr
    -> (Process stdin stdout stderr -> ShellT env m a)
    -> ShellT env m a)
-> (forall stdin stdout stderr a.
    HasCallStack =>
    ProcessConfig stdin stdout stderr
    -> (Process stdin stdout stderr -> ShellT env m a)
    -> ShellT env m a)
-> (forall stdin stdout stderr.
    HasCallStack =>
    ProcessConfig stdin stdout stderr
    -> ShellT env m (Process stdin stdout stderr))
-> (forall stdin stdout stderr.
    HasCallStack =>
    Process stdin stdout stderr -> ShellT env m ())
-> (forall stdin stdout stderr.
    HasCallStack =>
    ProcessConfig stdin stdout stderr -> ShellT env m ())
-> (forall stdin stdoutIgnored stderrIgnored.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderrIgnored
    -> ShellT env m (ByteString, ByteString))
-> (forall stdin stdoutIgnored stderr.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderr
    -> ShellT env m ByteString)
-> (forall stdin stdoutIgnored stderr.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderr
    -> ShellT env m ByteString)
-> (forall stdin stdoutIgnored stderr.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderr
    -> ShellT env m ByteString)
-> (forall stdin stdout stderr a.
    HasCallStack =>
    ProcessConfig stdin stdout stderr
    -> (Process stdin stdout stderr -> ShellT env m a)
    -> ShellT env m a)
-> (forall stdin stdout stderr a.
    HasCallStack =>
    ProcessConfig stdin stdout stderr
    -> (Process stdin stdout stderr -> ShellT env m a)
    -> ShellT env m a)
-> (forall stdin stdout stderr.
    HasCallStack =>
    Process stdin stdout stderr -> ShellT env m ExitCode)
-> (forall stdin stdout stderr.
    HasCallStack =>
    Process stdin stdout stderr -> ShellT env m (Maybe ExitCode))
-> (forall stdin stdout stderr.
    HasCallStack =>
    Process stdin stdout stderr -> ShellT env m ())
-> MonadTypedProcess (ShellT env m)
forall stdin stdout stderr.
HasCallStack =>
Process stdin stdout stderr -> ShellT env m (Maybe ExitCode)
forall stdin stdout stderr.
HasCallStack =>
Process stdin stdout stderr -> ShellT env m ()
forall stdin stdout stderr.
HasCallStack =>
Process stdin stdout stderr -> ShellT env m ExitCode
forall stdin stdout stderr.
HasCallStack =>
ProcessConfig stdin stdout stderr -> ShellT env m ()
forall stdin stdoutIgnored stderrIgnored.
HasCallStack =>
ProcessConfig stdin stdoutIgnored stderrIgnored
-> ShellT env m (ByteString, ByteString)
forall stdin stdoutIgnored stderr.
HasCallStack =>
ProcessConfig stdin stdoutIgnored stderr
-> ShellT env m (ExitCode, ByteString)
forall stdin stdoutIgnored stderrIgnored.
HasCallStack =>
ProcessConfig stdin stdoutIgnored stderrIgnored
-> ShellT env m (ExitCode, ByteString, ByteString)
forall stdin stdoutIgnored stderr.
HasCallStack =>
ProcessConfig stdin stdoutIgnored stderr -> ShellT env m ByteString
forall stdin stdout stderr.
HasCallStack =>
ProcessConfig stdin stdout stderr -> ShellT env m ExitCode
forall stdin stdout stderr.
HasCallStack =>
ProcessConfig stdin stdout stderr
-> ShellT env m (Process stdin stdout stderr)
forall stdin stdout stderr a.
HasCallStack =>
ProcessConfig stdin stdout stderr
-> (Process stdin stdout stderr -> ShellT env m a)
-> ShellT env m a
forall env (m :: Type -> Type).
MonadTypedProcess m =>
Monad (ShellT env m)
forall env (m :: Type -> Type) stdin stdout stderr.
(MonadTypedProcess m, HasCallStack) =>
Process stdin stdout stderr -> ShellT env m (Maybe ExitCode)
forall env (m :: Type -> Type) stdin stdout stderr.
(MonadTypedProcess m, HasCallStack) =>
Process stdin stdout stderr -> ShellT env m ()
forall env (m :: Type -> Type) stdin stdout stderr.
(MonadTypedProcess m, HasCallStack) =>
Process stdin stdout stderr -> ShellT env m ExitCode
forall env (m :: Type -> Type) stdin stdout stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdout stderr -> ShellT env m ()
forall env (m :: Type -> Type) stdin stdoutIgnored stderrIgnored.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdoutIgnored stderrIgnored
-> ShellT env m (ByteString, ByteString)
forall env (m :: Type -> Type) stdin stdoutIgnored stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdoutIgnored stderr
-> ShellT env m (ExitCode, ByteString)
forall env (m :: Type -> Type) stdin stdoutIgnored stderrIgnored.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdoutIgnored stderrIgnored
-> ShellT env m (ExitCode, ByteString, ByteString)
forall env (m :: Type -> Type) stdin stdoutIgnored stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdoutIgnored stderr -> ShellT env m ByteString
forall env (m :: Type -> Type) stdin stdout stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdout stderr -> ShellT env m ExitCode
forall env (m :: Type -> Type) stdin stdout stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdout stderr
-> ShellT env m (Process stdin stdout stderr)
forall env (m :: Type -> Type) stdin stdout stderr a.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdout stderr
-> (Process stdin stdout stderr -> ShellT env m a)
-> ShellT env m a
forall (m :: Type -> Type).
Monad m =>
(forall stdin stdout stderr.
 HasCallStack =>
 ProcessConfig stdin stdout stderr -> m ExitCode)
-> (forall stdin stdoutIgnored stderrIgnored.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderrIgnored
    -> m (ExitCode, ByteString, ByteString))
-> (forall stdin stdoutIgnored stderr.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderr
    -> m (ExitCode, ByteString))
-> (forall stdin stdoutIgnored stderr.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderr
    -> m (ExitCode, ByteString))
-> (forall stdin stdoutIgnored stderr.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderr
    -> m (ExitCode, ByteString))
-> (forall stdin stdout stderr a.
    HasCallStack =>
    ProcessConfig stdin stdout stderr
    -> (Process stdin stdout stderr -> m a) -> m a)
-> (forall stdin stdout stderr a.
    HasCallStack =>
    ProcessConfig stdin stdout stderr
    -> (Process stdin stdout stderr -> m a) -> m a)
-> (forall stdin stdout stderr.
    HasCallStack =>
    ProcessConfig stdin stdout stderr
    -> m (Process stdin stdout stderr))
-> (forall stdin stdout stderr.
    HasCallStack =>
    Process stdin stdout stderr -> m ())
-> (forall stdin stdout stderr.
    HasCallStack =>
    ProcessConfig stdin stdout stderr -> m ())
-> (forall stdin stdoutIgnored stderrIgnored.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderrIgnored
    -> m (ByteString, ByteString))
-> (forall stdin stdoutIgnored stderr.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderr -> m ByteString)
-> (forall stdin stdoutIgnored stderr.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderr -> m ByteString)
-> (forall stdin stdoutIgnored stderr.
    HasCallStack =>
    ProcessConfig stdin stdoutIgnored stderr -> m ByteString)
-> (forall stdin stdout stderr a.
    HasCallStack =>
    ProcessConfig stdin stdout stderr
    -> (Process stdin stdout stderr -> m a) -> m a)
-> (forall stdin stdout stderr a.
    HasCallStack =>
    ProcessConfig stdin stdout stderr
    -> (Process stdin stdout stderr -> m a) -> m a)
-> (forall stdin stdout stderr.
    HasCallStack =>
    Process stdin stdout stderr -> m ExitCode)
-> (forall stdin stdout stderr.
    HasCallStack =>
    Process stdin stdout stderr -> m (Maybe ExitCode))
-> (forall stdin stdout stderr.
    HasCallStack =>
    Process stdin stdout stderr -> m ())
-> MonadTypedProcess m
$crunProcess :: forall env (m :: Type -> Type) stdin stdout stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdout stderr -> ShellT env m ExitCode
runProcess :: forall stdin stdout stderr.
HasCallStack =>
ProcessConfig stdin stdout stderr -> ShellT env m ExitCode
$creadProcess :: forall env (m :: Type -> Type) stdin stdoutIgnored stderrIgnored.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdoutIgnored stderrIgnored
-> ShellT env m (ExitCode, ByteString, ByteString)
readProcess :: forall stdin stdoutIgnored stderrIgnored.
HasCallStack =>
ProcessConfig stdin stdoutIgnored stderrIgnored
-> ShellT env m (ExitCode, ByteString, ByteString)
$creadProcessStdout :: forall env (m :: Type -> Type) stdin stdoutIgnored stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdoutIgnored stderr
-> ShellT env m (ExitCode, ByteString)
readProcessStdout :: forall stdin stdoutIgnored stderr.
HasCallStack =>
ProcessConfig stdin stdoutIgnored stderr
-> ShellT env m (ExitCode, ByteString)
$creadProcessStderr :: forall env (m :: Type -> Type) stdin stdoutIgnored stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdoutIgnored stderr
-> ShellT env m (ExitCode, ByteString)
readProcessStderr :: forall stdin stdoutIgnored stderr.
HasCallStack =>
ProcessConfig stdin stdoutIgnored stderr
-> ShellT env m (ExitCode, ByteString)
$creadProcessInterleaved :: forall env (m :: Type -> Type) stdin stdoutIgnored stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdoutIgnored stderr
-> ShellT env m (ExitCode, ByteString)
readProcessInterleaved :: forall stdin stdoutIgnored stderr.
HasCallStack =>
ProcessConfig stdin stdoutIgnored stderr
-> ShellT env m (ExitCode, ByteString)
$cwithProcessWait :: forall env (m :: Type -> Type) stdin stdout stderr a.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdout stderr
-> (Process stdin stdout stderr -> ShellT env m a)
-> ShellT env m a
withProcessWait :: forall stdin stdout stderr a.
HasCallStack =>
ProcessConfig stdin stdout stderr
-> (Process stdin stdout stderr -> ShellT env m a)
-> ShellT env m a
$cwithProcessTerm :: forall env (m :: Type -> Type) stdin stdout stderr a.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdout stderr
-> (Process stdin stdout stderr -> ShellT env m a)
-> ShellT env m a
withProcessTerm :: forall stdin stdout stderr a.
HasCallStack =>
ProcessConfig stdin stdout stderr
-> (Process stdin stdout stderr -> ShellT env m a)
-> ShellT env m a
$cstartProcess :: forall env (m :: Type -> Type) stdin stdout stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdout stderr
-> ShellT env m (Process stdin stdout stderr)
startProcess :: forall stdin stdout stderr.
HasCallStack =>
ProcessConfig stdin stdout stderr
-> ShellT env m (Process stdin stdout stderr)
$cstopProcess :: forall env (m :: Type -> Type) stdin stdout stderr.
(MonadTypedProcess m, HasCallStack) =>
Process stdin stdout stderr -> ShellT env m ()
stopProcess :: forall stdin stdout stderr.
HasCallStack =>
Process stdin stdout stderr -> ShellT env m ()
$crunProcess_ :: forall env (m :: Type -> Type) stdin stdout stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdout stderr -> ShellT env m ()
runProcess_ :: forall stdin stdout stderr.
HasCallStack =>
ProcessConfig stdin stdout stderr -> ShellT env m ()
$creadProcess_ :: forall env (m :: Type -> Type) stdin stdoutIgnored stderrIgnored.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdoutIgnored stderrIgnored
-> ShellT env m (ByteString, ByteString)
readProcess_ :: forall stdin stdoutIgnored stderrIgnored.
HasCallStack =>
ProcessConfig stdin stdoutIgnored stderrIgnored
-> ShellT env m (ByteString, ByteString)
$creadProcessStdout_ :: forall env (m :: Type -> Type) stdin stdoutIgnored stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdoutIgnored stderr -> ShellT env m ByteString
readProcessStdout_ :: forall stdin stdoutIgnored stderr.
HasCallStack =>
ProcessConfig stdin stdoutIgnored stderr -> ShellT env m ByteString
$creadProcessStderr_ :: forall env (m :: Type -> Type) stdin stdoutIgnored stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdoutIgnored stderr -> ShellT env m ByteString
readProcessStderr_ :: forall stdin stdoutIgnored stderr.
HasCallStack =>
ProcessConfig stdin stdoutIgnored stderr -> ShellT env m ByteString
$creadProcessInterleaved_ :: forall env (m :: Type -> Type) stdin stdoutIgnored stderr.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdoutIgnored stderr -> ShellT env m ByteString
readProcessInterleaved_ :: forall stdin stdoutIgnored stderr.
HasCallStack =>
ProcessConfig stdin stdoutIgnored stderr -> ShellT env m ByteString
$cwithProcessWait_ :: forall env (m :: Type -> Type) stdin stdout stderr a.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdout stderr
-> (Process stdin stdout stderr -> ShellT env m a)
-> ShellT env m a
withProcessWait_ :: forall stdin stdout stderr a.
HasCallStack =>
ProcessConfig stdin stdout stderr
-> (Process stdin stdout stderr -> ShellT env m a)
-> ShellT env m a
$cwithProcessTerm_ :: forall env (m :: Type -> Type) stdin stdout stderr a.
(MonadTypedProcess m, HasCallStack) =>
ProcessConfig stdin stdout stderr
-> (Process stdin stdout stderr -> ShellT env m a)
-> ShellT env m a
withProcessTerm_ :: forall stdin stdout stderr a.
HasCallStack =>
ProcessConfig stdin stdout stderr
-> (Process stdin stdout stderr -> ShellT env m a)
-> ShellT env m a
$cwaitExitCode :: forall env (m :: Type -> Type) stdin stdout stderr.
(MonadTypedProcess m, HasCallStack) =>
Process stdin stdout stderr -> ShellT env m ExitCode
waitExitCode :: forall stdin stdout stderr.
HasCallStack =>
Process stdin stdout stderr -> ShellT env m ExitCode
$cgetExitCode :: forall env (m :: Type -> Type) stdin stdout stderr.
(MonadTypedProcess m, HasCallStack) =>
Process stdin stdout stderr -> ShellT env m (Maybe ExitCode)
getExitCode :: forall stdin stdout stderr.
HasCallStack =>
Process stdin stdout stderr -> ShellT env m (Maybe ExitCode)
$ccheckExitCode :: forall env (m :: Type -> Type) stdin stdout stderr.
(MonadTypedProcess m, HasCallStack) =>
Process stdin stdout stderr -> ShellT env m ()
checkExitCode :: forall stdin stdout stderr.
HasCallStack =>
Process stdin stdout stderr -> ShellT env m ()
MonadTypedProcess,
      MonadReader env,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(forall a. HasCallStack => STM a -> ShellT env m a)
-> MonadSTM (ShellT env m)
forall a. HasCallStack => STM a -> ShellT env m a
forall env (m :: Type -> Type). MonadSTM m => Monad (ShellT env m)
forall env (m :: Type -> Type) a.
(MonadSTM m, HasCallStack) =>
STM a -> ShellT env m a
forall (m :: Type -> Type).
Monad m =>
(forall a. HasCallStack => STM a -> m a) -> MonadSTM m
$catomically :: forall env (m :: Type -> Type) a.
(MonadSTM m, HasCallStack) =>
STM a -> ShellT env m a
atomically :: forall a. HasCallStack => STM a -> ShellT env m a
MonadSTM,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(HasCallStack => Int -> ShellT env m ())
-> (forall e.
    (Exception e, HasCallStack) =>
    ThreadId -> e -> ShellT env m ())
-> (HasCallStack => ShellT env m Int)
-> (HasCallStack => Int -> ShellT env m ())
-> (HasCallStack => ThreadId -> ShellT env m (Int, Bool))
-> (HasCallStack => ShellT env m ThreadId)
-> (HasCallStack => ThreadId -> String -> ShellT env m ())
-> (HasCallStack => ThreadId -> ShellT env m (Maybe String))
-> MonadThread (ShellT env m)
HasCallStack => ShellT env m Int
HasCallStack => ShellT env m ThreadId
HasCallStack => Int -> ShellT env m ()
HasCallStack => ThreadId -> ShellT env m (Maybe String)
HasCallStack => ThreadId -> ShellT env m (Int, Bool)
HasCallStack => ThreadId -> String -> ShellT env m ()
forall e.
(Exception e, HasCallStack) =>
ThreadId -> e -> ShellT env m ()
forall env (m :: Type -> Type).
MonadThread m =>
Monad (ShellT env m)
forall env (m :: Type -> Type).
(MonadThread m, HasCallStack) =>
ShellT env m Int
forall env (m :: Type -> Type).
(MonadThread m, HasCallStack) =>
ShellT env m ThreadId
forall env (m :: Type -> Type).
(MonadThread m, HasCallStack) =>
Int -> ShellT env m ()
forall env (m :: Type -> Type).
(MonadThread m, HasCallStack) =>
ThreadId -> ShellT env m (Maybe String)
forall env (m :: Type -> Type).
(MonadThread m, HasCallStack) =>
ThreadId -> ShellT env m (Int, Bool)
forall env (m :: Type -> Type).
(MonadThread m, HasCallStack) =>
ThreadId -> String -> ShellT env m ()
forall env (m :: Type -> Type) e.
(MonadThread m, Exception e, HasCallStack) =>
ThreadId -> e -> ShellT env m ()
forall (m :: Type -> Type).
Monad m =>
(HasCallStack => Int -> m ())
-> (forall e. (Exception e, HasCallStack) => ThreadId -> e -> m ())
-> (HasCallStack => m Int)
-> (HasCallStack => Int -> m ())
-> (HasCallStack => ThreadId -> m (Int, Bool))
-> (HasCallStack => m ThreadId)
-> (HasCallStack => ThreadId -> String -> m ())
-> (HasCallStack => ThreadId -> m (Maybe String))
-> MonadThread m
$cthreadDelay :: forall env (m :: Type -> Type).
(MonadThread m, HasCallStack) =>
Int -> ShellT env m ()
threadDelay :: HasCallStack => Int -> ShellT env m ()
$cthrowTo :: forall env (m :: Type -> Type) e.
(MonadThread m, Exception e, HasCallStack) =>
ThreadId -> e -> ShellT env m ()
throwTo :: forall e.
(Exception e, HasCallStack) =>
ThreadId -> e -> ShellT env m ()
$cgetNumCapabilities :: forall env (m :: Type -> Type).
(MonadThread m, HasCallStack) =>
ShellT env m Int
getNumCapabilities :: HasCallStack => ShellT env m Int
$csetNumCapabilities :: forall env (m :: Type -> Type).
(MonadThread m, HasCallStack) =>
Int -> ShellT env m ()
setNumCapabilities :: HasCallStack => Int -> ShellT env m ()
$cthreadCapability :: forall env (m :: Type -> Type).
(MonadThread m, HasCallStack) =>
ThreadId -> ShellT env m (Int, Bool)
threadCapability :: HasCallStack => ThreadId -> ShellT env m (Int, Bool)
$cmyThreadId :: forall env (m :: Type -> Type).
(MonadThread m, HasCallStack) =>
ShellT env m ThreadId
myThreadId :: HasCallStack => ShellT env m ThreadId
$clabelThread :: forall env (m :: Type -> Type).
(MonadThread m, HasCallStack) =>
ThreadId -> String -> ShellT env m ()
labelThread :: HasCallStack => ThreadId -> String -> ShellT env m ()
$cthreadLabel :: forall env (m :: Type -> Type).
(MonadThread m, HasCallStack) =>
ThreadId -> ShellT env m (Maybe String)
threadLabel :: HasCallStack => ThreadId -> ShellT env m (Maybe String)
MonadThread,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(HasCallStack => ShellT env m ZonedTime)
-> (HasCallStack => ShellT env m Double)
-> MonadTime (ShellT env m)
HasCallStack => ShellT env m Double
HasCallStack => ShellT env m ZonedTime
forall env (m :: Type -> Type). MonadTime m => Monad (ShellT env m)
forall env (m :: Type -> Type).
(MonadTime m, HasCallStack) =>
ShellT env m Double
forall env (m :: Type -> Type).
(MonadTime m, HasCallStack) =>
ShellT env m ZonedTime
forall (m :: Type -> Type).
Monad m =>
(HasCallStack => m ZonedTime)
-> (HasCallStack => m Double) -> MonadTime m
$cgetSystemZonedTime :: forall env (m :: Type -> Type).
(MonadTime m, HasCallStack) =>
ShellT env m ZonedTime
getSystemZonedTime :: HasCallStack => ShellT env m ZonedTime
$cgetMonotonicTime :: forall env (m :: Type -> Type).
(MonadTime m, HasCallStack) =>
ShellT env m Double
getMonotonicTime :: HasCallStack => ShellT env m Double
MonadTime,
      Monad (ShellT env m)
Monad (ShellT env m) =>
(forall e a. (HasCallStack, Exception e) => e -> ShellT env m a)
-> MonadThrow (ShellT env m)
forall e a. (HasCallStack, Exception e) => e -> ShellT env m a
forall env (m :: Type -> Type).
MonadThrow m =>
Monad (ShellT env m)
forall env (m :: Type -> Type) e a.
(MonadThrow m, HasCallStack, Exception e) =>
e -> ShellT env m a
forall (m :: Type -> Type).
Monad m =>
(forall e a. (HasCallStack, Exception e) => e -> m a)
-> MonadThrow m
$cthrowM :: forall env (m :: Type -> Type) e a.
(MonadThrow m, HasCallStack, Exception e) =>
e -> ShellT env m a
throwM :: forall e a. (HasCallStack, Exception e) => e -> ShellT env m a
MonadThrow
    )
    via (ReaderT env m)

-- | Runs a 'ShellT' with the given @env@.
runShellT :: forall m env a. ShellT env m a -> env -> m a
runShellT :: forall (m :: Type -> Type) env a. ShellT env m a -> env -> m a
runShellT (MkShellT ReaderT env m a
rdr) = ReaderT env m a -> env -> m a
forall r (m :: Type -> Type) a. ReaderT r m a -> r -> m a
runReaderT ReaderT env m a
rdr
{-# INLINEABLE runShellT #-}

-- Concrete Env here so we can vary our logging logic with other envs
-- (i.e. in tests).

-- Can't use @deriving via m@ due to a bug: GHC version 9.2.5: No skolem info:@.
-- https://gitlab.haskell.org/ghc/ghc/-/issues/15376

deriving newtype instance (MonadRegionLogger m) => MonadRegionLogger (ShellT (Env r) m)

instance
  ( MonadAppleScript m,
    MonadDBus m,
    MonadNotifySend m
  ) =>
  MonadNotify (ShellT (Env r) m)
  where
  notify :: HasCallStack =>
ShrunNote -> ShellT (Env r) m (Maybe NotifyException)
notify ShrunNote
note =
    (Env r -> Maybe (NotifySystemP 'ConfigPhaseEnv))
-> ShellT (Env r) m (Maybe (NotifySystemP 'ConfigPhaseEnv))
forall r (m :: Type -> Type) a. MonadReader r m => (r -> a) -> m a
asks (Optic'
  An_AffineTraversal NoIx (Env r) (NotifySystemP 'ConfigPhaseEnv)
-> Env r -> Maybe (NotifySystemP 'ConfigPhaseEnv)
forall k (is :: IxList) s a.
Is k An_AffineFold =>
Optic' k is s a -> s -> Maybe a
preview (Optic
  A_Lens
  NoIx
  (Env r)
  (Env r)
  (CoreConfigP 'ConfigPhaseEnv)
  (CoreConfigP 'ConfigPhaseEnv)
#config Optic
  A_Lens
  NoIx
  (Env r)
  (Env r)
  (CoreConfigP 'ConfigPhaseEnv)
  (CoreConfigP 'ConfigPhaseEnv)
-> Optic
     A_Lens
     NoIx
     (CoreConfigP 'ConfigPhaseEnv)
     (CoreConfigP 'ConfigPhaseEnv)
     (Maybe (NotifyP 'ConfigPhaseEnv))
     (Maybe (NotifyP 'ConfigPhaseEnv))
-> Optic
     A_Lens
     NoIx
     (Env r)
     (Env r)
     (Maybe (NotifyP 'ConfigPhaseEnv))
     (Maybe (NotifyP 'ConfigPhaseEnv))
forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a
       b.
(JoinKinds k l m, AppendIndices is js ks) =>
Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
% Optic
  A_Lens
  NoIx
  (CoreConfigP 'ConfigPhaseEnv)
  (CoreConfigP 'ConfigPhaseEnv)
  (Maybe (NotifyP 'ConfigPhaseEnv))
  (Maybe (NotifyP 'ConfigPhaseEnv))
#notify Optic
  A_Lens
  NoIx
  (Env r)
  (Env r)
  (Maybe (NotifyP 'ConfigPhaseEnv))
  (Maybe (NotifyP 'ConfigPhaseEnv))
-> Optic
     A_Lens
     NoIx
     (NotifyP 'ConfigPhaseEnv)
     (NotifyP 'ConfigPhaseEnv)
     (NotifySystemP 'ConfigPhaseEnv)
     (NotifySystemP 'ConfigPhaseEnv)
-> Optic'
     An_AffineTraversal NoIx (Env r) (NotifySystemP 'ConfigPhaseEnv)
forall (is :: IxList) (js :: IxList) (ks :: IxList) k k' l m s t u
       v a b.
(AppendIndices is js ks, JoinKinds k A_Prism k',
 JoinKinds k' l m) =>
Optic k is s t (Maybe u) (Maybe v)
-> Optic l js u v a b -> Optic m ks s t a b
%? Optic
  A_Lens
  NoIx
  (NotifyP 'ConfigPhaseEnv)
  (NotifyP 'ConfigPhaseEnv)
  (NotifySystemP 'ConfigPhaseEnv)
  (NotifySystemP 'ConfigPhaseEnv)
#system)) ShellT (Env r) m (Maybe (NotifySystemP 'ConfigPhaseEnv))
-> (Maybe (NotifySystemP 'ConfigPhaseEnv)
    -> ShellT (Env r) m (Maybe NotifyException))
-> ShellT (Env r) m (Maybe NotifyException)
forall a b.
ShellT (Env r) m a
-> (a -> ShellT (Env r) m b) -> ShellT (Env r) m b
forall (m :: Type -> Type) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
      Maybe (NotifySystemP 'ConfigPhaseEnv)
Nothing -> Maybe NotifyException -> ShellT (Env r) m (Maybe NotifyException)
forall a. a -> ShellT (Env r) m a
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure Maybe NotifyException
forall a. Maybe a
Nothing
      Just NotifySystemP 'ConfigPhaseEnv
nenv -> NotifySystemP 'ConfigPhaseEnv
-> ShellT (Env r) m (Maybe NotifyException)
sendNote NotifySystemP 'ConfigPhaseEnv
nenv
    where
      sendNote :: NotifySystemP 'ConfigPhaseEnv
-> ShellT (Env r) m (Maybe NotifyException)
sendNote (DBus DBusF 'ConfigPhaseEnv
client) = Client -> ShrunNote -> ShellT (Env r) m (Maybe NotifyException)
forall (m :: Type -> Type).
(HasCallStack, MonadDBus m) =>
Client -> ShrunNote -> m (Maybe NotifyException)
MonadDBus.notifyDBus Client
DBusF 'ConfigPhaseEnv
client ShrunNote
note
      sendNote NotifySystemP 'ConfigPhaseEnv
NotifySend = ShrunNote -> ShellT (Env r) m (Maybe NotifyException)
forall (m :: Type -> Type).
(HasCallStack, MonadNotifySend m) =>
ShrunNote -> m (Maybe NotifyException)
MonadNotifySend.notifyNotifySend ShrunNote
note
      sendNote NotifySystemP 'ConfigPhaseEnv
AppleScript = ShrunNote -> ShellT (Env r) m (Maybe NotifyException)
forall (m :: Type -> Type).
(HasCallStack, MonadAppleScript m) =>
ShrunNote -> m (Maybe NotifyException)
MonadAppleScript.notifyAppleScript ShrunNote
note