{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Control.Process.CreateProcess(
  HasCreateProcess(..)
, AsCreateProcess(..)
, streams
, streams1
) where

import Control.Applicative ( Applicative((<*>)) )
import Control.Category ( Category(id, (.)) )
import Control.Lens
    ( Traversable(traverse),
      _Just,
      only,
      Field1(_1),
      Field2(_2),
      Lens',
      Prism',
      Traversal',
      Traversal1' )
import Control.Process.UserID ( HasUserID(userIDWord32) )
import Data.Bool ( Bool(True) )
import Data.Functor ( Functor(fmap), (<$>) )
import Data.Functor.Apply ( Apply((<.>)) )
import Data.Maybe ( Maybe(..) )
import Data.String ( String )
import Data.Word ( Word32 )
import System.FilePath ( FilePath )
import System.Process(StdStream(..), CreateProcess(CreateProcess))
import System.Process.Internals(GroupID, UserID)

class HasCreateProcess a where
  create_process ::
    Lens' a CreateProcess
  child_group ::
    Lens' a (Maybe GroupID)
  {-# INLINE child_group #-}
  child_group =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((Maybe GroupID -> f (Maybe GroupID))
    -> CreateProcess -> f CreateProcess)
-> (Maybe GroupID -> f (Maybe GroupID))
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Maybe GroupID -> f (Maybe GroupID))
-> CreateProcess -> f CreateProcess
forall a. HasCreateProcess a => Lens' a (Maybe GroupID)
child_group
  child_user ::
    Lens' a (Maybe UserID)
  {-# INLINE child_user #-}
  child_user =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((Maybe UserID -> f (Maybe UserID))
    -> CreateProcess -> f CreateProcess)
-> (Maybe UserID -> f (Maybe UserID))
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Maybe UserID -> f (Maybe UserID))
-> CreateProcess -> f CreateProcess
forall a. HasCreateProcess a => Lens' a (Maybe UserID)
child_user
  close_fds ::
    Lens' a Bool
  {-# INLINE close_fds #-}
  close_fds =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((Bool -> f Bool) -> CreateProcess -> f CreateProcess)
-> (Bool -> f Bool)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Bool -> f Bool) -> CreateProcess -> f CreateProcess
forall a. HasCreateProcess a => Lens' a Bool
close_fds
  create_group ::
    Lens' a Bool
  {-# INLINE create_group #-}
  create_group =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((Bool -> f Bool) -> CreateProcess -> f CreateProcess)
-> (Bool -> f Bool)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Bool -> f Bool) -> CreateProcess -> f CreateProcess
forall a. HasCreateProcess a => Lens' a Bool
create_group
  create_new_console ::
    Lens' a Bool
  {-# INLINE create_new_console #-}
  create_new_console =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((Bool -> f Bool) -> CreateProcess -> f CreateProcess)
-> (Bool -> f Bool)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Bool -> f Bool) -> CreateProcess -> f CreateProcess
forall a. HasCreateProcess a => Lens' a Bool
create_new_console
  cwd ::
    Lens' a (Maybe FilePath)
  {-# INLINE cwd #-}
  cwd =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((Maybe FilePath -> f (Maybe FilePath))
    -> CreateProcess -> f CreateProcess)
-> (Maybe FilePath -> f (Maybe FilePath))
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Maybe FilePath -> f (Maybe FilePath))
-> CreateProcess -> f CreateProcess
forall a. HasCreateProcess a => Lens' a (Maybe FilePath)
cwd
  delegate_ctlc ::
    Lens' a Bool
  {-# INLINE delegate_ctlc #-}
  delegate_ctlc =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((Bool -> f Bool) -> CreateProcess -> f CreateProcess)
-> (Bool -> f Bool)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Bool -> f Bool) -> CreateProcess -> f CreateProcess
forall a. HasCreateProcess a => Lens' a Bool
delegate_ctlc
  detach_console ::
    Lens' a Bool
  {-# INLINE detach_console #-}
  detach_console =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((Bool -> f Bool) -> CreateProcess -> f CreateProcess)
-> (Bool -> f Bool)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Bool -> f Bool) -> CreateProcess -> f CreateProcess
forall a. HasCreateProcess a => Lens' a Bool
detach_console
  env ::
    Lens' a (Maybe [(String, String)])
  {-# INLINE env #-}
  env =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((Maybe [(FilePath, FilePath)]
     -> f (Maybe [(FilePath, FilePath)]))
    -> CreateProcess -> f CreateProcess)
-> (Maybe [(FilePath, FilePath)]
    -> f (Maybe [(FilePath, FilePath)]))
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Maybe [(FilePath, FilePath)] -> f (Maybe [(FilePath, FilePath)]))
-> CreateProcess -> f CreateProcess
forall a.
HasCreateProcess a =>
Lens' a (Maybe [(FilePath, FilePath)])
env
  new_session ::
    Lens' a Bool
  {-# INLINE new_session #-}
  new_session =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((Bool -> f Bool) -> CreateProcess -> f CreateProcess)
-> (Bool -> f Bool)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Bool -> f Bool) -> CreateProcess -> f CreateProcess
forall a. HasCreateProcess a => Lens' a Bool
new_session
  std_err ::
    Lens' a StdStream
  {-# INLINE std_err #-}
  std_err =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((StdStream -> f StdStream) -> CreateProcess -> f CreateProcess)
-> (StdStream -> f StdStream)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (StdStream -> f StdStream) -> CreateProcess -> f CreateProcess
forall a. HasCreateProcess a => Lens' a StdStream
std_err
  std_in ::
    Lens' a StdStream
  {-# INLINE std_in #-}
  std_in =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((StdStream -> f StdStream) -> CreateProcess -> f CreateProcess)
-> (StdStream -> f StdStream)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (StdStream -> f StdStream) -> CreateProcess -> f CreateProcess
forall a. HasCreateProcess a => Lens' a StdStream
std_in
  std_out ::
    Lens' a StdStream
  {-# INLINE std_out #-}
  std_out =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((StdStream -> f StdStream) -> CreateProcess -> f CreateProcess)
-> (StdStream -> f StdStream)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (StdStream -> f StdStream) -> CreateProcess -> f CreateProcess
forall a. HasCreateProcess a => Lens' a StdStream
std_out
  use_process_jobs ::
    Lens' a Bool
  {-# INLINE use_process_jobs #-}
  use_process_jobs =
    (CreateProcess -> f CreateProcess) -> a -> f a
forall a. HasCreateProcess a => Lens' a CreateProcess
create_process ((CreateProcess -> f CreateProcess) -> a -> f a)
-> ((Bool -> f Bool) -> CreateProcess -> f CreateProcess)
-> (Bool -> f Bool)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Bool -> f Bool) -> CreateProcess -> f CreateProcess
forall a. HasCreateProcess a => Lens' a Bool
use_process_jobs

  cwd' ::
    Traversal' a FilePath
  cwd' =
    (Maybe FilePath -> f (Maybe FilePath)) -> a -> f a
forall a. HasCreateProcess a => Lens' a (Maybe FilePath)
cwd ((Maybe FilePath -> f (Maybe FilePath)) -> a -> f a)
-> ((FilePath -> f FilePath)
    -> Maybe FilePath -> f (Maybe FilePath))
-> (FilePath -> f FilePath)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (FilePath -> f FilePath) -> Maybe FilePath -> f (Maybe FilePath)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
  envList ::
    Traversal' a [(String, String)]
  envList =
    (Maybe [(FilePath, FilePath)] -> f (Maybe [(FilePath, FilePath)]))
-> a -> f a
forall a.
HasCreateProcess a =>
Lens' a (Maybe [(FilePath, FilePath)])
env ((Maybe [(FilePath, FilePath)] -> f (Maybe [(FilePath, FilePath)]))
 -> a -> f a)
-> (([(FilePath, FilePath)] -> f [(FilePath, FilePath)])
    -> Maybe [(FilePath, FilePath)]
    -> f (Maybe [(FilePath, FilePath)]))
-> ([(FilePath, FilePath)] -> f [(FilePath, FilePath)])
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. ([(FilePath, FilePath)] -> f [(FilePath, FilePath)])
-> Maybe [(FilePath, FilePath)] -> f (Maybe [(FilePath, FilePath)])
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
  envElement ::
    Traversal' a (String, String)
  envElement =
    ([(FilePath, FilePath)] -> f [(FilePath, FilePath)]) -> a -> f a
forall a. HasCreateProcess a => Traversal' a [(FilePath, FilePath)]
envList (([(FilePath, FilePath)] -> f [(FilePath, FilePath)]) -> a -> f a)
-> (((FilePath, FilePath) -> f (FilePath, FilePath))
    -> [(FilePath, FilePath)] -> f [(FilePath, FilePath)])
-> ((FilePath, FilePath) -> f (FilePath, FilePath))
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. ((FilePath, FilePath) -> f (FilePath, FilePath))
-> [(FilePath, FilePath)] -> f [(FilePath, FilePath)]
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse
  envElementKey ::
    Traversal' a String
  envElementKey =
    ((FilePath, FilePath) -> f (FilePath, FilePath)) -> a -> f a
forall a. HasCreateProcess a => Traversal' a (FilePath, FilePath)
envElement (((FilePath, FilePath) -> f (FilePath, FilePath)) -> a -> f a)
-> ((FilePath -> f FilePath)
    -> (FilePath, FilePath) -> f (FilePath, FilePath))
-> (FilePath -> f FilePath)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (FilePath -> f FilePath)
-> (FilePath, FilePath) -> f (FilePath, FilePath)
forall s t a b. Field1 s t a b => Lens s t a b
_1
  envElementValue ::
    Traversal' a String
  envElementValue =
    ((FilePath, FilePath) -> f (FilePath, FilePath)) -> a -> f a
forall a. HasCreateProcess a => Traversal' a (FilePath, FilePath)
envElement (((FilePath, FilePath) -> f (FilePath, FilePath)) -> a -> f a)
-> ((FilePath -> f FilePath)
    -> (FilePath, FilePath) -> f (FilePath, FilePath))
-> (FilePath -> f FilePath)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (FilePath -> f FilePath)
-> (FilePath, FilePath) -> f (FilePath, FilePath)
forall s t a b. Field2 s t a b => Lens s t a b
_2
  close_fds' ::
    Traversal' a ()
  close_fds' =
    (Bool -> f Bool) -> a -> f a
forall a. HasCreateProcess a => Lens' a Bool
close_fds ((Bool -> f Bool) -> a -> f a)
-> ((() -> f ()) -> Bool -> f Bool) -> (() -> f ()) -> a -> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Bool -> Prism' Bool ()
forall a. Eq a => a -> Prism' a ()
only Bool
True
  create_group' ::
    Traversal' a ()
  create_group' =
    (Bool -> f Bool) -> a -> f a
forall a. HasCreateProcess a => Lens' a Bool
create_group ((Bool -> f Bool) -> a -> f a)
-> ((() -> f ()) -> Bool -> f Bool) -> (() -> f ()) -> a -> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Bool -> Prism' Bool ()
forall a. Eq a => a -> Prism' a ()
only Bool
True
  delegate_ctlc' ::
    Traversal' a ()
  delegate_ctlc' =
    (Bool -> f Bool) -> a -> f a
forall a. HasCreateProcess a => Lens' a Bool
delegate_ctlc ((Bool -> f Bool) -> a -> f a)
-> ((() -> f ()) -> Bool -> f Bool) -> (() -> f ()) -> a -> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Bool -> Prism' Bool ()
forall a. Eq a => a -> Prism' a ()
only Bool
True
  detach_console' ::
    Traversal' a ()
  detach_console' =
    (Bool -> f Bool) -> a -> f a
forall a. HasCreateProcess a => Lens' a Bool
detach_console ((Bool -> f Bool) -> a -> f a)
-> ((() -> f ()) -> Bool -> f Bool) -> (() -> f ()) -> a -> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Bool -> Prism' Bool ()
forall a. Eq a => a -> Prism' a ()
only Bool
True
  create_new_console' ::
    Traversal' a ()
  create_new_console' =
    (Bool -> f Bool) -> a -> f a
forall a. HasCreateProcess a => Lens' a Bool
create_new_console ((Bool -> f Bool) -> a -> f a)
-> ((() -> f ()) -> Bool -> f Bool) -> (() -> f ()) -> a -> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Bool -> Prism' Bool ()
forall a. Eq a => a -> Prism' a ()
only Bool
True
  new_session' ::
    Traversal' a ()
  new_session' =
    (Bool -> f Bool) -> a -> f a
forall a. HasCreateProcess a => Lens' a Bool
new_session ((Bool -> f Bool) -> a -> f a)
-> ((() -> f ()) -> Bool -> f Bool) -> (() -> f ()) -> a -> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Bool -> Prism' Bool ()
forall a. Eq a => a -> Prism' a ()
only Bool
True
  child_group' ::
    Traversal' a GroupID
  child_group' =
    (Maybe GroupID -> f (Maybe GroupID)) -> a -> f a
forall a. HasCreateProcess a => Lens' a (Maybe GroupID)
child_group ((Maybe GroupID -> f (Maybe GroupID)) -> a -> f a)
-> ((GroupID -> f GroupID) -> Maybe GroupID -> f (Maybe GroupID))
-> (GroupID -> f GroupID)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (GroupID -> f GroupID) -> Maybe GroupID -> f (Maybe GroupID)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
  child_user' ::
    Traversal' a UserID
  child_user' =
    (Maybe UserID -> f (Maybe UserID)) -> a -> f a
forall a. HasCreateProcess a => Lens' a (Maybe UserID)
child_user ((Maybe UserID -> f (Maybe UserID)) -> a -> f a)
-> ((UserID -> f UserID) -> Maybe UserID -> f (Maybe UserID))
-> (UserID -> f UserID)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (UserID -> f UserID) -> Maybe UserID -> f (Maybe UserID)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
  child_user'' ::
    Traversal' a Word32
  child_user'' =
    (UserID -> f UserID) -> a -> f a
forall a. HasCreateProcess a => Traversal' a UserID
child_user' ((UserID -> f UserID) -> a -> f a)
-> ((Word32 -> f Word32) -> UserID -> f UserID)
-> (Word32 -> f Word32)
-> a
-> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Word32 -> f Word32) -> UserID -> f UserID
forall a. HasUserID a => Lens' a Word32
userIDWord32
  use_process_jobs' ::
    Traversal' a ()
  use_process_jobs' =
    (Bool -> f Bool) -> a -> f a
forall a. HasCreateProcess a => Lens' a Bool
use_process_jobs ((Bool -> f Bool) -> a -> f a)
-> ((() -> f ()) -> Bool -> f Bool) -> (() -> f ()) -> a -> f a
forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Bool -> Prism' Bool ()
forall a. Eq a => a -> Prism' a ()
only Bool
True

instance HasCreateProcess CreateProcess where
  create_process :: (CreateProcess -> f CreateProcess)
-> CreateProcess -> f CreateProcess
create_process =
    (CreateProcess -> f CreateProcess)
-> CreateProcess -> f CreateProcess
forall k (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id
  child_group :: (Maybe GroupID -> f (Maybe GroupID))
-> CreateProcess -> f CreateProcess
child_group Maybe GroupID -> f (Maybe GroupID)
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (Maybe GroupID -> CreateProcess)
-> f (Maybe GroupID) -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Maybe GroupID
chg' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg' Maybe UserID
chu Bool
upj) (Maybe GroupID -> f (Maybe GroupID)
f Maybe GroupID
chg)
  child_user :: (Maybe UserID -> f (Maybe UserID))
-> CreateProcess -> f CreateProcess
child_user Maybe UserID -> f (Maybe UserID)
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (Maybe UserID -> CreateProcess)
-> f (Maybe UserID) -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Maybe UserID
chu' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu' Bool
upj) (Maybe UserID -> f (Maybe UserID)
f Maybe UserID
chu)
  close_fds :: (Bool -> f Bool) -> CreateProcess -> f CreateProcess
close_fds Bool -> f Bool
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (Bool -> CreateProcess) -> f Bool -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Bool
clf' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf' Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) (Bool -> f Bool
f Bool
clf)
  create_group :: (Bool -> f Bool) -> CreateProcess -> f CreateProcess
create_group Bool -> f Bool
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (Bool -> CreateProcess) -> f Bool -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Bool
crg' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg' Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) (Bool -> f Bool
f Bool
crg)
  create_new_console :: (Bool -> f Bool) -> CreateProcess -> f CreateProcess
create_new_console Bool -> f Bool
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (Bool -> CreateProcess) -> f Bool -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Bool
cnc' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc' Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) (Bool -> f Bool
f Bool
cnc)
  cwd :: (Maybe FilePath -> f (Maybe FilePath))
