turtle-1.5.13: Shell programming, Haskell-style

Safe HaskellNone
LanguageHaskell2010

Turtle.Bytes

Contents

Description

This module provides ByteString analogs of several utilities in Turtle.Prelude. The main difference is that the chunks of bytes read by these utilities are not necessarily aligned to line boundaries.

Synopsis

Byte operations

stdin :: Shell ByteString Source #

Read chunks of bytes from standard input

The chunks are not necessarily aligned to line boundaries

input :: FilePath -> Shell ByteString Source #

Read chunks of bytes from a file

The chunks are not necessarily aligned to line boundaries

inhandle :: Handle -> Shell ByteString Source #

Read chunks of bytes from a Handle

The chunks are not necessarily aligned to line boundaries

stdout :: MonadIO io => Shell ByteString -> io () Source #

Stream chunks of bytes to standard output

The chunks are not necessarily aligned to line boundaries

output :: MonadIO io => FilePath -> Shell ByteString -> io () Source #

Stream chunks of bytes to a file

The chunks do not need to be aligned to line boundaries

outhandle :: MonadIO io => Handle -> Shell ByteString -> io () Source #

Stream chunks of bytes to a Handle

The chunks do not need to be aligned to line boundaries

append :: MonadIO io => FilePath -> Shell ByteString -> io () Source #

Append chunks of bytes to append to a file

The chunks do not need to be aligned to line boundaries

stderr :: MonadIO io => Shell ByteString -> io () Source #

Stream chunks of bytes to standard error

The chunks do not need to be aligned to line boundaries

strict :: MonadIO io => Shell ByteString -> io ByteString Source #

Read in a stream's contents strictly

Subprocess management

proc Source #

Arguments

:: MonadIO io 
=> Text

Command

-> [Text]

Arguments

-> Shell ByteString

Chunks of bytes written to process input

-> io ExitCode

Exit code

Run a command using execvp, retrieving the exit code

The command inherits stdout and stderr for the current process

shell Source #

Arguments

:: MonadIO io 
=> Text

Command line

-> Shell ByteString

Chunks of bytes written to process input

-> io ExitCode

Exit code

Run a command line using the shell, retrieving the exit code

This command is more powerful than proc, but highly vulnerable to code injection if you template the command line with untrusted input

The command inherits stdout and stderr for the current process

procs Source #

Arguments

:: MonadIO io 
=> Text

Command

-> [Text]

Arguments

-> Shell ByteString

Chunks of bytes written to process input

-> io () 

This function is identical to proc except this throws ProcFailed for non-zero exit codes

shells Source #

Arguments

:: MonadIO io 
=> Text

Command line

-> Shell ByteString

Chunks of bytes written to process input

-> io ()

Exit code

This function is identical to shell except this throws ShellFailed for non-zero exit codes

inproc Source #

Arguments

:: Text

Command

-> [Text]

Arguments

-> Shell ByteString

Chunks of bytes written to process input

-> Shell ByteString

Chunks of bytes read from process output

Run a command using execvp, streaming stdout as chunks of ByteString

The command inherits stderr for the current process

inshell Source #

Arguments

:: Text

Command line

-> Shell ByteString

Chunks of bytes written to process input

-> Shell ByteString

Chunks of bytes read from process output

Run a command line using the shell, streaming stdout as chunks of ByteString

This command is more powerful than inproc, but highly vulnerable to code injection if you template the command line with untrusted input

The command inherits stderr for the current process

inprocWithErr Source #

Arguments

:: Text

Command

-> [Text]

Arguments

-> Shell ByteString

Chunks of bytes written to process input

-> Shell (Either ByteString ByteString)

Chunks of either output (Right) or error (Left)

Run a command using the shell, streaming stdout and stderr as chunks of ByteString. Chunks from stdout are wrapped in Right and chunks from stderr are wrapped in Left.

Throws an ExitCode exception if the command returns a non-zero exit code

inshellWithErr Source #

Arguments

