polysemy-process-0.15.0.0: lib/Polysemy/Process.hs
-- | Description: Polysemy Effects for System Processes
module Polysemy.Process (
-- * Introduction
-- $intro
-- * Effects
-- ** Process
Process,
recv,
send,
withProcess,
withProcess_,
withProcessOneshot,
withProcessOneshot_,
ProcessOptions (ProcessOptions),
ProcessKill (..),
ProcessError (..),
-- ** ProcessOutput
ProcessOutput,
OutputPipe (Stdout, Stderr),
ProcessOutputParseResult (..),
-- ** ProcessInput
ProcessInput,
-- ** SystemProcess
SystemProcess,
withSystemProcess,
withSystemProcess_,
Pid (..),
currentPid,
-- ** Pty
Pty,
withPty,
-- ** Signal Handling
-- $signal
Interrupt,
-- * Interpreters
-- ** Process
interpretProcess,
interpretProcessOneshot,
interpretProcessNative,
interpretProcessOneshotNative,
interpretProcess_,
interpretProcessOneshot_,
interpretProcessNative_,
interpretProcessOneshotNative_,
interpretInputOutputProcess,
interpretInputHandleBuffered,
interpretInputHandle,
interpretOutputHandleBuffered,
interpretOutputHandle,
interpretProcessIO,
interpretProcessHandles,
interpretProcessCurrent,
-- ** ProcessIO
ProcessIO,
interpretProcessByteString,
interpretProcessByteStringLines,
interpretProcessText,
interpretProcessTextLines,
-- ** ProcessOutput
interpretProcessOutputIgnore,
interpretProcessOutputId,
interpretProcessOutputLeft,
interpretProcessOutputRight,
interpretProcessOutputLines,
interpretProcessOutputText,
interpretProcessOutputTextLines,
interpretProcessOutputIncremental,
-- ** ProcessInput
interpretProcessInputId,
interpretProcessInputText,
-- ** SystemProcess
SysProcConf,
PipesProcess,
SystemProcessError,
SystemProcessScopeError,
interpretSystemProcessNative,
interpretSystemProcessNative_,
interpretSystemProcessWithProcess,
handleSystemProcessWithProcess,
interpretSystemProcessNativeSingle,
interpretSystemProcessWithProcessOpaque,
interpretSystemProcessNativeOpaqueSingle,
interpretSystemProcessNativeOpaque,
-- ** Pty
interpretPty,
-- ** Signal Handling
interpretInterrupt,
interpretInterruptOnce,
interpretInterruptNull,
-- * Tools
resolveExecutable,
) where
import Prelude hiding (send)
import Polysemy.Process.Data.Pid (Pid (..))
import Polysemy.Process.Data.ProcessError (ProcessError (..))
import Polysemy.Process.Data.ProcessKill (ProcessKill (..))
import Polysemy.Process.Data.ProcessOptions (ProcessOptions (ProcessOptions))
import Polysemy.Process.Data.ProcessOutputParseResult (ProcessOutputParseResult (..))
import Polysemy.Process.Data.SystemProcessError (SystemProcessError, SystemProcessScopeError)
import Polysemy.Process.Effect.Interrupt (Interrupt)
import Polysemy.Process.Effect.Process (
Process (..),
recv,
send,
withProcess,
withProcessOneshot,
withProcessOneshot_,
withProcess_,
)
import Polysemy.Process.Effect.ProcessInput (ProcessInput)
import Polysemy.Process.Effect.ProcessOutput (OutputPipe (Stderr, Stdout), ProcessOutput)
import Polysemy.Process.Effect.Pty (Pty, withPty)
import Polysemy.Process.Effect.SystemProcess (SystemProcess, withSystemProcess, withSystemProcess_)
import Polysemy.Process.Executable (resolveExecutable)
import Polysemy.Process.Interpreter.Interrupt (interpretInterrupt, interpretInterruptNull, interpretInterruptOnce)
import Polysemy.Process.Interpreter.Process (
interpretInputHandle,
interpretInputHandleBuffered,
interpretInputOutputProcess,
interpretOutputHandle,
interpretOutputHandleBuffered,
interpretProcess,
interpretProcessCurrent,
interpretProcessHandles,
interpretProcessIO,
interpretProcessNative,
interpretProcessNative_,
interpretProcess_,
)
import Polysemy.Process.Interpreter.ProcessIO (
ProcessIO,
interpretProcessByteString,
interpretProcessByteStringLines,
interpretProcessText,
interpretProcessTextLines,
)
import Polysemy.Process.Interpreter.ProcessInput (interpretProcessInputId, interpretProcessInputText)
import Polysemy.Process.Interpreter.ProcessOneshot (
interpretProcessOneshot,
interpretProcessOneshotNative,
interpretProcessOneshotNative_,
interpretProcessOneshot_,
)
import Polysemy.Process.Interpreter.ProcessOutput (
interpretProcessOutputId,
interpretProcessOutputIgnore,
interpretProcessOutputIncremental,
interpretProcessOutputLeft,
interpretProcessOutputLines,
interpretProcessOutputRight,
interpretProcessOutputText,
interpretProcessOutputTextLines,
)
import Polysemy.Process.Interpreter.Pty (interpretPty)
import Polysemy.Process.Interpreter.SystemProcess (
PipesProcess,
SysProcConf,
handleSystemProcessWithProcess,
interpretSystemProcessNative,
interpretSystemProcessNativeOpaque,
interpretSystemProcessNativeOpaqueSingle,
interpretSystemProcessNativeSingle,
interpretSystemProcessNative_,
interpretSystemProcessWithProcess,
interpretSystemProcessWithProcessOpaque,
)
import Polysemy.Process.SystemProcess (currentPid)
-- $intro
-- This library provides an abstraction of a system process in the effect 'Process', whose constructors represent the
-- three standard file descriptors.
--
-- An intermediate effect, 'SystemProcess', is more concretely tied to the functionality of the "System.Process"
-- library.
-- See "Polysemy.Process.SystemProcess" for its constructors.
--
-- The utility effect 'ProcessOutput' takes care of decoding the process output, getting called by the 'Process'
-- interpreters whenever a chunk was read, while accumulating chunks until they were decoded successfully.
-- See "Polysemy.Process.ProcessOutput" for its constructors.
--
-- The effect 'Pty' abstracts pseudo terminals.
-- See "Polysemy.Process.Pty" for its constructors.
-- $signal
-- #signal#