-> CreateProcess -> f CreateProcess
cwd Maybe FilePath -> f (Maybe FilePath)
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (Maybe FilePath -> CreateProcess)
-> f (Maybe FilePath) -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Maybe FilePath
cw' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw' Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) (Maybe FilePath -> f (Maybe FilePath)
f Maybe FilePath
cw)
  delegate_ctlc :: (Bool -> f Bool) -> CreateProcess -> f CreateProcess
delegate_ctlc Bool -> f Bool
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (Bool -> CreateProcess) -> f Bool -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Bool
dct' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct' Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) (Bool -> f Bool
f Bool
dct)
  detach_console :: (Bool -> f Bool) -> CreateProcess -> f CreateProcess
detach_console Bool -> f Bool
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (Bool -> CreateProcess) -> f Bool -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Bool
dcl' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl' Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) (Bool -> f Bool
f Bool
dcl)
  env :: (Maybe [(FilePath, FilePath)] -> f (Maybe [(FilePath, FilePath)]))
-> CreateProcess -> f CreateProcess
env Maybe [(FilePath, FilePath)] -> f (Maybe [(FilePath, FilePath)])
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (Maybe [(FilePath, FilePath)] -> CreateProcess)
-> f (Maybe [(FilePath, FilePath)]) -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Maybe [(FilePath, FilePath)]
en' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en' StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) (Maybe [(FilePath, FilePath)] -> f (Maybe [(FilePath, FilePath)])
f Maybe [(FilePath, FilePath)]
en)
  new_session :: (Bool -> f Bool) -> CreateProcess -> f CreateProcess
