Safe Haskell | None |
---|
Deprecated: This module should no longer be imported as all the functions are available directly from Development.Shake. In future versions this module will be removed.
- command :: CmdResult r => [CmdOption] -> String -> [String] -> Action r
- command_ :: [CmdOption] -> String -> [String] -> Action ()
- cmd :: CmdArguments args => args :-> Action r
- newtype Stdout = Stdout {
- fromStdout :: String
- newtype Stderr = Stderr {
- fromStderr :: String
- newtype Exit = Exit {}
- class CmdResult a
- data CmdOption
- = Cwd FilePath
- | Env [(String, String)]
- | Stdin String
- | Shell
- | BinaryPipes
- | Traced String
- | WithStderr Bool
- | EchoStdout Bool
- | EchoStderr Bool
Documentation
command :: CmdResult r => [CmdOption] -> String -> [String] -> Action rSource
Execute a system command. Before running command
make sure you need
any files
that are required by the command.
This function takes a list of options (often just []
, see CmdOption
for the available
options), the name of the executable (either a full name, or a program on the $PATH
) and
a list of arguments. The result is often ()
, but can be a tuple containg any of Stdout
,
Stderr
and Exit
. Some examples:
command_
[] "gcc" ["-c","myfile.c"] -- compile a file, throwing an exception on failureExit
c <-command
[] "gcc" ["-c",myfile] -- run a command, recording the exit code (Exit
c,Stderr
err) <-command
[] "gcc" ["-c","myfile.c"] -- run a command, recording the exit code and error outputStdout
out <-command
[] "gcc" ["-MM","myfile.c"] -- run a command, recording the outputcommand_
[Cwd
"generated"] "gcc" ["-c",myfile] -- run a command in a directory
Unless you retrieve the ExitCode
using Exit
, any ExitFailure
will throw an error, including
the Stderr
in the exception message. If you capture the Stdout
or Stderr
, that stream will not be echoed to the console,
unless you use the option EchoStdout
or EchoStderr
.
If you use command
inside a do
block and do not use the result, you may get a compile-time error about being
unable to deduce CmdResult
. To avoid this error, use command_
.
cmd :: CmdArguments args => args :-> Action rSource
A variable arity version of command
.
-
String
arguments are treated as whitespace separated arguments. -
[String]
arguments are treated as literal arguments. -
CmdOption
arguments are used as options.
To take the examples from command
:
() <-cmd
"gcc -c myfile.c" -- compile a file, throwing an exception on failureExit
c <-cmd
"gcc -c" [myfile] -- run a command, recording the exit code (Exit
c,Stderr
err) <-cmd
"gcc -c myfile.c" -- run a command, recording the exit code and error outputStdout
out <-cmd
"gcc -MM myfile.c" -- run a command, recording the outputcmd
(Cwd
"generated") "gcc -c" [myfile] ::Action
() -- run a command in a directory
When passing file arguments we use [myfile]
so that if the myfile
variable contains spaces they are properly escaped.
If you use cmd
inside a do
block and do not use the result, you may get a compile-time error about being
unable to deduce CmdResult
. To avoid this error, bind the result to ()
, or include a type signature.
Collect the stdout
of the process.
If you are collecting the stdout
, it will not be echoed to the terminal, unless you include EchoStdout
.
Collect the stderr
of the process.
If you are collecting the stderr
, it will not be echoed to the terminal, unless you include EchoStderr
.
Collect the ExitCode
of the process.
If you do not collect the exit code, any ExitFailure
will cause an exception.
Cwd FilePath | Change the current directory in the spawned process. By default uses this processes current directory. |
Env [(String, String)] | Change the environment variables in the spawned process. By default uses this processes environment. |
Stdin String | Given as the |
Shell | Pass the command to the shell without escaping - any arguments will be joined with spaces. By default arguments are escaped properly. |
BinaryPipes | Treat the |
Traced String | Name to use with |
WithStderr Bool | Should I include the |
EchoStdout Bool | Should I echo the |
EchoStderr Bool | Should I echo the |