module Polysemy.Process.Interpreter.ProcessIO where
import Polysemy.Process.Effect.ProcessInput (ProcessInput)
import Polysemy.Process.Effect.ProcessOutput (OutputPipe (Stderr, Stdout), ProcessOutput)
import Polysemy.Process.Interpreter.ProcessInput (interpretProcessInputId, interpretProcessInputText)
import Polysemy.Process.Interpreter.ProcessOutput (
interpretProcessOutputId,
interpretProcessOutputIgnore,
interpretProcessOutputLines,
interpretProcessOutputText,
interpretProcessOutputTextLines,
)
type ProcessIO i o =
[
ProcessInput i,
ProcessOutput 'Stdout o,
ProcessOutput 'Stderr o
]
interpretProcessByteString ::
InterpretersFor (ProcessIO ByteString ByteString) r
interpretProcessByteString :: forall (r :: [Effect]) a.
Sem (Append (ProcessIO ByteString ByteString) r) a -> Sem r a
interpretProcessByteString =
forall (p :: OutputPipe) a1 (r :: [Effect]) a2.
Sem (ProcessOutput p a1 : r) a2 -> Sem r a2
interpretProcessOutputIgnore @'Stderr (Sem (ProcessOutput 'Stderr ByteString : r) a -> Sem r a)
-> (Sem
(ProcessInput ByteString
: ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
-> Sem (ProcessOutput 'Stderr ByteString : r) a)
-> Sem
(ProcessInput ByteString
: ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
-> Sem r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
forall (p :: OutputPipe) (r :: [Effect]) a.
Sem (ProcessOutput p ByteString : r) a -> Sem r a
interpretProcessOutputId @'Stdout (Sem
(ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
-> Sem (ProcessOutput 'Stderr ByteString : r) a)
-> (Sem
(ProcessInput ByteString
: ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
-> Sem
(ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a)
-> Sem
(ProcessInput ByteString
: ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
-> Sem (ProcessOutput 'Stderr ByteString : r) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
Sem
(ProcessInput ByteString
: ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
-> Sem
(ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
forall (r :: [Effect]) a.
Sem (ProcessInput ByteString : r) a -> Sem r a
interpretProcessInputId
interpretProcessByteStringLines ::
InterpretersFor (ProcessIO ByteString ByteString) r
interpretProcessByteStringLines :: forall (r :: [Effect]) a.
Sem (Append (ProcessIO ByteString ByteString) r) a -> Sem r a
interpretProcessByteStringLines =
forall (p :: OutputPipe) a1 (r :: [Effect]) a2.
Sem (ProcessOutput p a1 : r) a2 -> Sem r a2
interpretProcessOutputIgnore @'Stderr (Sem (ProcessOutput 'Stderr ByteString : r) a -> Sem r a)
-> (Sem
(ProcessInput ByteString
: ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
-> Sem (ProcessOutput 'Stderr ByteString : r) a)
-> Sem
(ProcessInput ByteString
: ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
-> Sem r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
forall (p :: OutputPipe) (r :: [Effect]) a.
Sem (ProcessOutput p ByteString : r) a -> Sem r a
interpretProcessOutputLines @'Stdout (Sem
(ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
-> Sem (ProcessOutput 'Stderr ByteString : r) a)
-> (Sem
(ProcessInput ByteString
: ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
-> Sem
(ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a)
-> Sem
(ProcessInput ByteString
: ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
-> Sem (ProcessOutput 'Stderr ByteString : r) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
Sem
(ProcessInput ByteString
: ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
-> Sem
(ProcessOutput 'Stdout ByteString
: ProcessOutput 'Stderr ByteString : r)
a
forall (r :: [Effect]) a.
Sem (ProcessInput ByteString : r) a -> Sem r a
interpretProcessInputId
interpretProcessText ::
InterpretersFor (ProcessIO Text Text) r
interpretProcessText :: forall (r :: [Effect]) a.
Sem (Append (ProcessIO Text Text) r) a -> Sem r a
interpretProcessText =
forall (p :: OutputPipe) a1 (r :: [Effect]) a2.
Sem (ProcessOutput p a1 : r) a2 -> Sem r a2
interpretProcessOutputIgnore @'Stderr (Sem (ProcessOutput 'Stderr Text : r) a -> Sem r a)
-> (Sem
(ProcessInput Text
: ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r)
a
-> Sem (ProcessOutput 'Stderr Text : r) a)
-> Sem
(ProcessInput Text
: ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r)
a
-> Sem r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
forall (p :: OutputPipe) (r :: [Effect]) a.
Sem (ProcessOutput p Text : r) a -> Sem r a
interpretProcessOutputText @'Stdout (Sem
(ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r) a
-> Sem (ProcessOutput 'Stderr Text : r) a)
-> (Sem
(ProcessInput Text
: ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r)
a
-> Sem
(ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r) a)
-> Sem
(ProcessInput Text
: ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r)
a
-> Sem (ProcessOutput 'Stderr Text : r) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
Sem
(ProcessInput Text
: ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r)
a
-> Sem
(ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r) a
forall (r :: [Effect]) a. Sem (ProcessInput Text : r) a -> Sem r a
interpretProcessInputText
interpretProcessTextLines ::
InterpretersFor (ProcessIO Text Text) r
interpretProcessTextLines :: forall (r :: [Effect]) a.
Sem (Append (ProcessIO Text Text) r) a -> Sem r a
interpretProcessTextLines =
forall (p :: OutputPipe) a1 (r :: [Effect]) a2.
Sem (ProcessOutput p a1 : r) a2 -> Sem r a2
interpretProcessOutputIgnore @'Stderr (Sem (ProcessOutput 'Stderr Text : r) a -> Sem r a)
-> (Sem
(ProcessInput Text
: ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r)
a
-> Sem (ProcessOutput 'Stderr Text : r) a)
-> Sem
(ProcessInput Text
: ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r)
a
-> Sem r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
forall (p :: OutputPipe) (r :: [Effect]) a.
Sem (ProcessOutput p Text : r) a -> Sem r a
interpretProcessOutputTextLines @'Stdout (Sem
(ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r) a
-> Sem (ProcessOutput 'Stderr Text : r) a)
-> (Sem
(ProcessInput Text
: ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r)
a
-> Sem
(ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r) a)
-> Sem
(ProcessInput Text
: ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r)
a
-> Sem (ProcessOutput 'Stderr Text : r) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
Sem
(ProcessInput Text
: ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r)
a
-> Sem
(ProcessOutput 'Stdout Text : ProcessOutput 'Stderr Text : r) a
forall (r :: [Effect]) a. Sem (ProcessInput Text : r) a -> Sem r a
interpretProcessInputText