stack-0.1.10.1: The Haskell Tool Stack

Safe HaskellNone
LanguageHaskell2010

System.Process.Read

Description

Reading from external processes.

Synopsis

Documentation

readProcessStdout Source

Arguments

:: (MonadIO m, MonadLogger m, MonadBaseControl IO m, MonadCatch m) 
=> Maybe (Path Abs Dir)

Optional directory to run in

-> EnvOverride 
-> String

Command

-> [String]

Command line arguments

-> m ByteString 

Produce a strict ByteString from the stdout of a process.

Throws a ReadProcessException exception if the process fails.

tryProcessStdout Source

Arguments

:: (MonadIO m, MonadLogger m, MonadBaseControl IO m, MonadCatch m) 
=> Maybe (Path Abs Dir)

Optional directory to run in

-> EnvOverride 
-> String

Command

-> [String]

Command line arguments

-> m (Either ReadProcessException ByteString) 

Try to produce a strict ByteString from the stdout of a process.

sinkProcessStdout Source

Arguments

:: (MonadIO m, MonadLogger m, MonadBaseControl IO m, MonadCatch m) 
=> Maybe (Path Abs Dir)

Optional directory to run in

-> EnvOverride 
-> String

Command

-> [String]

Command line arguments

-> Sink ByteString IO a

Sink for stdout

-> m a 

Consume the stdout of a process feeding strict ByteStrings to a consumer. If the process fails, spits out stdout and stderr as error log level. Should not be used for long-running processes or ones with lots of output; for that use sinkProcessStdoutLogStderr.

sinkProcessStderrStdout Source

Arguments

:: (MonadIO m, MonadLogger m) 
=> Maybe (Path Abs Dir)

Optional directory to run in

-> EnvOverride 
-> String

Command

-> [String]

Command line arguments

-> Sink ByteString IO e

Sink for stderr

-> Sink ByteString IO o

Sink for stdout

-> m (e, o) 

Consume the stdout and stderr of a process feeding strict ByteStrings to the consumers.

readProcess

Arguments

:: FilePath

Filename of the executable (see RawCommand for details)

-> [String]

any arguments

-> String

standard input

-> IO String

stdout

readProcess forks an external process, reads its standard output strictly, blocking until the process terminates, and returns the output string. The external process inherits the standard error.

If an asynchronous exception is thrown to the thread executing readProcess, the forked process will be terminated and readProcess will wait (block) until the process has been terminated.

Output is returned strictly, so this is not suitable for interactive applications.

This function throws an IOError if the process ExitCode is anything other than ExitSuccess. If instead you want to get the ExitCode then use readProcessWithExitCode.

Users of this function should compile with -threaded if they want other Haskell threads to keep running while waiting on the result of readProcess.

 > readProcess "date" [] []
 "Thu Feb  7 10:03:39 PST 2008\n"

The arguments are:

  • The command to run, which must be in the $PATH, or an absolute or relative path
  • A list of separate command line arguments to the program
  • A string to pass on standard input to the forked process.

data EnvOverride Source

Override the environment received by a child process.

Constructors

EnvOverride 

Fields

unEnvOverride :: EnvOverride -> Map Text Text Source

Get the environment variables from an EnvOverride.

modifyEnvOverride :: MonadIO m => EnvOverride -> (Map Text Text -> Map Text Text) -> m EnvOverride Source

Modify the environment variables of an EnvOverride.

envHelper :: EnvOverride -> Maybe [(String, String)] Source

Helper conversion function.

doesExecutableExist :: MonadIO m => EnvOverride -> String -> m Bool Source

Check if the given executable exists on the given PATH.

findExecutable :: (MonadIO m, MonadThrow n) => EnvOverride -> String -> m (n (Path Abs File)) Source

Find the complete path for the executable.

Throws a ReadProcessException if unsuccessful.

getEnvOverride :: MonadIO m => Platform -> m EnvOverride Source

Load up an EnvOverride from the standard environment.

envSearchPath :: EnvOverride -> [FilePath] Source

Get the list of directories searched (PATH).

preProcess Source

Arguments

:: MonadIO m 
=> Maybe (Path Abs Dir)

Optional directory to create if necessary

-> EnvOverride 
-> String

Command name

-> m FilePath 

Perform pre-call-process tasks. Ensure the working directory exists and find the executable path.

readProcessNull Source

Arguments

:: (MonadIO m, MonadLogger m, MonadBaseControl IO m, MonadCatch m) 
=> Maybe (Path Abs Dir)

Optional working directory

-> EnvOverride 
-> String

Command

-> [String]

Command line arguments

-> m () 

Read from the process, ignoring any output.

readInNull Source

Arguments

:: (MonadIO m, MonadLogger m, MonadBaseControl IO m, MonadCatch m) 
=> Path Abs Dir

Directory to run in

-> FilePath

Command to run

-> EnvOverride 
-> [String]

Command line arguments

-> Maybe Text

Optional additional error message

-> m () 

Run the given command in the given directory. If it exits with anything but success, prints an error and then calls exitWith to exit the program.

logProcessRun :: Q Exp Source

Log running a process with its arguments, for debugging (-v).

augmentPath :: [FilePath] -> Maybe Text -> Text Source

Augment the PATH environment variable with the given extra paths.

augmentPathMap :: [FilePath] -> Map Text Text -> Map Text Text Source

Apply augmentPath on the PATH value in the given Map.