process-extras-0.7.4: Process extras
Safe HaskellNone
LanguageHaskell2010

System.Process.ListLike

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

Classes for process IO monad, output type, and creation type

class ListLikeIO text char => ListLikeProcessIO text char where Source #

Process IO is based on the ListLikeIO class from the ListLike package

Minimal complete definition

forceOutput, readChunks

Methods

forceOutput :: text -> IO text Source #

Instances

Instances details
ListLikeProcessIO Chars Char Source #

Like readProcessWithExitCode, but specialized for Text

Instance details

Defined in System.Process.Chars

Methods

forceOutput :: Chars -> IO Chars Source #

readChunks :: Handle -> IO [Chars] Source #

ListLikeProcessIO ByteString Word8 Source #

Like readProcessWithExitCode, but using ByteString

Instance details

Defined in System.Process.ByteString

Methods

forceOutput :: ByteString -> IO ByteString Source #

readChunks :: Handle -> IO [ByteString] Source #

ListLikeProcessIO ByteString Word8 Source #

Like readProcessWithExitCode, but using ByteString

Instance details

Defined in System.Process.ByteString.Lazy

Methods

forceOutput :: ByteString -> IO ByteString Source #

readChunks :: Handle -> IO [ByteString] Source #

ListLikeProcessIO Text Char Source #

Like readProcessWithExitCode, but using Text

Instance details

Defined in System.Process.Text

Methods

forceOutput :: Text -> IO Text Source #

readChunks :: Handle -> IO [Text] Source #

ListLikeProcessIO Builder Char Source #

Like readProcessWithExitCode, but using Text

Instance details

Defined in System.Process.Text.Builder

Methods

forceOutput :: Builder -> IO Builder Source #

readChunks :: Handle -> IO [Builder] Source #

ListLikeProcessIO Text Char Source #

Like readProcessWithExitCode, but using Text

Instance details

Defined in System.Process.Text.Lazy

Methods

forceOutput :: Text -> IO Text Source #

readChunks :: Handle -> IO [Text] Source #

ListLikeProcessIO String Char Source #

Like readProcessWithExitCode that takes a CreateProcess.

Instance details

Defined in System.Process.ListLike

Methods

forceOutput :: String -> IO String Source #

readChunks :: Handle -> IO [String] Source #

class (IsString text, Monoid text, ListLike text char) => ProcessText text char Source #

Instances

Instances details
ProcessText ByteString Word8 Source # 
Instance details

Defined in System.Process.ByteString

ProcessText ByteString Word8 Source # 
Instance details

Defined in System.Process.ByteString.Lazy

ProcessText Text Char Source # 
Instance details

Defined in System.Process.Text

ProcessText Text Char Source # 
Instance details

Defined in System.Process.Text.Lazy

ProcessText String Char Source # 
Instance details

Defined in System.Process.ListLike

class Monoid result => ProcessResult text result | result -> text where Source #

Methods

pidf :: ProcessHandle -> result Source #

outf :: text -> result Source #

errf :: text -> result Source #

intf :: SomeException -> result Source #

codef :: ExitCode -> result Source #

Instances

Instances details
ListLikeProcessIO a c => ProcessResult a [Chunk a] Source # 
Instance details

Defined in System.Process.ListLike

Methods

pidf :: ProcessHandle -> [Chunk a] Source #

outf :: a -> [Chunk a] Source #

errf :: a -> [Chunk a] Source #

intf :: SomeException -> [Chunk a] Source #

codef :: ExitCode -> [Chunk a] Source #

ListLikeProcessIO a c => ProcessResult a (ExitCode, [Chunk a]) Source # 
Instance details

Defined in System.Process.ListLike

Methods

pidf :: ProcessHandle -> (ExitCode, [Chunk a]) Source #

outf :: a -> (ExitCode, [Chunk a]) Source #

errf :: a -> (ExitCode, [Chunk a]) Source #

intf :: SomeException -> (ExitCode, [Chunk a]) Source #

codef :: ExitCode -> (ExitCode, [Chunk a]) Source #

ListLikeProcessIO text char => ProcessResult text (ExitCode, text, text) Source # 
Instance details

Defined in System.Process.Common

Methods

pidf :: ProcessHandle -> (ExitCode, text, text) Source #

outf :: text -> (ExitCode, text, text) Source #

errf :: text -> (ExitCode, text, text) Source #

intf :: SomeException -> (ExitCode, text, text) Source #

codef :: ExitCode -> (ExitCode, text, text) Source #

class ProcessMaker a where Source #

Methods

process :: a -> IO (Handle, Handle, Handle, ProcessHandle) Source #

showProcessMakerForUser :: a -> String Source #

Instances

Instances details
ProcessMaker CreateProcess Source #

This is the usual maker argument to readCreateProcessLazy.

Instance details

Defined in System.Process.Common

Methods

process :: CreateProcess -> IO (Handle, Handle, Handle, ProcessHandle) Source #

showProcessMakerForUser :: CreateProcess -> String Source #

ProcessMaker (CreateProcess, BufferMode, BufferMode) Source #

Passing this to readCreateProcessLazy 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.

Instance details

Defined in System.Process.Common

Methods

process :: (CreateProcess, BufferMode, BufferMode) -> IO (Handle, Handle, Handle, ProcessHandle) Source #

showProcessMakerForUser :: (CreateProcess, BufferMode, BufferMode) -> String Source #

The generalized process runners

