{-# LANGUAGE ApplicativeDo #-}
{-# LANGUAGE FlexibleContexts #-}
module Iris.Cli.ParserInfo (cmdParserInfo) where
import Iris.Cli.Interactive (interactiveModeP)
import Iris.Cli.Internal (Cmd (..))
import Iris.Cli.Version (mkVersionParser)
import Iris.Settings (CliEnvSettings (..))
import Iris.Cli.Colour (colourOptionP)
import qualified Options.Applicative as Opt
cmdParserInfo :: forall cmd appEnv. CliEnvSettings cmd appEnv -> Opt.ParserInfo (Cmd cmd)
cmdParserInfo :: forall cmd appEnv.
CliEnvSettings cmd appEnv -> ParserInfo (Cmd cmd)
cmdParserInfo CliEnvSettings{appEnv
String
Maybe String
Maybe VersionSettings
Parser cmd
cliEnvSettingsAppName :: forall cmd appEnv. CliEnvSettings cmd appEnv -> Maybe String
cliEnvSettingsVersionSettings :: forall cmd appEnv.
CliEnvSettings cmd appEnv -> Maybe VersionSettings
cliEnvSettingsProgDesc :: forall cmd appEnv. CliEnvSettings cmd appEnv -> String
cliEnvSettingsHeaderDesc :: forall cmd appEnv. CliEnvSettings cmd appEnv -> String
cliEnvSettingsAppEnv :: forall cmd appEnv. CliEnvSettings cmd appEnv -> appEnv
cliEnvSettingsCmdParser :: forall cmd appEnv. CliEnvSettings cmd appEnv -> Parser cmd
cliEnvSettingsAppName :: Maybe String
cliEnvSettingsVersionSettings :: Maybe VersionSettings
cliEnvSettingsProgDesc :: String
cliEnvSettingsHeaderDesc :: String
cliEnvSettingsAppEnv :: appEnv
cliEnvSettingsCmdParser :: Parser cmd
..} =
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info
( forall a. Parser (a -> a)
Opt.helper
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. Maybe VersionSettings -> Parser (a -> a)
mkVersionParser Maybe VersionSettings
cliEnvSettingsVersionSettings
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (Cmd cmd)
cmdP
)
forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
[ forall a. InfoMod a
Opt.fullDesc
, forall a. String -> InfoMod a
Opt.header String
cliEnvSettingsHeaderDesc
, forall a. String -> InfoMod a
Opt.progDesc String
cliEnvSettingsProgDesc
]
where
cmdP :: Opt.Parser (Cmd cmd)
cmdP :: Parser (Cmd cmd)
cmdP = do
InteractiveMode
cmdInteractiveMode <- Parser InteractiveMode
interactiveModeP
cmd
cmdCmd <- Parser cmd
cliEnvSettingsCmdParser
ColourOption
cmdColourOption <- Parser ColourOption
colourOptionP
pure Cmd{cmd
ColourOption
InteractiveMode
cmdCmd :: cmd
cmdColourOption :: ColourOption
cmdInteractiveMode :: InteractiveMode
cmdColourOption :: ColourOption
cmdCmd :: cmd
cmdInteractiveMode :: InteractiveMode
..}