shh-0.4.0.1: src/Shh.hs
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
-- | Shh provides a shell-like environment for Haskell.
module Shh
( initInteractive
-- | == Constructing a `Proc`
-- | === External Processes
-- These allow for the construction of @`Proc`@s that call external
-- processes. You will often use the TemplateHaskell functions below
-- to create these.
, exe
, mkProc
, mkProc'
, runProc
, Proc()
-- | === "Native" Processes
-- You can also create native Haskell @`Proc`@s which behave the same
-- way, but simply run Haskell functions instead of external processes.
--
-- NB: The functions here that operate on @String@s from @stdin@ read them
-- lazily, and can be used in a streaming fashion.
, pureProc
, writeOutput, writeError
, prefixLines
, capture
, captureTrim
, captureSplit
, captureSplit0
, captureLines
, readInput
, readInputSplit
, readInputSplit0
, readInputLines
, readInputP
, readInputSplitP
, readInputSplit0P
, readInputLinesP
, xargs1
-- | == Piping and Redirection
, PipeResult(..)
, (<|)
, Stream(..)
, devNull
-- | === Lazy/Streaming reads
-- These reads are lazy. The process is run long enough to produce
-- the amount of output that is actually used. It is therefor suitable
-- for use with infinite output streams. The process is terminated
-- as soon the function finishes. Note that the result is forced to
-- normal form to prevent any accidental reading after the process has
-- terminated.
--
-- NB: See `readInput` and `pureProc` for more flexible options to those
-- listed here.
, withRead
, withReadSplit0
, withReadLines
, withReadWords
-- | === Strict reads
-- NB: See also `capture`
, readProc
, readTrim
, readSplit0
, readLines
, readWords
, readAuto
-- | === Writing to @stdin@
-- NB: See also `writeOutput` for an `echo`-like option.
, (<<<), (>>>), writeProc
, readWriteProc
, apply
-- | === String manipulation
-- Utility functions for dealing with common string issues in shell
-- scripting.
, trim
, split0
-- | == Exceptions
-- If any exception is allowed to propagate out of a pipeline, all the
-- processes comprising the pipeline will be terminated. This is contrary
-- to how a shell normally works (even with @-o pipefail@!).
, Failure(..)
, ignoreFailure
, catchFailure
, catchCode
-- | == Constructing Arguments
, ExecArg(..)
, ExecArgs()
, Unit()
-- | == Template Haskell helpers
, encodeIdentifier
, ExecReference(..)
, load
, loadEnv
, loadFromDirs
, loadFromBins
, loadAnnotated
, loadAnnotatedEnv
, loadAnnotatedFromDirs
, loadExe
, loadExeAs
, pathBins
, pathBinsAbs
-- | = Builtins
, cd
) where
import Shh.Internal