readCreateProcess :: (ProcessMaker maker, ProcessResult text result, ListLikeProcessIO text char) => maker -> text -> IO result Source #

readCreateProcessStrict :: (ProcessMaker maker, ProcessResult text result, ListLikeProcessIO text char) => maker -> text -> IO result Source #

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

Like readCreateProcessStrict, but the output is read lazily.

readCreateProcessWithExitCode Source #

Arguments

:: (ProcessMaker maker, ListLikeProcessIO text char) 
=> maker

command and arguments to run

-> text

standard input

-> IO (ExitCode, text, text)

exitcode, stdout, stderr

readProcessWithExitCode Source #

Arguments

:: ListLikeProcessIO text char 
=> FilePath

command to run

-> [String]

any arguments

-> text

standard input

-> IO (ExitCode, text, text)

exitcode, stdout, stderr

Like readProcessWithExitCode, but with generalized input and output type. Aside from the usual text-like types, the output can be a list of Chunk a. This lets you process the chunks received from stdout and stderr lazil, in the order they are received, as well as the exit code. Utilities to handle Chunks are provided in System.Process.ListLike.

Utility functions based on showCommandForUser

showCreateProcessForUser :: CreateProcess -> String Source #

System.Process utility functions.

The Chunk 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.

Instances

Instances details
ListLikeProcessIO a c => ProcessResult a [Chunk a] Source # 
Instance details

Defined in System.Process.ListLike

Methods

pidf :: ProcessHandle -> [Chunk a] Source #

outf :: a -> [Chunk a] Source #

errf :: a -> [Chunk a] Source #

intf :: SomeException -> [Chunk a] Source #

codef :: ExitCode -> [Chunk a] Source #

ListLikeProcessIO a c => ProcessResult a (ExitCode, [Chunk a]) Source # 
Instance details

Defined in System.Process.ListLike

Methods

pidf :: ProcessHandle -> (ExitCode, [Chunk a]) Source #

outf :: a -> (ExitCode, [Chunk a]) Source #

errf :: a -> (ExitCode, [Chunk a]) Source #

intf :: SomeException -> (ExitCode, [Chunk a]) Source #

codef :: ExitCode -> (ExitCode, [Chunk a]) Source #

Show a => Show (Chunk a) Source # 
Instance details

Defined in System.Process.ListLike

Methods

showsPrec :: Int -> Chunk a -> ShowS

show :: Chunk a -> String

showList :: [Chunk a] -> ShowS

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

Turn a [Chunk a] into any other instance of ProcessOutput. I usually use this after processing the chunk list to turn it into the (ExitCode, String, String) type returned by readProcessWithExitCode.

foldOutput Source #

Arguments

:: (ProcessHandle -> r)

called when the process handle becomes known

-> (a -> r)

stdout handler

-> (a -> r)

stderr handler

-> (SomeException -> r)

exception handler

-> (ExitCode -> r)

exit code handler

-> Chunk a 
-> r 

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

Send Stdout chunks to stdout and Stderr chunks to stderr. Returns input list unmodified.

writeChunk :: ListLikeIO a c => Chunk a -> IO (Chunk a) Source #

Re-exports from process

data CmdSpec #

Constructors

ShellCommand String 
RawCommand FilePath [String] 

Instances

Instances details
IsString CmdSpec 
Instance details

Defined in System.Process.Common

Methods

fromString :: String -> CmdSpec #

Show CmdSpec 
Instance details

Defined in System.Process.Common

Methods

showsPrec :: Int -> CmdSpec -> ShowS

show :: CmdSpec -> String

showList :: [CmdSpec] -> ShowS

Eq CmdSpec 
Instance details

Defined in System.Process.Common

Methods

(==) :: CmdSpec -> CmdSpec -> Bool

(/=) :: CmdSpec -> CmdSpec -> Bool

data CreateProcess #

Constructors

CreateProcess 

Fields

Instances

Instances details
Show CreateProcess 
Instance details

Defined in System.Process.Common

Methods

showsPrec :: Int -> CreateProcess -> ShowS

show :: CreateProcess -> String

showList :: [CreateProcess] -> ShowS

Eq CreateProcess 
Instance details

Defined in System.Process.Common

ProcessMaker CreateProcess Source #

This is the usual maker argument to readCreateProcessLazy.

Instance details

Defined in System.Process.Common

Methods

process :: CreateProcess -> IO (Handle, Handle, Handle, ProcessHandle) Source #

showProcessMakerForUser :: CreateProcess -> String Source #

ProcessMaker (CreateProcess, BufferMode, BufferMode) Source #

Passing this to readCreateProcessLazy 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.

Instance details

Defined in System.Process.Common

Methods

process :: (CreateProcess, BufferMode, BufferMode) -> IO (Handle, Handle, Handle, ProcessHandle) Source #

showProcessMakerForUser :: (CreateProcess, BufferMode, BufferMode) -> String Source #

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

shell :: String -> CreateProcess #

showCommandForUser :: FilePath -> [String] -> String #

Orphan instances

Show ProcessHandle Source # 
Instance details

Methods

showsPrec :: Int -> ProcessHandle -> ShowS

show :: ProcessHandle -> String

showList :: [ProcessHandle] -> ShowS

ListLikeProcessIO String Char Source #

Like readProcessWithExitCode that takes a CreateProcess.

Instance details

Methods

forceOutput :: String -> IO String Source #

readChunks :: Handle -> IO [String] Source #

ProcessText String Char Source # 
Instance details