:: Text

Command line

-> Shell ByteString

Chunks of bytes written to process input

-> Shell (Either ByteString ByteString)

Chunks of either output (Right) or error (Left)

Run a command line using the shell, streaming stdout and stderr as chunks of ByteString. Chunks from stdout are wrapped in Right and chunks from stderr are wrapped in Left.

This command is more powerful than inprocWithErr, but highly vulnerable to code injection if you template the command line with untrusted input

Throws an ExitCode exception if the command returns a non-zero exit code

procStrict Source #

Arguments

:: MonadIO io 
=> Text

Command

-> [Text]

Arguments

-> Shell ByteString

Chunks of bytes written to process input

-> io (ExitCode, ByteString)

Exit code and stdout

Run a command using execvp, retrieving the exit code and stdout as a non-lazy blob of Text

The command inherits stderr for the current process

shellStrict Source #

Arguments

:: MonadIO io 
=> Text

Command line

-> Shell ByteString

Chunks of bytes written to process input

-> io (ExitCode, ByteString)

Exit code and stdout

Run a command line using the shell, retrieving the exit code and stdout as a non-lazy blob of Text

This command is more powerful than proc, but highly vulnerable to code injection if you template the command line with untrusted input

The command inherits stderr for the current process

procStrictWithErr Source #

Arguments

:: MonadIO io 
=> Text

Command

-> [Text]

Arguments

-> Shell ByteString

Chunks of bytes written to process input

-> io (ExitCode, ByteString, ByteString)

(Exit code, stdout, stderr)

Run a command using execvp, retrieving the exit code, stdout, and stderr as a non-lazy blob of Text

shellStrictWithErr Source #

Arguments

:: MonadIO io 
=> Text

Command line

-> Shell ByteString

Chunks of bytes written to process input

-> io (ExitCode, ByteString, ByteString)

(Exit code, stdout, stderr)

Run a command line using the shell, retrieving the exit code, stdout, and stderr as a non-lazy blob of Text

This command is more powerful than proc, but highly vulnerable to code injection if you template the command line with untrusted input

system Source #

Arguments

:: MonadIO io 
=> CreateProcess

Command

-> Shell ByteString

Chunks of bytes written to process input

-> io ExitCode

Exit code

system generalizes shell and proc by allowing you to supply your own custom CreateProcess. This is for advanced users who feel comfortable using the lower-level process API

stream Source #

Arguments

:: CreateProcess

Command

-> Shell ByteString

Chunks of bytes written to process input

-> Shell ByteString

Chunks of bytes read from process output

stream generalizes inproc and inshell by allowing you to supply your own custom CreateProcess. This is for advanced users who feel comfortable using the lower-level process API

Throws an ExitCode exception if the command returns a non-zero exit code

streamWithErr Source #

Arguments

:: CreateProcess

Command

-> Shell ByteString

Chunks of bytes written to process input

-> Shell (Either ByteString ByteString)

Chunks of bytes read from process output

streamWithErr generalizes inprocWithErr and inshellWithErr by allowing you to supply your own custom CreateProcess. This is for advanced users who feel comfortable using the lower-level process API

Throws an ExitCode exception if the command returns a non-zero exit code

systemStrict Source #

Arguments

:: MonadIO io 
=> CreateProcess

Command

-> Shell ByteString

Chunks of bytes written to process input

-> io (ExitCode, ByteString)

Exit code and stdout

systemStrict generalizes shellStrict and procStrict by allowing you to supply your own custom CreateProcess. This is for advanced users who feel comfortable using the lower-level process API

systemStrictWithErr Source #

Arguments

:: MonadIO io 
=> CreateProcess

Command

-> Shell ByteString

Chunks of bytes written to process input

-> io (ExitCode, ByteString, ByteString)

Exit code and stdout

systemStrictWithErr generalizes shellStrictWithErr and procStrictWithErr by allowing you to supply your own custom CreateProcess. This is for advanced users who feel comfortable using the lower-level process API