Safe Haskell | None |
---|---|
Language | Haskell98 |
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
- sourceCmdWithConsumer :: MonadIO m => String -> ConduitT ByteString Void m a -> m (ExitCode, a)
- sourceProcessWithConsumer :: MonadIO m => CreateProcess -> ConduitT ByteString Void m a -> m (ExitCode, a)
- sourceCmdWithStreams :: MonadUnliftIO m => String -> ConduitT () ByteString m () -> ConduitT ByteString Void m a -> ConduitT ByteString Void m b -> m (ExitCode, a, b)
- sourceProcessWithStreams :: MonadUnliftIO m => CreateProcess -> ConduitT () ByteString m () -> ConduitT ByteString Void m a -> ConduitT ByteString Void m b -> m (ExitCode, a, b)
- withCheckedProcessCleanup :: (InputSource stdin, OutputSink stderr, OutputSink stdout, MonadUnliftIO m) => CreateProcess -> (stdin -> stdout -> stderr -> m b) -> m b
- module Data.Streaming.Process
Functions
sourceCmdWithConsumer Source #
Like sourceProcessWithConsumer
but providing the command to be run as
a String
.
Since 1.1.2
sourceProcessWithConsumer Source #
:: 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
:: 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 #
:: 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 Source
s
and feed it to the provided Consumer
s.
Once the process has completed,
return a tuple of the ExitCode
from the process
and the results collected from the Consumer
s.
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
module Data.Streaming.Process
Orphan instances
((~) * r (), (~) * r' (), MonadIO m, MonadIO n, (~) * i ByteString) => InputSource (ConduitM i o m r, n r') Source # | |
((~) * r (), (~) * r' (), MonadIO m, MonadIO n, (~) * o ByteString) => OutputSink (ConduitM i o m r, n r') Source # | |
((~) * r (), MonadIO m, (~) * i ByteString) => InputSource (ConduitM i o m r) Source # | |
((~) * r (), MonadIO m, (~) * o ByteString) => OutputSink (ConduitM i o m r) Source # | |