What is process-extras

You want to read and write ByteStrings or Text to a process rather
than just Strings

You want to read output from a non-terminating process (e.g. yes(1))

You want more flexibility in process creation

You want various types of progress output from the process to the
console before capturing its output - indented and prefixed output,
reporting of the command that started the process, dots to reflect
the size of the process output, etc.

Contributing

This project is available on GitHub. You may contribute changes there.

Examples:

The output type of the raw system process functions is ByteString.
Instances of ListLikeProcessIO are provided to read as type String,
Text, Lazy Text, ByteString, or Lazy ByteString. Select by casting
the result, or by specifying the module containing the specialized
function:

Although the output type can be lazy, normal process functions still
need to read until EOF on the process output before returing anything.
If you have a process whose output never ends you can use the
readCreateProcessLazy function to read it. Functions like readProcess
would block waiting for EOF on the process output:

The output type can be any instance of ProcessOutput, instances for
types (ExitCode, a, a), [Chunk a], and (ExitCode, [Chunk a]) are
provided. [Chunk a] can be converted to any other instance of
ProcessOutput using collectOutput