| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
System.Process.Read
Description
Reading from external processes.
- readProcessStdout :: (MonadUnliftIO m, MonadLogger m) => Maybe (Path Abs Dir) -> EnvOverride -> String -> [String] -> m ByteString
 - readProcessStderrStdout :: (MonadUnliftIO m, MonadLogger m) => Maybe (Path Abs Dir) -> EnvOverride -> String -> [String] -> m (ByteString, ByteString)
 - tryProcessStdout :: (MonadUnliftIO m, MonadLogger m) => Maybe (Path Abs Dir) -> EnvOverride -> String -> [String] -> m (Either ReadProcessException ByteString)
 - tryProcessStderrStdout :: (MonadUnliftIO m, MonadLogger m) => Maybe (Path Abs Dir) -> EnvOverride -> String -> [String] -> m (Either ReadProcessException (ByteString, ByteString))
 - sinkProcessStdout :: (MonadUnliftIO m, MonadLogger m) => Maybe (Path Abs Dir) -> EnvOverride -> String -> [String] -> Sink ByteString IO a -> m a
 - sinkProcessStderrStdout :: forall m e o. (MonadIO m, MonadLogger m) => Maybe (Path Abs Dir) -> EnvOverride -> String -> [String] -> Sink ByteString IO e -> Sink ByteString IO o -> m (e, o)
 - sinkProcessStderrStdoutHandle :: (MonadIO m, MonadLogger m) => Maybe (Path Abs Dir) -> EnvOverride -> String -> [String] -> Handle -> Handle -> m ()
 - logProcessStderrStdout :: (HasCallStack, MonadUnliftIO m, MonadLogger m) => Maybe (Path Abs Dir) -> String -> EnvOverride -> [String] -> m ()
 - readProcess :: FilePath -> [String] -> String -> IO String
 - data EnvOverride = EnvOverride {
- eoTextMap :: Map Text Text
 - eoStringList :: [(String, String)]
 - eoPath :: [FilePath]
 - eoExeCache :: IORef (Map FilePath (Either ReadProcessException (Path Abs File)))
 - eoExeExtensions :: [String]
 - eoPlatform :: Platform
 
 - unEnvOverride :: EnvOverride -> Map Text Text
 - mkEnvOverride :: MonadIO m => Platform -> Map Text Text -> m EnvOverride
 - modifyEnvOverride :: MonadIO m => EnvOverride -> (Map Text Text -> Map Text Text) -> m EnvOverride
 - envHelper :: EnvOverride -> Maybe [(String, String)]
 - doesExecutableExist :: MonadIO m => EnvOverride -> String -> m Bool
 - findExecutable :: (MonadIO m, MonadThrow n) => EnvOverride -> String -> m (n (Path Abs File))
 - getEnvOverride :: MonadIO m => Platform -> m EnvOverride
 - envSearchPath :: EnvOverride -> [FilePath]
 - preProcess :: MonadIO m => Maybe (Path Abs Dir) -> EnvOverride -> String -> m FilePath
 - readProcessNull :: (MonadUnliftIO m, MonadLogger m) => Maybe (Path Abs Dir) -> EnvOverride -> String -> [String] -> m ()
 - data ReadProcessException
 - augmentPath :: MonadThrow m => [Path Abs Dir] -> Maybe Text -> m Text
 - augmentPathMap :: MonadThrow m => [Path Abs Dir] -> Map Text Text -> m (Map Text Text)
 - resetExeCache :: MonadIO m => EnvOverride -> m ()
 
Documentation
Arguments
| :: (MonadUnliftIO m, MonadLogger 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.
readProcessStderrStdout Source #
Arguments
| :: (MonadUnliftIO m, MonadLogger m) | |
| => Maybe (Path Abs Dir) | Optional directory to run in  | 
| -> EnvOverride | |
| -> String | Command  | 
| -> [String] | Command line arguments  | 
| -> m (ByteString, ByteString) | 
Produce strict ByteStrings from the stderr and stdout of a process.
Throws a ReadProcessException exception if the process fails.
Arguments
| :: (MonadUnliftIO m, MonadLogger 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.
tryProcessStderrStdout Source #
Arguments
| :: (MonadUnliftIO m, MonadLogger m) | |
| => Maybe (Path Abs Dir) | Optional directory to run in  | 
| -> EnvOverride | |
| -> String | Command  | 
| -> [String] | Command line arguments  | 
| -> m (Either ReadProcessException (ByteString, ByteString)) | 
Try to produce strict ByteStrings from the stderr and stdout of a
 process.
Arguments
| :: (MonadUnliftIO m, MonadLogger 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.
Throws a ReadProcessException if unsuccessful.
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.
Throws a ReadProcessException if unsuccessful in launching, or ProcessExitedUnsuccessfully if the process itself fails.
sinkProcessStderrStdoutHandle Source #
Arguments
| :: (MonadIO m, MonadLogger m) | |
| => Maybe (Path Abs Dir) | Optional directory to run in  | 
| -> EnvOverride | |
| -> String | Command  | 
| -> [String] | Command line arguments  | 
| -> Handle | |
| -> Handle | |
| -> m () | 
Like sinkProcessStderrStdout, but receives Handles for stderr and stdout instead of Sinks.
Throws a ReadProcessException if unsuccessful in launching, or ProcessExitedUnsuccessfully if the process itself fails.
logProcessStderrStdout :: (HasCallStack, MonadUnliftIO m, MonadLogger m) => Maybe (Path Abs Dir) -> String -> EnvOverride -> [String] -> m () Source #
Arguments
| :: FilePath | Filename of the executable (see   | 
| -> [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.
mkEnvOverride :: MonadIO m => Platform -> Map Text Text -> m EnvOverride Source #
Create a new EnvOverride.
modifyEnvOverride :: MonadIO m => EnvOverride -> (Map Text Text -> Map Text Text) -> m EnvOverride Source #
Modify the environment variables of an EnvOverride.
Arguments
| :: MonadIO m | |
| => EnvOverride | How to override environment  | 
| -> String | Name of executable  | 
| -> m Bool | 
Check if the given executable exists on the given PATH.
Arguments
| :: (MonadIO m, MonadThrow n) | |
| => EnvOverride | How to override environment  | 
| -> String | Name of executable  | 
| -> m (n (Path Abs File)) | Full path to that executable on success  | 
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).
Arguments
| :: MonadIO m | |
| => Maybe (Path Abs Dir) | Optional directory to create if necessary  | 
| -> EnvOverride | How to override environment  | 
| -> String | Command name  | 
| -> m FilePath | 
Perform pre-call-process tasks. Ensure the working directory exists and find the executable path.
Throws a ReadProcessException if unsuccessful.
Arguments
| :: (MonadUnliftIO m, MonadLogger m) | |
| => Maybe (Path Abs Dir) | Optional working directory  | 
| -> EnvOverride | |
| -> String | Command  | 
| -> [String] | Command line arguments  | 
| -> m () | 
Read from the process, ignoring any output.
Throws a ReadProcessException exception if the process fails.
data ReadProcessException Source #
An exception while trying to read from process.
Constructors
| ProcessFailed CreateProcess ExitCode ByteString ByteString |  | 
| NoPathFound | |
| ExecutableNotFound String [FilePath] | |
| ExecutableNotFoundAt FilePath | 
Instances
augmentPath :: MonadThrow m => [Path Abs Dir] -> Maybe Text -> m Text Source #
Augment the PATH environment variable with the given extra paths.
augmentPathMap :: MonadThrow m => [Path Abs Dir] -> Map Text Text -> m (Map Text Text) Source #
Apply augmentPath on the PATH value in the given Map.
resetExeCache :: MonadIO m => EnvOverride -> m () Source #
Reset the executable cache.