{-# LANGUAGE DeriveFunctor #-}
module System.Process.TypeDmc where

-- | current working dir
newtype Cwd = Cwd FilePath deriving Int -> Cwd -> ShowS
[Cwd] -> ShowS
Cwd -> String
(Int -> Cwd -> ShowS)
-> (Cwd -> String) -> ([Cwd] -> ShowS) -> Show Cwd
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Cwd] -> ShowS
$cshowList :: [Cwd] -> ShowS
show :: Cwd -> String
$cshow :: Cwd -> String
showsPrec :: Int -> Cwd -> ShowS
$cshowsPrec :: Int -> Cwd -> ShowS
Show

-- | cmd or file
newtype Cmd a = Cmd a deriving (Int -> Cmd a -> ShowS
[Cmd a] -> ShowS
Cmd a -> String
(Int -> Cmd a -> ShowS)
-> (Cmd a -> String) -> ([Cmd a] -> ShowS) -> Show (Cmd a)
forall a. Show a => Int -> Cmd a -> ShowS
forall a. Show a => [Cmd a] -> ShowS
forall a. Show a => Cmd a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Cmd a] -> ShowS
$cshowList :: forall a. Show a => [Cmd a] -> ShowS
show :: Cmd a -> String
$cshow :: forall a. Show a => Cmd a -> String
showsPrec :: Int -> Cmd a -> ShowS
$cshowsPrec :: forall a. Show a => Int -> Cmd a -> ShowS
Show,a -> Cmd b -> Cmd a
(a -> b) -> Cmd a -> Cmd b
(forall a b. (a -> b) -> Cmd a -> Cmd b)
-> (forall a b. a -> Cmd b -> Cmd a) -> Functor Cmd
forall a b. a -> Cmd b -> Cmd a
forall a b. (a -> b) -> Cmd a -> Cmd b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: a -> Cmd b -> Cmd a
$c<$ :: forall a b. a -> Cmd b -> Cmd a
fmap :: (a -> b) -> Cmd a -> Cmd b
$cfmap :: forall a b. (a -> b) -> Cmd a -> Cmd b
Functor)   

-- | arg to executable
newtype Arg a = Arg a deriving (Int -> Arg a -> ShowS
[Arg a] -> ShowS
Arg a -> String
(Int -> Arg a -> ShowS)
-> (Arg a -> String) -> ([Arg a] -> ShowS) -> Show (Arg a)
forall a. Show a => Int -> Arg a -> ShowS
forall a. Show a => [Arg a] -> ShowS
forall a. Show a => Arg a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Arg a] -> ShowS
$cshowList :: forall a. Show a => [Arg a] -> ShowS
show :: Arg a -> String
$cshow :: forall a. Show a => Arg a -> String
showsPrec :: Int -> Arg a -> ShowS
$cshowsPrec :: forall a. Show a => Int -> Arg a -> ShowS
Show,a -> Arg b -> Arg a
(a -> b) -> Arg a -> Arg b
(forall a b. (a -> b) -> Arg a -> Arg b)
-> (forall a b. a -> Arg b -> Arg a) -> Functor Arg
forall a b. a -> Arg b -> Arg a
forall a b. (a -> b) -> Arg a -> Arg b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: a -> Arg b -> Arg a
$c<$ :: forall a b. a -> Arg b -> Arg a
fmap :: (a -> b) -> Arg a -> Arg b
$cfmap :: forall a b. (a -> b) -> Arg a -> Arg b
Functor)

-- | stdout output
newtype Stdout = Stdout String deriving Int -> Stdout -> ShowS
[Stdout] -> ShowS
Stdout -> String
(Int -> Stdout -> ShowS)
-> (Stdout -> String) -> ([Stdout] -> ShowS) -> Show Stdout
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Stdout] -> ShowS
$cshowList :: [Stdout] -> ShowS
show :: Stdout -> String
$cshow :: Stdout -> String
showsPrec :: Int -> Stdout -> ShowS
$cshowsPrec :: Int -> Stdout -> ShowS
Show

-- | stderr output
newtype Stderr = Stderr String deriving Int -> Stderr -> ShowS
[Stderr] -> ShowS
Stderr -> String
(Int -> Stderr -> ShowS)
-> (Stderr -> String) -> ([Stderr] -> ShowS) -> Show Stderr
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Stderr] -> ShowS
$cshowList :: [Stderr] -> ShowS
show :: Stderr -> String
$cshow :: Stderr -> String
showsPrec :: Int -> Stderr -> ShowS
$cshowsPrec :: Int -> Stderr -> ShowS
Show