process-extras-0.4.1.3: Process extras

Safe HaskellNone
LanguageHaskell98

System.Process.ListLike

Contents

Description

Re-export all symbols and instances of the process-extras package. Adds the Chunk type with a ProcessOutput instance, and a collectOutput function to turn a list of chunks into any instance of ProcessOutput, such as (ExitCode, String, String). This means you can have readCreateProcess output a list of Chunk, operate on it to do progress reporting, and finally convert it to the type that readProcessWithExitCode woud have returned.

Synopsis

Documentation

class ProcessMaker a where Source #

Minimal complete definition

process

Instances

ProcessMaker CreateProcess Source #

This is the usual maker argument to readCreateProcess.

ProcessMaker (CreateProcess, BufferMode, BufferMode) Source #

Passing this to readCreateProcess as the maker argument allows you to set the buffer mode of the process stdout and stderr handles just after the handles are created. These are set to BlockBuffering by default, but for running console commands LineBuffering is probably what you want.

class ListLikeIO a c => ListLikeProcessIO a c where Source #

Minimal complete definition

forceOutput, readChunks

Methods

forceOutput :: a -> IO a Source #

class Monoid b => ProcessOutput a b | b -> a where Source #

Minimal complete definition

pidf, outf, errf, intf, codef

Methods

pidf :: ProcessHandle -> b Source #

outf :: a -> b Source #

errf :: a -> b Source #

intf :: SomeException -> b Source #

codef :: ExitCode -> b Source #

readCreateProcess :: (ProcessMaker maker, ProcessOutput a b, ListLikeProcessIO a c) => maker -> a -> IO b Source #

readCreateProcessLazy :: (ProcessMaker maker, ProcessOutput a b, ListLikeProcessIO a c) => maker -> a -> IO b Source #

Like readCreateProcess, but the output is read lazily.

readCreateProcessWithExitCode Source #

Arguments

:: (ProcessMaker maker, ListLikeProcessIO a c) 
=> maker

command and arguments to run

-> a

standard input

-> IO (ExitCode, a, a)

exitcode, stdout, stderr

readProcessWithExitCode Source #

Arguments

:: ListLikeProcessIO a c 
=> FilePath

command to run

-> [String]

any arguments

-> a

standard input

-> IO (ExitCode, a, a)

exitcode, stdout, stderr

Like readProcessWithExitCode, but with generalized input and output type.

data Chunk a Source #

This type is a concrete representation of the methods of class ProcessOutput. If you take your process output as this type you could, for example, echo all the output and then use collectOutput below to convert it to any other instance of ProcessOutput.

Constructors

ProcessHandle ProcessHandle

This will always come first, before any output or exit code.

Stdout a 
Stderr a 
Result ExitCode 
Exception SomeException

Note that the instances below do not use this constructor.

collectOutput :: ProcessOutput a b => [Chunk a] -> b Source #

Turn a [Chunk a] into any other instance of ProcessOutput.

foldOutput :: (ProcessHandle -> r) -> (a -> r) -> (a -> r) -> (SomeException -> r) -> (ExitCode -> r) -> Chunk a -> r Source #

writeOutput :: ListLikeIO a c => [Chunk a] -> IO () Source #

Send Stdout chunks to stdout and Stderr chunks to stderr.

showCreateProcessForUser :: CreateProcess -> String Source #

System.Process utility functions.

proc :: FilePath -> [String] -> CreateProcess #

Construct a CreateProcess record for passing to createProcess, representing a raw command with arguments.

See RawCommand for precise semantics of the specified FilePath.

shell :: String -> CreateProcess #

Construct a CreateProcess record for passing to createProcess, representing a command to be passed to the shell.

Orphan instances