{-# LANGUAGE TypeOperators #-}
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 qualified Development.Shake
import Development.Shake (CmdResult, CmdOption)
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 x y z = liftAction $ Development.Shake.command x y z

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