{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE Rank2Types #-}
module System.Process.Lens.StdStream
(
_Inherit
, _UseHandle
, _CreatePipe
, _NoStream
, HasInherit(..)
, HasUseHandle(..)
, HasCreatePipe(..)
, HasNoStream(..)
) where
import Control.Lens
import System.IO (Handle)
import System.Process
_Inherit :: Prism' StdStream StdStream
_Inherit = prism' (const Inherit) $ \case
Inherit -> Just Inherit
_ -> Nothing
_UseHandle :: Prism' StdStream Handle
_UseHandle = prism' UseHandle $ \case
UseHandle t -> Just t
_ -> Nothing
_CreatePipe :: Prism' StdStream StdStream
_CreatePipe = prism' (const CreatePipe) $ \case
CreatePipe -> Just CreatePipe
_ -> Nothing
_NoStream :: Prism' StdStream StdStream
_NoStream = prism' (const NoStream) $ \case
NoStream -> Just NoStream
_ -> Nothing
class HasInherit a where
_Inherits :: Prism' a StdStream
{-# MINIMAL _Inherits #-}
instance HasInherit StdStream where
_Inherits = _Inherit
class HasUseHandle a where
_UsesHandle :: Prism' a Handle
{-# MINIMAL _UsesHandle #-}
instance HasUseHandle StdStream where
_UsesHandle = _UseHandle
class HasCreatePipe a where
_CreatesPipe :: Prism' a StdStream
{-# MINIMAL _CreatesPipe #-}
instance HasCreatePipe StdStream where
_CreatesPipe = _CreatePipe
class HasNoStream a where
_NoStreams :: Prism' a StdStream
{-# MINIMAL _NoStreams #-}
instance HasNoStream StdStream where
_NoStreams = _NoStream