{-# LANGUAGE OverloadedStrings
, TupleSections
, StandaloneDeriving #-}
module System.Posix.ARX.CLI.Options where
import Control.Applicative hiding (many)
import Control.Monad
import Data.ByteString (ByteString)
import qualified Data.ByteString as Bytes
import qualified Data.ByteString.Char8 as Char8
import Data.Either
import Data.List
import Data.Maybe
import Data.Ord
import Data.Word
import Text.Parsec hiding (satisfy, (<|>))
import qualified Data.Attoparsec.ByteString as Attoparsec
import System.Posix.ARX.CLI.CLTokens (Class(..))
import qualified System.Posix.ARX.CLI.CLTokens as CLTokens
import qualified System.Posix.ARX.Sh as Sh
shdat :: ArgsParser ([Word], [IOStream], [IOStream])
shdat :: ArgsParser ([Word], [IOStream], [IOStream])
shdat = do
ByteString -> ArgsParser ByteString
arg ByteString
"shdat"
[(Maybe Word, Maybe IOStream, Maybe IOStream)]
-> ([Word], [IOStream], [IOStream])
forall {a} {a} {a}.
[(Maybe a, Maybe a, Maybe a)] -> ([a], [a], [a])
coalesce ([(Maybe Word, Maybe IOStream, Maybe IOStream)]
-> ([Word], [IOStream], [IOStream]))
-> ParsecT
[ByteString]
()
Identity
[(Maybe Word, Maybe IOStream, Maybe IOStream)]
-> ArgsParser ([Word], [IOStream], [IOStream])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream)
-> ParsecT [ByteString] () Identity ()
-> ParsecT
[ByteString]
()
Identity
[(Maybe Word, Maybe IOStream, Maybe IOStream)]
forall s (m :: * -> *) t u a end.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m end -> ParsecT s u m [a]
manyTill (ParsecT [ByteString] () Identity Word
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream)
forall {a} {a} {a}.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity (Maybe a, Maybe a, Maybe a)
_1 ParsecT [ByteString] () Identity Word
blockSize ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream)
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> ParsecT [ByteString] () Identity IOStream
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream)
forall {a} {a} {a}.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity (Maybe a, Maybe a, Maybe a)
_2 ParsecT [ByteString] () Identity IOStream
outputFile ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream)
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> ParsecT [ByteString] () Identity IOStream
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream)
forall {a} {a} {a}.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity (Maybe a, Maybe a, Maybe a)
_3 ParsecT [ByteString] () Identity IOStream
ioStream) ParsecT [ByteString] () Identity ()
forall s (m :: * -> *) t u.
(Stream s m t, Show t) =>
ParsecT s u m ()
eof
where
_1 :: ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity (Maybe a, Maybe a, Maybe a)
_1 = ((,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing) (Maybe a -> (Maybe a, Maybe a, Maybe a))
-> (a -> Maybe a) -> a -> (Maybe a, Maybe a, Maybe a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Maybe a
forall a. a -> Maybe a
Just (a -> (Maybe a, Maybe a, Maybe a))
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity (Maybe a, Maybe a, Maybe a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)
_2 :: ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity (Maybe a, Maybe a, Maybe a)
_2 = ((Maybe a
forall a. Maybe a
Nothing,,Maybe a
forall a. Maybe a
Nothing) (Maybe a -> (Maybe a, Maybe a, Maybe a))
-> (a -> Maybe a) -> a -> (Maybe a, Maybe a, Maybe a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Maybe a
forall a. a -> Maybe a
Just (a -> (Maybe a, Maybe a, Maybe a))
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity (Maybe a, Maybe a, Maybe a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)
_3 :: ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity (Maybe a, Maybe a, Maybe a)
_3 = ((Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,) (Maybe a -> (Maybe a, Maybe a, Maybe a))
-> (a -> Maybe a) -> a -> (Maybe a, Maybe a, Maybe a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Maybe a
forall a. a -> Maybe a
Just (a -> (Maybe a, Maybe a, Maybe a))
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity (Maybe a, Maybe a, Maybe a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)
coalesce :: [(Maybe a, Maybe a, Maybe a)] -> ([a], [a], [a])
coalesce = ((Maybe a, Maybe a, Maybe a) -> ([a], [a], [a]) -> ([a], [a], [a]))
-> ([a], [a], [a])
-> [(Maybe a, Maybe a, Maybe a)]
-> ([a], [a], [a])
forall a b. (a -> b -> b) -> b -> [a] -> b
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr (Maybe a, Maybe a, Maybe a) -> ([a], [a], [a]) -> ([a], [a], [a])
forall {a} {a} {a}.
(Maybe a, Maybe a, Maybe a) -> ([a], [a], [a]) -> ([a], [a], [a])
f ([], [], [])
where
f :: (Maybe a, Maybe a, Maybe a) -> ([a], [a], [a]) -> ([a], [a], [a])
f (Just a
a, Maybe a
_, Maybe a
_) ([a]
as, [a]
bs, [a]
cs) = (a
aa -> [a] -> [a]
forall a. a -> [a] -> [a]
:[a]
as, [a]
bs, [a]
cs)
f (Maybe a
_, Just a
b, Maybe a
_) ([a]
as, [a]
bs, [a]
cs) = ([a]
as, a
ba -> [a] -> [a]
forall a. a -> [a] -> [a]
:[a]
bs, [a]
cs)
f (Maybe a
_, Maybe a
_, Just a
c) ([a]
as, [a]
bs, [a]
cs) = ([a]
as, [a]
bs, a
ca -> [a] -> [a]
forall a. a -> [a] -> [a]
:[a]
cs)
f (Maybe a, Maybe a, Maybe a)
_ ([a], [a], [a])
stuff = ([a], [a], [a])
stuff
tmpx :: ArgsParser ( [Word], [IOStream], [IOStream], [(Sh.Var, Sh.Val)],
[ByteString], [(Bool, Bool)], [Bool], [ByteSource] )
tmpx :: ArgsParser
([Word], [IOStream], [IOStream], [(Var, Val)], [ByteString],
[(Bool, Bool)], [Bool], [ByteSource])
tmpx = do
ByteString -> ArgsParser ByteString
arg ByteString
"tmpx"
Maybe ByteString
bars <- (ParsecT [ByteString] () Identity (Maybe ByteString)
-> ParsecT [ByteString] () Identity (Maybe ByteString)
forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m a
try (ParsecT [ByteString] () Identity (Maybe ByteString)
-> ParsecT [ByteString] () Identity (Maybe ByteString))
-> (ParsecT [ByteString] () Identity (Maybe ByteString)
-> ParsecT [ByteString] () Identity (Maybe ByteString))
-> ParsecT [ByteString] () Identity (Maybe ByteString)
-> ParsecT [ByteString] () Identity (Maybe ByteString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ParsecT [ByteString] () Identity (Maybe ByteString)
-> ParsecT [ByteString] () Identity (Maybe ByteString)
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead) ParsecT [ByteString] () Identity (Maybe ByteString)
slashes
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
-> ([Word], [IOStream], [IOStream], [(Var, Val)], [ByteString],
[(Bool, Bool)], [Bool], [ByteSource])
forall {a} {a} {a} {a} {a} {a} {a} {a}.
[(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)]
-> ([a], [a], [a], [a], [a], [a], [a], [a])
coalesce ([(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
-> ([Word], [IOStream], [IOStream], [(Var, Val)], [ByteString],
[(Bool, Bool)], [Bool], [ByteSource]))
-> ParsecT
[ByteString]
()
Identity
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
-> ArgsParser
([Word], [IOStream], [IOStream], [(Var, Val)], [ByteString],
[(Bool, Bool)], [Bool], [ByteSource])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> case Maybe ByteString
bars of
Maybe ByteString
Nothing -> ParsecT [ByteString] () Identity ()
-> ParsecT
[ByteString]
()
Identity
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
forall {end}.
ParsecT [ByteString] () Identity end
-> ParsecT
[ByteString]
()
Identity
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
flags ParsecT [ByteString] () Identity ()
forall s (m :: * -> *) t u.
(Stream s m t, Show t) =>
ParsecT s u m ()
eof
Just ByteString
bars -> do let eof_bars :: ParsecT [ByteString] () Identity ()
eof_bars = () () -> ArgsParser ByteString -> ParsecT [ByteString] () Identity ()
forall a b.
a
-> ParsecT [ByteString] () Identity b
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ ByteString -> ArgsParser ByteString
arg ByteString
bars ParsecT [ByteString] () Identity ()
-> ParsecT [ByteString] () Identity ()
-> ParsecT [ByteString] () Identity ()
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> ParsecT [ByteString] () Identity ()
forall s (m :: * -> *) t u.
(Stream s m t, Show t) =>
ParsecT s u m ()
eof
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
before <- ParsecT [ByteString] () Identity ()
-> ParsecT
[ByteString]
()
Identity
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
forall {end}.
ParsecT [ByteString] () Identity end
-> ParsecT
[ByteString]
()
Identity
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
flags ParsecT [ByteString] () Identity ()
eof_bars
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
cmd <- ParsecT [ByteString] () Identity ByteSource
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall {a} {a} {a} {a} {a} {a} {a} {a}.
ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_8 (ParsecT [ByteString] () Identity ()
-> ParsecT [ByteString] () Identity ByteSource
forall {end}.
ParsecT [ByteString] () Identity end
-> ParsecT [ByteString] () Identity ByteSource
gather ParsecT [ByteString] () Identity ()
eof_bars)
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
after <- ParsecT [ByteString] () Identity ()
-> ParsecT
[ByteString]
()
Identity
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
forall {end}.
ParsecT [ByteString] () Identity end
-> ParsecT
[ByteString]
()
Identity
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
flags ParsecT [ByteString] () Identity ()
forall s (m :: * -> *) t u.
(Stream s m t, Show t) =>
ParsecT s u m ()
eof
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
-> ParsecT
[ByteString]
()
Identity
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
forall a. a -> ParsecT [ByteString] () Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ([(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
before [(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
-> [(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
-> [(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
forall a. [a] -> [a] -> [a]
++ ((Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
cmd(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> [(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
-> [(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
forall a. a -> [a] -> [a]
:[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
after))
where
flags :: ParsecT [ByteString] () Identity end
-> ParsecT
[ByteString]
()
Identity
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
flags = ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT [ByteString] () Identity end
-> ParsecT
[ByteString]
()
Identity
[(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool,
Maybe ByteSource)]
forall s (m :: * -> *) t u a end.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m end -> ParsecT s u m [a]
manyTill ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
flag
gather :: ParsecT [ByteString] () Identity end
-> ParsecT [ByteString] () Identity ByteSource
gather = (ByteString -> ByteSource
ByteString (ByteString -> ByteSource)
-> ([ByteString] -> ByteString) -> [ByteString] -> ByteSource
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
Char8.unwords ([ByteString] -> ByteSource)
-> ParsecT [ByteString] () Identity [ByteString]
-> ParsecT [ByteString] () Identity ByteSource
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>) (ParsecT [ByteString] () Identity [ByteString]
-> ParsecT [ByteString] () Identity ByteSource)
-> (ParsecT [ByteString] () Identity end
-> ParsecT [ByteString] () Identity [ByteString])
-> ParsecT [ByteString] () Identity end
-> ParsecT [ByteString] () Identity ByteSource
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ArgsParser ByteString
-> ParsecT [ByteString] () Identity end
-> ParsecT [ByteString] () Identity [ByteString]
forall s (m :: * -> *) t u a end.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m end -> ParsecT s u m [a]
manyTill ArgsParser ByteString
anyArg
flag :: ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
flag = ParsecT [ByteString] () Identity Word
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall {a} {a} {a} {a} {a} {a} {a} {a}.
ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_1 ParsecT [ByteString] () Identity Word
blockSize ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> ParsecT [ByteString] () Identity IOStream
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall {a} {a} {a} {a} {a} {a} {a} {a}.
ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_2 ParsecT [ByteString] () Identity IOStream
outputFile ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> ParsecT [ByteString] () Identity IOStream
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall {a} {a} {a} {a} {a} {a} {a} {a}.
ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_3 ParsecT [ByteString] () Identity IOStream
ioStream
ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> ParsecT [ByteString] () Identity (Var, Val)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall {a} {a} {a} {a} {a} {a} {a} {a}.
ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_4 ParsecT [ByteString] () Identity (Var, Val)
env ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> ArgsParser ByteString
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall {a} {a} {a} {a} {a} {a} {a} {a}.
ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_5 ArgsParser ByteString
tmpdir ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> ParsecT [ByteString] () Identity (Bool, Bool)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall {a} {a} {a} {a} {a} {a} {a} {a}.
ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_6 ParsecT [ByteString] () Identity (Bool, Bool)
rm
ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> ParsecT [ByteString] () Identity Bool
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall {a} {a} {a} {a} {a} {a} {a} {a}.
ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_7 ParsecT [ByteString] () Identity Bool
shared ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> ParsecT [ByteString] () Identity ByteSource
-> ParsecT
[ByteString]
()
Identity
(Maybe Word, Maybe IOStream, Maybe IOStream, Maybe (Var, Val),
Maybe ByteString, Maybe (Bool, Bool), Maybe Bool, Maybe ByteSource)
forall {a} {a} {a} {a} {a} {a} {a} {a}.
ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_8 ParsecT [ByteString] () Identity ByteSource
scriptToRun
_1 :: ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_1 = ((,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing) (Maybe a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> (a -> Maybe a)
-> a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Maybe a
forall a. a -> Maybe a
Just (a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)
_2 :: ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_2 = ((Maybe a
forall a. Maybe a
Nothing,,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing) (Maybe a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> (a -> Maybe a)
-> a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Maybe a
forall a. a -> Maybe a
Just (a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)
_3 :: ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_3 = ((Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing) (Maybe a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> (a -> Maybe a)
-> a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Maybe a
forall a. a -> Maybe a
Just (a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)
_4 :: ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_4 = ((Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing) (Maybe a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> (a -> Maybe a)
-> a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Maybe a
forall a. a -> Maybe a
Just (a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)
_5 :: ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_5 = ((Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing) (Maybe a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> (a -> Maybe a)
-> a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Maybe a
forall a. a -> Maybe a
Just (a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)
_6 :: ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_6 = ((Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing) (Maybe a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> (a -> Maybe a)
-> a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Maybe a
forall a. a -> Maybe a
Just (a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)
_7 :: ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_7 = ((Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,,Maybe a
forall a. Maybe a
Nothing) (Maybe a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> (a -> Maybe a)
-> a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Maybe a
forall a. a -> Maybe a
Just (a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)
_8 :: ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_8 = ((Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,Maybe a
forall a. Maybe a
Nothing,) (Maybe a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> (a -> Maybe a)
-> a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Maybe a
forall a. a -> Maybe a
Just (a
-> (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a))
-> ParsecT [ByteString] () Identity a
-> ParsecT
[ByteString]
()
Identity
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)
coalesce :: [(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)]
-> ([a], [a], [a], [a], [a], [a], [a], [a])
coalesce = ((Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
-> ([a], [a], [a], [a], [a], [a], [a], [a])
-> ([a], [a], [a], [a], [a], [a], [a], [a]))
-> ([a], [a], [a], [a], [a], [a], [a], [a])
-> [(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)]
-> ([a], [a], [a], [a], [a], [a], [a], [a])
forall a b. (a -> b -> b) -> b -> [a] -> b
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
-> ([a], [a], [a], [a], [a], [a], [a], [a])
-> ([a], [a], [a], [a], [a], [a], [a], [a])
forall {a} {a} {a} {a} {a} {a} {a} {a}.
(Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
-> ([a], [a], [a], [a], [a], [a], [a], [a])
-> ([a], [a], [a], [a], [a], [a], [a], [a])
f ([], [], [], [], [], [], [], [])
where
f :: (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
-> ([a], [a], [a], [a], [a], [a], [a], [a])
-> ([a], [a], [a], [a], [a], [a], [a], [a])
f (Just a
a, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_) ([a]
as, [a]
bs, [a]
cs, [a]
ds, [a]
es, [a]
fs, [a]
gs, [a]
hs)
= (a
aa -> [a] -> [a]
forall a. a -> [a] -> [a]
:[a]
as, [a]
bs, [a]
cs, [a]
ds, [a]
es, [a]
fs, [a]
gs, [a]
hs)
f (Maybe a
_, Just a
b, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_) ([a]
as, [a]
bs, [a]
cs, [a]
ds, [a]
es, [a]
fs, [a]
gs, [a]
hs)
= ([a]
as, a
ba -> [a] -> [a]
forall a. a -> [a] -> [a]
:[a]
bs, [a]
cs, [a]
ds, [a]
es, [a]
fs, [a]
gs, [a]
hs)
f (Maybe a
_, Maybe a
_, Just a
c, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_) ([a]
as, [a]
bs, [a]
cs, [a]
ds, [a]
es, [a]
fs, [a]
gs, [a]
hs)
= ([a]
as, [a]
bs, a
ca -> [a] -> [a]
forall a. a -> [a] -> [a]
:[a]
cs, [a]
ds, [a]
es, [a]
fs, [a]
gs, [a]
hs)
f (Maybe a
_, Maybe a
_, Maybe a
_, Just a
d, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_) ([a]
as, [a]
bs, [a]
cs, [a]
ds, [a]
es, [a]
fs, [a]
gs, [a]
hs)
= ([a]
as, [a]
bs, [a]
cs, a
da -> [a] -> [a]
forall a. a -> [a] -> [a]
:[a]
ds, [a]
es, [a]
fs, [a]
gs, [a]
hs)
f (Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Just a
e, Maybe a
_, Maybe a
_, Maybe a
_) ([a]
as, [a]
bs, [a]
cs, [a]
ds, [a]
es, [a]
fs, [a]
gs, [a]
hs)
= ([a]
as, [a]
bs, [a]
cs, [a]
ds, a
ea -> [a] -> [a]
forall a. a -> [a] -> [a]
:[a]
es, [a]
fs, [a]
gs, [a]
hs)
f (Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Just a
f, Maybe a
_, Maybe a
_) ([a]
as, [a]
bs, [a]
cs, [a]
ds, [a]
es, [a]
fs, [a]
gs, [a]
hs)
= ([a]
as, [a]
bs, [a]
cs, [a]
ds, [a]
es, a
fa -> [a] -> [a]
forall a. a -> [a] -> [a]
:[a]
fs, [a]
gs, [a]
hs)
f (Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Just a
g, Maybe a
_) ([a]
as, [a]
bs, [a]
cs, [a]
ds, [a]
es, [a]
fs, [a]
gs, [a]
hs)
= ([a]
as, [a]
bs, [a]
cs, [a]
ds, [a]
es, [a]
fs, a
ga -> [a] -> [a]
forall a. a -> [a] -> [a]
:[a]
gs, [a]
hs)
f (Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Maybe a
_, Just a
h) ([a]
as, [a]
bs, [a]
cs, [a]
ds, [a]
es, [a]
fs, [a]
gs, [a]
hs)
= ([a]
as, [a]
bs, [a]
cs, [a]
ds, [a]
es, [a]
fs, [a]
gs, a
ha -> [a] -> [a]
forall a. a -> [a] -> [a]
:[a]
hs)
f (Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a, Maybe a,
Maybe a)
_ ([a], [a], [a], [a], [a], [a], [a], [a])
stuff = ([a], [a], [a], [a], [a], [a], [a], [a])
stuff
blockSize :: ArgsParser Word
blockSize :: ParsecT [ByteString] () Identity Word
blockSize = do ByteString -> ArgsParser ByteString
arg ByteString
"-b"
Parser Word
forall b. (Bounded b, Integral b) => Parser b
CLTokens.sizeBounded Parser Word
-> ArgsParser ByteString -> ParsecT [ByteString] () Identity Word
forall t. Parser t -> ArgsParser ByteString -> ArgsParser t
<@> Class -> ArgsParser ByteString
tokCL Class
Size
outputFile :: ArgsParser IOStream
outputFile :: ParsecT [ByteString] () Identity IOStream
outputFile = ByteString -> ArgsParser ByteString
arg ByteString
"-o" ArgsParser ByteString
-> ParsecT [ByteString] () Identity IOStream
-> ParsecT [ByteString] () Identity IOStream
forall a b.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity b
-> ParsecT [ByteString] () Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [ByteString] () Identity IOStream
ioStream
ioStream :: ArgsParser IOStream
ioStream :: ParsecT [ByteString] () Identity IOStream
ioStream = IOStream
STDIO IOStream
-> ArgsParser ByteString
-> ParsecT [ByteString] () Identity IOStream
forall a b.
a
-> ParsecT [ByteString] () Identity b
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ Class -> ArgsParser ByteString
tokCL Class
Dash
ParsecT [ByteString] () Identity IOStream
-> ParsecT [ByteString] () Identity IOStream
-> ParsecT [ByteString] () Identity IOStream
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> ByteString -> IOStream
Path (ByteString -> IOStream)
-> ArgsParser ByteString
-> ParsecT [ByteString] () Identity IOStream
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Class -> ArgsParser ByteString
tokCL Class
QualifiedPath
qPath :: ArgsParser ByteString
qPath :: ArgsParser ByteString
qPath = Class -> ArgsParser ByteString
tokCL Class
QualifiedPath
shared :: ArgsParser Bool
shared :: ParsecT [ByteString] () Identity Bool
shared = Bool
True Bool
-> ArgsParser ByteString -> ParsecT [ByteString] () Identity Bool
forall a b.
a
-> ParsecT [ByteString] () Identity b
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ ByteString -> ArgsParser ByteString
arg ByteString
"--shared"
tmpdir :: ArgsParser ByteString
tmpdir :: ArgsParser ByteString
tmpdir = ByteString -> ArgsParser ByteString
arg ByteString
"--tmpdir" ArgsParser ByteString
-> ArgsParser ByteString -> ArgsParser ByteString
forall a b.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity b
-> ParsecT [ByteString] () Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Class -> ArgsParser ByteString
tokCL Class
QualifiedPath
rm :: ArgsParser (Bool, Bool)
rm :: ParsecT [ByteString] () Identity (Bool, Bool)
rm = (Bool
True, Bool
False) (Bool, Bool)
-> ArgsParser ByteString
-> ParsecT [ByteString] () Identity (Bool, Bool)
forall a b.
a
-> ParsecT [ByteString] () Identity b
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ ByteString -> ArgsParser ByteString
arg ByteString
"-rm0" ParsecT [ByteString] () Identity (Bool, Bool)
-> ParsecT [ByteString] () Identity (Bool, Bool)
-> ParsecT [ByteString] () Identity (Bool, Bool)
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> (Bool
False, Bool
True) (Bool, Bool)
-> ArgsParser ByteString
-> ParsecT [ByteString] () Identity (Bool, Bool)
forall a b.
a
-> ParsecT [ByteString] () Identity b
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ ByteString -> ArgsParser ByteString
arg ByteString
"-rm1"
ParsecT [ByteString] () Identity (Bool, Bool)
-> ParsecT [ByteString] () Identity (Bool, Bool)
-> ParsecT [ByteString] () Identity (Bool, Bool)
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> (Bool
False, Bool
False) (Bool, Bool)
-> ArgsParser ByteString
-> ParsecT [ByteString] () Identity (Bool, Bool)
forall a b.
a
-> ParsecT [ByteString] () Identity b
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ ByteString -> ArgsParser ByteString
arg ByteString
"-rm!" ParsecT [ByteString] () Identity (Bool, Bool)
-> ParsecT [ByteString] () Identity (Bool, Bool)
-> ParsecT [ByteString] () Identity (Bool, Bool)
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> (Bool
True, Bool
True) (Bool, Bool)
-> ArgsParser ByteString
-> ParsecT [ByteString] () Identity (Bool, Bool)
forall a b.
a
-> ParsecT [ByteString] () Identity b
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ ByteString -> ArgsParser ByteString
arg ByteString
"-rm_"
env :: ArgsParser (Sh.Var, Sh.Val)
env :: ParsecT [ByteString] () Identity (Var, Val)
env = do
(ByteString
var, ByteString
assignment) <- (Char -> Bool) -> ByteString -> (ByteString, ByteString)
Char8.break (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'=') (ByteString -> (ByteString, ByteString))
-> ArgsParser ByteString
-> ParsecT [ByteString] () Identity (ByteString, ByteString)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Class -> ArgsParser ByteString
tokCL Class
EnvBinding
case (,) (Var -> Val -> (Var, Val))
-> Maybe Var -> Maybe (Val -> (Var, Val))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ByteString -> Maybe Var
Sh.var ByteString
var Maybe (Val -> (Var, Val)) -> Maybe Val -> Maybe (Var, Val)
forall a b. Maybe (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> Maybe Val
Sh.val (Int -> ByteString -> ByteString
Bytes.drop Int
1 ByteString
assignment) of
Maybe (Var, Val)
Nothing -> ParsecT [ByteString] () Identity (Var, Val)
forall a. ParsecT [ByteString] () Identity a
forall (m :: * -> *) a. MonadPlus m => m a
mzero
Just (Var, Val)
x -> (Var, Val) -> ParsecT [ByteString] () Identity (Var, Val)
forall a. a -> ParsecT [ByteString] () Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (Var, Val)
x
scriptToRun :: ArgsParser ByteSource
scriptToRun :: ParsecT [ByteString] () Identity ByteSource
scriptToRun = ByteString -> ArgsParser ByteString
arg ByteString
"-e" ArgsParser ByteString
-> ParsecT [ByteString] () Identity ByteSource
-> ParsecT [ByteString] () Identity ByteSource
forall a b.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity b
-> ParsecT [ByteString] () Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> IOStream -> ByteSource
IOStream (IOStream -> ByteSource)
-> ParsecT [ByteString] () Identity IOStream
-> ParsecT [ByteString] () Identity ByteSource
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ParsecT [ByteString] () Identity IOStream
ioStream
cmd :: ByteString -> ArgsParser ByteSource
cmd :: ByteString -> ParsecT [ByteString] () Identity ByteSource
cmd ByteString
bars = ByteString -> ByteSource
ByteString (ByteString -> ByteSource)
-> ([ByteString] -> ByteString) -> [ByteString] -> ByteSource
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
Char8.unwords ([ByteString] -> ByteSource)
-> ParsecT [ByteString] () Identity [ByteString]
-> ParsecT [ByteString] () Identity ByteSource
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ByteString
-> ByteString
-> ArgsParser ByteString
-> ParsecT [ByteString] () Identity [ByteString]
forall {a}.
ByteString
-> ByteString
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity [a]
bracketed ByteString
bars ByteString
bars ArgsParser ByteString
anyArg
where
bracketed :: ByteString
-> ByteString
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity [a]
bracketed ByteString
start ByteString
end ParsecT [ByteString] () Identity a
p = ByteString -> ArgsParser ByteString
arg ByteString
start ArgsParser ByteString
-> ParsecT [ByteString] () Identity [a]
-> ParsecT [ByteString] () Identity [a]
forall a b.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity b
-> ParsecT [ByteString] () Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity ()
-> ParsecT [ByteString] () Identity [a]
forall s (m :: * -> *) t u a end.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m end -> ParsecT s u m [a]
manyTill ParsecT [ByteString] () Identity a
p (ParsecT [ByteString] () Identity ()
forall s (m :: * -> *) t u.
(Stream s m t, Show t) =>
ParsecT s u m ()
eof ParsecT [ByteString] () Identity ()
-> ParsecT [ByteString] () Identity ()
-> ParsecT [ByteString] () Identity ()
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> () () -> ArgsParser ByteString -> ParsecT [ByteString] () Identity ()
forall a b.
a
-> ParsecT [ByteString] () Identity b
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ ByteString -> ArgsParser ByteString
arg ByteString
end)
data IOStream = STDIO | Path !ByteString
deriving instance Eq IOStream
deriving instance Ord IOStream
deriving instance Show IOStream
data ByteSource = ByteString !ByteString | IOStream !IOStream
deriving instance Eq ByteSource
deriving instance Ord ByteSource
deriving instance Show ByteSource
type ArgsParser = Parsec [ByteString] ()
satisfy :: (ByteString -> Bool) -> ArgsParser ByteString
satisfy :: (ByteString -> Bool) -> ArgsParser ByteString
satisfy ByteString -> Bool
p = (ByteString -> Maybe ByteString) -> ArgsParser ByteString
forall t. (ByteString -> Maybe t) -> ArgsParser t
argPrim ByteString -> Maybe ByteString
test
where
test :: ByteString -> Maybe ByteString
test ByteString
b = Bool -> Maybe ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (ByteString -> Bool
p ByteString
b) Maybe () -> Maybe ByteString -> Maybe ByteString
forall a b. Maybe a -> Maybe b -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just ByteString
b
anyArg :: ArgsParser ByteString
anyArg :: ArgsParser ByteString
anyArg = (ByteString -> Maybe ByteString) -> ArgsParser ByteString
forall t. (ByteString -> Maybe t) -> ArgsParser t
argPrim ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just
arg :: ByteString -> ArgsParser ByteString
arg :: ByteString -> ArgsParser ByteString
arg ByteString
b = (ByteString -> Bool) -> ArgsParser ByteString
satisfy (ByteString -> ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== ByteString
b)
argPrim :: (ByteString -> Maybe t) -> ArgsParser t
argPrim :: forall t. (ByteString -> Maybe t) -> ArgsParser t
argPrim = (ByteString -> String)
-> (SourcePos -> ByteString -> [ByteString] -> SourcePos)
-> (ByteString -> Maybe t)
-> ParsecT [ByteString] () Identity t
forall s (m :: * -> *) t a u.
Stream s m t =>
(t -> String)
-> (SourcePos -> t -> s -> SourcePos)
-> (t -> Maybe a)
-> ParsecT s u m a
tokenPrim ByteString -> String
forall a. Show a => a -> String
show SourcePos -> ByteString -> [ByteString] -> SourcePos
forall {p} {p}. SourcePos -> p -> p -> SourcePos
next
where
next :: SourcePos -> p -> p -> SourcePos
next SourcePos
pos p
_ p
_ = SourcePos -> Int -> SourcePos
incSourceLine SourcePos
pos Int
1
(<@>) :: Attoparsec.Parser t -> ArgsParser ByteString -> ArgsParser t
Parser t
atto <@> :: forall t. Parser t -> ArgsParser ByteString -> ArgsParser t
<@> ArgsParser ByteString
parsec = do
Either String t
res <- Parser t -> ByteString -> Either String t
forall a. Parser a -> ByteString -> Either String a
Attoparsec.parseOnly Parser t
atto (ByteString -> Either String t)
-> ArgsParser ByteString
-> ParsecT [ByteString] () Identity (Either String t)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ArgsParser ByteString
parsec
case Either String t
res of Left String
_ -> ArgsParser t
forall a. ParsecT [ByteString] () Identity a
forall (m :: * -> *) a. MonadPlus m => m a
mzero
Right t
x -> t -> ArgsParser t
forall a. a -> ParsecT [ByteString] () Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return t
x
infixl 4 <@>
tokCL :: Class -> ArgsParser ByteString
tokCL :: Class -> ArgsParser ByteString
tokCL Class
tokenClass = (ByteString -> Bool) -> ArgsParser ByteString
satisfy (Class -> ByteString -> Bool
CLTokens.match Class
tokenClass)
slashes :: ArgsParser (Maybe ByteString)
slashes :: ParsecT [ByteString] () Identity (Maybe ByteString)
slashes = [ByteString] -> Maybe ByteString
forall a. [a] -> Maybe a
listToMaybe ([ByteString] -> Maybe ByteString)
-> ([Maybe ByteString] -> [ByteString])
-> [Maybe ByteString]
-> Maybe ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> [ByteString]
longestFirst ([ByteString] -> [ByteString])
-> ([Maybe ByteString] -> [ByteString])
-> [Maybe ByteString]
-> [ByteString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Maybe ByteString] -> [ByteString]
forall a. [Maybe a] -> [a]
catMaybes ([Maybe ByteString] -> Maybe ByteString)
-> ParsecT [ByteString] () Identity [Maybe ByteString]
-> ParsecT [ByteString] () Identity (Maybe ByteString)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ParsecT [ByteString] () Identity (Maybe ByteString)
-> ParsecT [ByteString] () Identity ()
-> ParsecT [ByteString] () Identity [Maybe ByteString]
forall s (m :: * -> *) t u a end.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m end -> ParsecT s u m [a]
manyTill ParsecT [ByteString] () Identity (Maybe ByteString)
classify ParsecT [ByteString] () Identity ()
forall s (m :: * -> *) t u.
(Stream s m t, Show t) =>
ParsecT s u m ()
eof
where
classify :: ParsecT [ByteString] () Identity (Maybe ByteString)
classify = ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString)
-> ArgsParser ByteString
-> ParsecT [ByteString] () Identity (Maybe ByteString)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ByteString -> Bool) -> ArgsParser ByteString
satisfy ByteString -> Bool
slashRun ParsecT [ByteString] () Identity (Maybe ByteString)
-> ParsecT [ByteString] () Identity (Maybe ByteString)
-> ParsecT [ByteString] () Identity (Maybe ByteString)
forall a.
ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Maybe ByteString
forall a. Maybe a
Nothing Maybe ByteString
-> ArgsParser ByteString
-> ParsecT [ByteString] () Identity (Maybe ByteString)
forall a b.
a
-> ParsecT [ByteString] () Identity b
-> ParsecT [ByteString] () Identity a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ ArgsParser ByteString
anyArg
longestFirst :: [ByteString] -> [ByteString]
longestFirst = (ByteString -> ByteString -> Ordering)
-> [ByteString] -> [ByteString]
forall a. (a -> a -> Ordering) -> [a] -> [a]
sortBy ((ByteString -> Int) -> ByteString -> ByteString -> Ordering
forall a b. Ord a => (b -> a) -> b -> b -> Ordering
comparing (Int -> Int
forall a. Num a => a -> a
negate (Int -> Int) -> (ByteString -> Int) -> ByteString -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Int
Bytes.length))
slashRun :: ByteString -> Bool
slashRun ByteString
s = (Char -> Bool) -> ByteString -> Bool
Char8.all (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'/') ByteString
s Bool -> Bool -> Bool
&& ByteString -> Int
Bytes.length ByteString
s Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> Int
1