{-# 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 (a ~ StdStream) => HasInherit a where
_Inherits :: Prism' a StdStream
_Inherits = _Inherit
{-# MINIMAL _Inherits #-}
instance HasInherit StdStream where
_Inherits = _Inherit
class (a ~ StdStream) => HasUseHandle a where
_UsesHandle :: Prism' a Handle
_UsesHandle = _UseHandle
{-# MINIMAL _UsesHandle #-}
instance HasUseHandle StdStream where
_UsesHandle = _UseHandle
class (a ~ StdStream) => HasCreatePipe a where
_CreatesPipe :: Prism' a StdStream
_CreatesPipe = _CreatePipe
{-# MINIMAL _CreatesPipe #-}
instance HasCreatePipe StdStream where
_CreatesPipe = _CreatePipe
class (a ~ StdStream) => HasNoStream a where
_NoStreams :: Prism' a StdStream
_NoStreams = _NoStream
{-# MINIMAL _NoStreams #-}
instance HasNoStream StdStream where
_NoStreams = _NoStream