-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Utilities and combinators for parsing command line options -- -- Here is a simple example of an applicative option parser: -- --
-- data Sample = Sample
-- { hello :: String
-- , quiet :: Bool }
--
-- sample :: Parser Sample
-- sample = Sample
-- <$> strOption
-- ( long "hello"
-- & metavar "TARGET"
-- & help "Target for the greeting" )
-- <*> switch
-- ( long "quiet"
-- & help "Whether to be quiet" )
--
--
-- The parser is built using applicative style starting from a set of
-- basic combinators. In this example, hello is defined as an
-- option with a String argument, while quiet is
-- a boolean flag (called switch).
--
-- A parser can be used like this:
--
-- -- greet :: Sample -> IO () -- greet (Sample h False) = putStrLn $ "Hello, " ++ h -- greet _ = return () -- -- main :: IO () -- main = execParser opts >>= greet -- where -- opts = info (helper <*> sample) -- ( fullDesc -- & progDesc "Print a greeting for TARGET" -- & header "hello - a test for optparse-applicative" ) ---- -- The greet function is the entry point of the program, while -- opts is a complete description of the program, used when -- generating a help text. The helper combinator takes any parser, -- and adds a help option to it (which always fails). -- -- The hello option in this example is mandatory (since it -- doesn't have a default value), so running the program without any -- argument will display a help text: -- --
-- hello - a test for optparse-applicative -- -- Usage: hello --hello TARGET [--quiet] -- Print a greeting for TARGET -- -- Available options: -- -h,--help Show this help text -- --hello TARGET Target for the greeting -- --quiet Whether to be quiet ---- -- containing a short usage summary, and a detailed list of options with -- descriptions. @package optparse-applicative @version 0.3.2 module Options.Applicative.Utils -- | Concatenate two strings with a space in the middle. (<+>) :: String -> String -> String -- | Concatenate strings vertically with empty lines in between. vcat :: [String] -> String -- | Display pairs of strings in a table. tabulate :: [(String, String)] -> [String] -- | Pad a string to a fixed size with whitespace. pad :: Int -> String -> String module Options.Applicative.Types -- | A full description for a runnable Parser for a program. data ParserInfo a ParserInfo :: Parser a -> Bool -> String -> String -> String -> Int -> ParserInfo a -- | the option parser for the program infoParser :: ParserInfo a -> Parser a -- | whether the help text should contain full documentation infoFullDesc :: ParserInfo a -> Bool -- | brief parser description infoProgDesc :: ParserInfo a -> String -- | header of the full parser description infoHeader :: ParserInfo a -> String -- | footer of the full parser description infoFooter :: ParserInfo a -> String -- | exit code for a parser failure infoFailureCode :: ParserInfo a -> Int -- | Global preferences for a top-level Parser. data ParserPrefs ParserPrefs :: String -> ParserPrefs -- | metavar suffix for multiple options prefMultiSuffix :: ParserPrefs -> String data Context Context :: Maybe String -> ParserInfo a -> Context NullContext :: Context type P = ErrorT String (Writer Context) -- | A single option of a parser. data Option a Option :: OptReader a -> OptProperties -> Option a -- | reader for this option optMain :: Option a -> OptReader a -- | properties of this option optProps :: Option a -> OptProperties data OptName OptShort :: !Char -> OptName OptLong :: !String -> OptName -- | An OptReader defines whether an option matches an command line -- argument. data OptReader a -- | option reader OptReader :: [OptName] -> (String -> Maybe a) -> OptReader a -- | flag reader FlagReader :: [OptName] -> !a -> OptReader a -- | argument reader ArgReader :: (String -> Maybe a) -> OptReader a -- | command reader CmdReader :: [String] -> (String -> Maybe (ParserInfo a)) -> OptReader a -- | Specification for an individual parser option. data OptProperties OptProperties :: OptVisibility -> String -> String -> Maybe String -> OptProperties -- | whether this flag is shown is the brief description propVisibility :: OptProperties -> OptVisibility -- | help text for this option propHelp :: OptProperties -> String -- | metavariable for this option propMetaVar :: OptProperties -> String -- | what to show in the help text as the default propShowDefault :: OptProperties -> Maybe String -- | Visibility of an option in the help text. data OptVisibility -- | does not appear in the help text at all Internal :: OptVisibility -- | only visible in the full description Hidden :: OptVisibility -- | visible both in the full and brief descriptions Visible :: OptVisibility -- | A Parser a is an option parser returning a value of type -- a. data Parser a NilP :: Maybe a -> Parser a OptP :: Option a -> Parser a MultP :: Parser (a -> b) -> Parser a -> Parser b AltP :: Parser a -> Parser a -> Parser a BindP :: Parser a -> (a -> Parser b) -> Parser b -- | Result after a parse error. data ParserFailure ParserFailure :: (String -> String) -> ExitCode -> ParserFailure -- | Function which takes the program name as input and returns an error -- message errMessage :: ParserFailure -> String -> String -- | Exit code to use for this error errExitCode :: ParserFailure -> ExitCode data OptHelpInfo OptHelpInfo :: Bool -> Bool -> OptHelpInfo hinfoMulti :: OptHelpInfo -> Bool hinfoDefault :: OptHelpInfo -> Bool data OptTree a Leaf :: a -> OptTree a MultNode :: [OptTree a] -> OptTree a AltNode :: [OptTree a] -> OptTree a optVisibility :: Option a -> OptVisibility optMetaVar :: Option a -> String optHelp :: Option a -> String optShowDefault :: Option a -> Maybe String instance Eq OptName instance Ord OptName instance Eq OptVisibility instance Ord OptVisibility instance Functor Option instance Functor OptReader instance Functor ParserInfo instance Functor OptTree instance Show a => Show (OptTree a) instance Error ParserFailure instance Alternative Parser instance Applicative Parser instance Functor Parser instance Monoid Context module Options.Applicative.Common -- | A Parser a is an option parser returning a value of type -- a. data Parser a -- | Create a parser composed of a single option. liftOpt :: Option a -> Parser a -- | A full description for a runnable Parser for a program. data ParserInfo a ParserInfo :: Parser a -> Bool -> String -> String -> String -> Int -> ParserInfo a -- | the option parser for the program infoParser :: ParserInfo a -> Parser a -- | whether the help text should contain full documentation infoFullDesc :: ParserInfo a -> Bool -- | brief parser description infoProgDesc :: ParserInfo a -> String -- | header of the full parser description infoHeader :: ParserInfo a -> String -- | footer of the full parser description infoFooter :: ParserInfo a -> String -- | exit code for a parser failure infoFailureCode :: ParserInfo a -> Int -- | Apply a Parser to a command line, and return a result and -- leftover arguments. This function returns an error if any parsing -- error occurs, or if any options are missing and don't have a default -- value. runParser :: Parser a -> [String] -> P (a, [String]) runParserFully :: Parser a -> [String] -> P a -- | The default value of a Parser. This function returns an error -- if any of the options don't have a default value. evalParser :: Parser a -> P a runP :: P a -> (Either String a, Context) setContext :: Maybe String -> ParserInfo a -> P () -- | Map a polymorphic function over all the options of a parser, and -- collect the results in a list. mapParser :: (forall x. OptHelpInfo -> Option x -> b) -> Parser a -> [b] -- | Like mapParser, but collect the results in a tree structure. treeMapParser :: (forall x. OptHelpInfo -> Option x -> b) -> Parser a -> OptTree b optionNames :: OptReader a -> [OptName] instance Monoid MatchResult module Options.Applicative.Builder -- | Builder for a command parser. The command modifier can be used -- to specify individual commands. subparser :: Mod CommandFields a -> Parser a -- | Builder for an argument parser. argument :: (String -> Maybe a) -> Mod ArgumentFields a -> Parser a -- | Builder for an argument list parser. All arguments are collected and -- returned as a list. -- -- Note that arguments starting with - are ignored. -- -- This parser accepts a special argument: --. When a -- -- is found on the command line, all following arguments are -- included in the result, even if they start with -. arguments :: (String -> Maybe a) -> Mod ArgumentFields [a] -> Parser [a] -- | Builder for a flag parser. -- -- A flag that switches from a "default value" to an "active value" when -- encountered. For a simple boolean value, use switch instead. flag :: a -> a -> Mod FlagFields a -> Parser a -- | Builder for a flag parser without a default value. -- -- Same as flag, but with no default value. In particular, this -- flag will never parse successfully by itself. -- -- It still makes sense to use it as part of a composite parser. For -- example -- --
-- length <$> many (flag' () (short 't')) ---- -- is a parser that counts the number of -t arguments on the -- command line. flag' :: a -> Mod FlagFields a -> Parser a -- | Builder for a boolean flag. -- --
-- switch = flag False True --switch :: Mod FlagFields Bool -> Parser Bool -- | Builder for an option with a null reader. A non-trivial reader can be -- added using the reader modifier. nullOption :: Mod OptionFields a -> Parser a -- | Builder for an option taking a String argument. strOption :: Mod OptionFields String -> Parser String -- | Builder for an option using the auto reader. option :: Read a => Mod OptionFields a -> Parser a -- | Specify a short name for an option. short :: HasName f => Char -> Mod f a -- | Specify a long name for an option. long :: HasName f => String -> Mod f a -- | Specify the help text for an option. help :: String -> Mod f a -- | Specify a default value for an option. value :: a -> Mod f a -- | Specify a function to show the default value for an option. showDefaultWith :: (a -> String) -> Mod f a -- | Show the default value for this option using its Show instance. showDefault :: Show a => Mod f a -- | Specify the metavariable. metavar :: String -> Mod f a -- | Specify the Option reader. reader :: (String -> Maybe a) -> Mod OptionFields a -- | Hide this option from the brief description. hidden :: Mod f a -- | Hide this option from the help text internal :: Mod f a -- | Add a command to a subparser option. command :: String -> ParserInfo a -> Mod CommandFields a idm :: Monoid m => m (&) :: Monoid m => m -> m -> m -- | Option reader based on the Read type class. auto :: Read a => String -> Maybe a -- | String Option reader. str :: String -> Maybe String -- | Null Option reader. All arguments will fail validation. disabled :: String -> Maybe a data Mod f a class HasName f data OptionFields a data FlagFields a data CommandFields a data ArgumentFields a -- | Modifier for ParserInfo. data InfoMod a -- | Specify a full description for this parser. fullDesc :: InfoMod a -- | Specify a header for this parser. header :: String -> InfoMod a -- | Specify a short program description. progDesc :: String -> InfoMod a -- | Specify a footer for this parser. footer :: String -> InfoMod a -- | Specify an exit code if a parse error occurs. failureCode :: Int -> InfoMod a -- | Create a ParserInfo given a Parser and a modifier. info :: Parser a -> InfoMod a -> ParserInfo a data PrefsMod multiSuffix :: String -> PrefsMod prefs :: PrefsMod -> ParserPrefs instance Functor OptionFields instance Functor FlagFields instance Functor CommandFields instance Functor ArgumentFields instance Monoid PrefsMod instance Monoid (InfoMod a) instance Monoid (Mod f a) instance Monoid (DefaultProp a) instance HasName FlagFields instance HasName OptionFields module Options.Applicative.Help -- | Generate descriptions for commands. cmdDesc :: Parser a -> [String] -- | Generate a brief help text for a parser. briefDesc :: ParserPrefs -> Parser a -> String -- | Generate a full help text for a parser. fullDesc :: ParserPrefs -> Parser a -> [String] -- | Generate the help text for a program. parserHelpText :: ParserPrefs -> ParserInfo a -> String module Options.Applicative.Extra -- | A hidden "helper" option which always fails. helper :: Parser (a -> a) -- | Run a program description. -- -- Parse command line arguments. Display help text and exit if any parse -- error occurs. execParser :: ParserInfo a -> IO a -- | A pure version execParser. execParserPure :: ParserPrefs -> ParserInfo a -> [String] -> Either ParserFailure a -- | Generate option summary. usage :: ParserPrefs -> Parser a -> String -> String -- | Result after a parse error. data ParserFailure ParserFailure :: (String -> String) -> ExitCode -> ParserFailure -- | Function which takes the program name as input and returns an error -- message errMessage :: ParserFailure -> String -> String -- | Exit code to use for this error errExitCode :: ParserFailure -> ExitCode module Options.Applicative -- | This module contains an arrow interface for option parsers, which -- allows to define and combine parsers using the arrow notation and -- arrow combinators. -- -- The arrow syntax is particularly useful to create parsers of nested -- structures, or records where the order of fields is different from the -- order in which the parsers should be applied. -- -- For example, an arguments parser often needs to be applied -- last, and that makes it inconvenient to use it for a field which is -- not the last one in a record. -- -- Using the arrow syntax and the functions in this module, one can -- write, e.g.: -- --
-- data Options = Options
-- { optArgs :: [String]
-- , optVerbose :: Bool }
--
-- opts :: Parser Options
-- opts = runA $ proc () -> do
-- verbose <- asA (switch (short 'v')) -< ()
-- args <- asA (arguments str idm) -< ()
-- returnA -< Options args verbose
--
--
-- Parser arrows, created out of regular Parser values using the
-- asA function, are arrows taking () as argument and
-- returning the parsed value.
module Options.Applicative.Arrows
-- | For any Applicative functor f, A f is the
-- Arrow instance associated to f.
--
-- The A constructor can be used to convert a value of type f
-- (a -> b) into an arrow.
newtype A f a b
A :: f (a -> b) -> A f a b
unA :: A f a b -> f (a -> b)
-- | Convert a value of type f a into an arrow taking ()
-- as argument.
--
-- Applied to a value of type Parser, it turns it into an arrow
-- that can be used inside an arrow command, or passed to arrow
-- combinators.
asA :: Applicative f => f a -> A f () a
-- | Convert an arrow back to an applicative value.
--
-- This function can be used to return a result of type Parser
-- from an arrow command.
runA :: Applicative f => A f () a -> f a
-- | The type of arrows associated to the applicative Parser
-- functor.
type ParserA = A Parser
instance Applicative f => Arrow (A f)
instance Applicative f => Category (A f)