conduit-extra-1.3.0: Batteries included conduit: adapters for common libraries.

Safe HaskellNone
LanguageHaskell98

Data.Conduit.Process

Contents

Description

A full tutorial for this module is available at: https://github.com/snoyberg/conduit/blob/master/PROCESS.md.

Note that this is a very thin layer around the Data.Streaming.Process module. In particular, it:

  • Provides orphan instances for conduit
  • Provides some useful helper functions

Synopsis

Functions

sourceCmdWithConsumer Source #

Arguments

:: MonadIO m 
=> String

command

-> ConduitT ByteString Void m a

stdout

-> m (ExitCode, a) 

Like sourceProcessWithConsumer but providing the command to be run as a String.

Since 1.1.2

sourceProcessWithConsumer Source #

Arguments

:: MonadIO m 
=> CreateProcess 
-> ConduitT ByteString Void m a

stdout

-> m (ExitCode, a) 

Given a CreateProcess, run the process, with its output being used as a Source to feed the provided Consumer. Once the process has completed, return a tuple of the ExitCode from the process and the output collected from the Consumer.

Note that, if an exception is raised by the consumer, the process is not terminated. This behavior is different from sourceProcessWithStreams due to historical reasons.

Since 1.1.2

sourceCmdWithStreams Source #

Arguments

:: MonadUnliftIO m 
=> String

command

-> ConduitT () ByteString m ()

stdin

-> ConduitT ByteString Void m a

stdout

-> ConduitT ByteString Void m b

stderr

-> m (ExitCode, a, b) 

Like sourceProcessWithStreams but providing the command to be run as a String.

Since: 1.1.12

sourceProcessWithStreams Source #

Arguments

:: MonadUnliftIO m 
=> CreateProcess 
-> ConduitT () ByteString m ()

stdin

-> ConduitT ByteString Void m a

stdout

-> ConduitT ByteString Void m b

stderr

-> m (ExitCode, a, b) 

Given a CreateProcess, run the process and feed the provided Producer to the stdin Sink of the process. Use the process outputs (stdout, stderr) as Sources and feed it to the provided Consumers. Once the process has completed, return a tuple of the ExitCode from the process and the results collected from the Consumers.

If an exception is raised by any of the streams, the process is terminated.

IO is required because the streams are run concurrently using the async package

Since: 1.1.12

withCheckedProcessCleanup :: (InputSource stdin, OutputSink stderr, OutputSink stdout, MonadUnliftIO m) => CreateProcess -> (stdin -> stdout -> stderr -> m b) -> m b Source #

Same as withCheckedProcess, but kills the child process in the case of an exception being thrown by the provided callback function.

Since: 1.1.11

Reexport

Orphan instances

((~) * r (), (~) * r' (), MonadIO m, MonadIO n, (~) * i ByteString) => InputSource (ConduitM i o m r, n r') Source # 

Methods

isStdStream :: (Maybe Handle -> IO (ConduitM i o m r, n r'), Maybe StdStream) #

((~) * r (), (~) * r' (), MonadIO m, MonadIO n, (~) * o ByteString) => OutputSink (ConduitM i o m r, n r') Source # 

Methods

osStdStream :: (Maybe Handle -> IO (ConduitM i o m r, n r'), Maybe StdStream) #

((~) * r (), MonadIO m, (~) * i ByteString) => InputSource (ConduitM i o m r) Source # 

Methods

isStdStream :: (Maybe Handle -> IO (ConduitM i o m r), Maybe StdStream) #

((~) * r (), MonadIO m, (~) * o ByteString) => OutputSink (ConduitM i o m r) Source # 

Methods

osStdStream :: (Maybe Handle -> IO (ConduitM i o m r), Maybe StdStream) #