new_session Bool -> f Bool
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (Bool -> CreateProcess) -> f Bool -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Bool
nss' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss' Maybe GroupID
chg Maybe UserID
chu Bool
upj) (Bool -> f Bool
f Bool
nss)
  std_err :: (StdStream -> f StdStream) -> CreateProcess -> f CreateProcess
std_err StdStream -> f StdStream
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (StdStream -> CreateProcess) -> f StdStream -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\StdStream
ste' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste' Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) (StdStream -> f StdStream
f StdStream
ste)
  std_in :: (StdStream -> f StdStream) -> CreateProcess -> f CreateProcess
std_in StdStream -> f StdStream
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (StdStream -> CreateProcess) -> f StdStream -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\StdStream
sti' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti' StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) (StdStream -> f StdStream
f StdStream
sti)
  std_out :: (StdStream -> f StdStream) -> CreateProcess -> f CreateProcess
std_out StdStream -> f StdStream
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (StdStream -> CreateProcess) -> f StdStream -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\StdStream
sto' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto' StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) (StdStream -> f StdStream
f StdStream
sto)
  use_process_jobs :: (Bool -> f Bool) -> CreateProcess -> f CreateProcess
use_process_jobs Bool -> f Bool
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
    (Bool -> CreateProcess) -> f Bool -> f CreateProcess
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Bool
upj' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj') (Bool -> f Bool
f Bool
upj)

