{-# LANGUAGE
MultiParamTypeClasses
, FlexibleInstances
, FlexibleContexts
, ScopedTypeVariables
, OverloadedStrings
, TypeFamilies
#-}
module ShakeBake.CmdLineArgs where
import UniformBase
import Uniform.CmdLineArgs
import Foundational.CmdLineFlags
import Foundational.MetaPage
data LitArgs = LitArgs
{
LitArgs -> Bool
draftSwitch
, LitArgs -> Bool
privateSwitch
, LitArgs -> Bool
testSwitch
, LitArgs -> Bool
testNewSwitch
, LitArgs -> Bool
quickSwitch
, LitArgs -> Bool
serverSwitch
, LitArgs -> Bool
watchSwitch
:: Bool
, LitArgs -> String
locationDirArg
:: String
} deriving (Int -> LitArgs -> ShowS
[LitArgs] -> ShowS
LitArgs -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LitArgs] -> ShowS
$cshowList :: [LitArgs] -> ShowS
show :: LitArgs -> String
$cshow :: LitArgs -> String
showsPrec :: Int -> LitArgs -> ShowS
$cshowsPrec :: Int -> LitArgs -> ShowS
Show)
cmdArgs :: Parser LitArgs
cmdArgs :: Parser LitArgs
cmdArgs =
Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> String
-> LitArgs
LitArgs
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Mod FlagFields Bool -> Parser Bool
switch (forall (f :: * -> *) a. HasName f => String -> Mod f a
long String
"draft" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. HasName f => Char -> Mod f a
short Char
'd'
forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. String -> Mod f a
help String
"include draft material, else only `publish`")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Mod FlagFields Bool -> Parser Bool
switch
(forall (f :: * -> *) a. HasName f => String -> Mod f a
long String
"private" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. HasName f => Char -> Mod f a
short Char
'p' forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. String -> Mod f a
help
String
"include the private data, else only public"
)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Mod FlagFields Bool -> Parser Bool
switch
(forall (f :: * -> *) a. HasName f => String -> Mod f a
long String
"test" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. HasName f => Char -> Mod f a
short Char
't' forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. String -> Mod f a
help
String
"use test data (site/dough), continue test, start server on port set"
)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Mod FlagFields Bool -> Parser Bool
switch
(forall (f :: * -> *) a. HasName f => String -> Mod f a
long String
"testComplete" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. HasName f => Char -> Mod f a
short Char
'T' forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. String -> Mod f a
help
String
"use test data (site/dough), complete test, start server on port set"
)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Mod FlagFields Bool -> Parser Bool
switch
(forall (f :: * -> *) a. HasName f => String -> Mod f a
long String
"quick" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. HasName f => Char -> Mod f a
short Char
'q' forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. String -> Mod f a
help
String
"produce only html, but not the (slow) pdf's"
)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Mod FlagFields Bool -> Parser Bool
switch
(forall (f :: * -> *) a. HasName f => String -> Mod f a
long String
"server" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. HasName f => Char -> Mod f a
short Char
's'
forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. String -> Mod f a
help String
"start a server on port set in siteHeader file")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Mod FlagFields Bool -> Parser Bool
switch
(forall (f :: * -> *) a. HasName f => String -> Mod f a
long String
"watch" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. HasName f => Char -> Mod f a
short Char
'w' forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. String -> Mod f a
help
String
"start the watch of files for restarting bake"
)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall s. IsString s => Mod OptionFields s -> Parser s
strOption
(forall (f :: * -> *) a. HasName f => String -> Mod f a
long String
"location" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. HasName f => Char -> Mod f a
short Char
'l' forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. HasValue f => a -> Mod f a
value String
"." forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. String -> Mod f a
help
String
"the directory in which to find the settings file")
parseArgs2input :: Text -> Text -> ErrIO PubFlags
parseArgs2input :: Text -> Text -> ErrIO PubFlags
parseArgs2input Text
t1 Text
t2 = do
LitArgs
args1 <- Text -> Text -> ErrIO LitArgs
getArgsParsed Text
t1 Text
t2
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when Bool
False forall a b. (a -> b) -> a -> b
$ forall (m :: * -> *). MonadIO m => [Text] -> m ()
putIOwords [Text
"parseArgs2input: args found", forall a. PrettyStrings a => a -> Text
showPretty LitArgs
args1]
Path Abs Dir
workingdir1 :: Path Abs Dir <- ErrIO (Path Abs Dir)
currentDir
let flags1 :: PubFlags
flags1 = PubFlags { draftFlag :: Bool
draftFlag = LitArgs -> Bool
draftSwitch LitArgs
args1
, privateFlag :: Bool
privateFlag = LitArgs -> Bool
privateSwitch LitArgs
args1
, testFlag :: Bool
testFlag = LitArgs -> Bool
testSwitch LitArgs
args1
, testNewFlag :: Bool
testNewFlag = LitArgs -> Bool
testNewSwitch LitArgs
args1
, quickFlag :: Bool
quickFlag = LitArgs -> Bool
quickSwitch LitArgs
args1
, serverFlag :: Bool
serverFlag = LitArgs -> Bool
serverSwitch LitArgs
args1
, watchFlag :: Bool
watchFlag = LitArgs -> Bool
watchSwitch LitArgs
args1
, locationDir :: String
locationDir = LitArgs -> String
locationDirArg LitArgs
args1
}
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when Bool
False forall a b. (a -> b) -> a -> b
$ forall (m :: * -> *). MonadIO m => [Text] -> m ()
putIOwords [Text
"parseArgs2input: inputs ", forall a. PrettyStrings a => a -> Text
showPretty PubFlags
flags1]
forall (m :: * -> *) a. Monad m => a -> m a
return PubFlags
flags1
getArgsParsed :: Text -> Text -> ErrIO LitArgs
getArgsParsed :: Text -> Text -> ErrIO LitArgs
getArgsParsed Text
t1 Text
t2 = do
LitArgs
args <- forall a. IO a -> ErrIO a
callIO forall a b. (a -> b) -> a -> b
$ forall a. ParserInfo a -> IO a
execParser ParserInfo LitArgs
opts
forall (m :: * -> *) a. Monad m => a -> m a
return LitArgs
args
where
opts :: ParserInfo LitArgs
opts = forall a. Parser a -> InfoMod a -> ParserInfo a
info (forall a. Parser (a -> a)
helper forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser LitArgs
cmdArgs)
(forall a. InfoMod a
fullDesc forall a. Semigroup a => a -> a -> a
<> (forall a. String -> InfoMod a
progDesc forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
t2s forall a b. (a -> b) -> a -> b
$ Text
t1) forall a. Semigroup a => a -> a -> a
<> (forall a. String -> InfoMod a
header forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
t2s forall a b. (a -> b) -> a -> b
$ Text
t2))