{- |
   Module     : Development.Shake.Plus.Command
   License    : MIT
   Stability  : experimental

Utilities in "Development.Shake.Command" lifted to `MonadAction`.
-}
module Development.Shake.Plus.Command (
  command
, command_
, Development.Shake.cmd
, Development.Shake.cmd_
, Development.Shake.Command.unit
, Development.Shake.Command.CmdArgument(..)
, Development.Shake.Command.CmdArguments(..)
, Development.Shake.Command.IsCmdArgument(..)
, (:->)
, Development.Shake.Command.Stdout(..)
, Development.Shake.Command.StdoutTrim(..)
, Development.Shake.Command.Stderr(..)
, Development.Shake.Command.Stdouterr(..)
, Development.Shake.Command.Exit(..)
, Development.Shake.Command.Process(..)
, Development.Shake.Command.CmdTime(..)
, Development.Shake.Command.CmdLine(..)
, Development.Shake.Command.FSATrace(..)
, Development.Shake.Command.CmdResult
, Development.Shake.Command.CmdString
, Development.Shake.Command.CmdOption(..)
) where

import           Control.Exception.Extra
import           Development.Shake           (CmdOption, CmdResult)
import qualified Development.Shake
import           Development.Shake.Command   ((:->), CmdArguments)
import qualified Development.Shake.Command
import           Development.Shake.Plus.Core
import           RIO

-- | Lifted version of `Development.Shake.command`.
command :: (Partial, CmdResult r, MonadAction m) => [CmdOption] -> String -> [String] -> m r
command :: [CmdOption] -> String -> [String] -> m r
command [CmdOption]
x String
y [String]
z = Action r -> m r
forall (m :: * -> *) a. MonadAction m => Action a -> m a
liftAction (Action r -> m r) -> Action r -> m r
forall a b. (a -> b) -> a -> b
$ [CmdOption] -> String -> [String] -> Action r
forall r.
(Partial, CmdResult r) =>
[CmdOption] -> String -> [String] -> Action r
Development.Shake.command [CmdOption]
x String
y [String]
z

-- | Lifted version of `Development.Shake.command_`.
command_ :: (Partial, MonadAction m) => [CmdOption] -> String -> [String] -> m ()
command_ :: [CmdOption] -> String -> [String] -> m ()
command_ [CmdOption]
x String
y [String]
z = Action () -> m ()
forall (m :: * -> *) a. MonadAction m => Action a -> m a
liftAction (Action () -> m ()) -> Action () -> m ()
forall a b. (a -> b) -> a -> b
$ Partial => [CmdOption] -> String -> [String] -> Action ()
[CmdOption] -> String -> [String] -> Action ()
Development.Shake.command_ [CmdOption]
x String
y [String]
z