class AsCreateProcess a where
  _CreateProcess ::
    Prism' a CreateProcess

instance AsCreateProcess CreateProcess where
  _CreateProcess :: p CreateProcess (f CreateProcess)
-> p CreateProcess (f CreateProcess)
_CreateProcess =
    p CreateProcess (f CreateProcess)
-> p CreateProcess (f CreateProcess)
forall k (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id

streams ::
  Traversal' CreateProcess StdStream
streams :: (StdStream -> f StdStream) -> CreateProcess -> f CreateProcess
streams StdStream -> f StdStream
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
  (\StdStream
sti' StdStream
sto' StdStream
ste' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti' StdStream
sto' StdStream
ste' Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) (StdStream -> StdStream -> StdStream -> CreateProcess)
-> f StdStream -> f (StdStream -> StdStream -> CreateProcess)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StdStream -> f StdStream
f StdStream
sti f (StdStream -> StdStream -> CreateProcess)
-> f StdStream -> f (StdStream -> CreateProcess)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> StdStream -> f StdStream
f StdStream
sto f (StdStream -> CreateProcess) -> f StdStream -> f CreateProcess
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> StdStream -> f StdStream
f StdStream
ste

streams1 ::
  Traversal1' CreateProcess StdStream
streams1 :: (StdStream -> f StdStream) -> CreateProcess -> f CreateProcess
streams1 StdStream -> f StdStream
f (CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti StdStream
sto StdStream
ste Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) =
  (\StdStream
sti' StdStream
sto' StdStream
ste' -> CmdSpec
-> Maybe FilePath
-> Maybe [(FilePath, FilePath)]
-> StdStream
-> StdStream
-> StdStream
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe GroupID
-> Maybe UserID
-> Bool
-> CreateProcess
CreateProcess CmdSpec
csc Maybe FilePath
cw Maybe [(FilePath, FilePath)]
en StdStream
sti' StdStream
sto' StdStream
ste' Bool
clf Bool
crg Bool
dct Bool
dcl Bool
cnc Bool
nss Maybe GroupID
chg Maybe UserID
chu Bool
upj) (StdStream -> StdStream -> StdStream -> CreateProcess)
-> f StdStream -> f (StdStream -> StdStream -> CreateProcess)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StdStream -> f StdStream
f StdStream
sti f (StdStream -> StdStream -> CreateProcess)
-> f StdStream -> f (StdStream -> CreateProcess)
forall (f :: * -> *) a b. Apply f => f (a -> b) -> f a -> f b
<.> StdStream -> f StdStream
f StdStream
sto f (StdStream -> CreateProcess) -> f StdStream -> f CreateProcess
forall (f :: * -> *) a b. Apply f => f (a -> b) -> f a -> f b
<.> StdStream -> f StdStream
f StdStream
ste