-- 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 -- -- Common 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.2.0 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 -> ParserDesc -> ParserInfo a -- | the option parser for the program _infoParser :: ParserInfo a -> Parser a -- | description of the parser _infoDesc :: ParserInfo a -> ParserDesc -- | Attributes that can be associated to a Parser. data ParserDesc ParserDesc :: Bool -> String -> String -> String -> Int -> ParserDesc -- | whether the help text should contain full documentation _descFull :: ParserDesc -> Bool -- | brief parser description _descProg :: ParserDesc -> String -- | header of the full parser description _descHeader :: ParserDesc -> String -- | footer of the full parser description _descFooter :: ParserDesc -> String -- | exit code for a parser failure _descFailureCode :: ParserDesc -> 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) infoParser :: Lens (ParserInfo a) (Parser a) infoDesc :: Lens (ParserInfo a) ParserDesc infoFullDesc :: Lens (ParserInfo a) Bool infoProgDesc :: Lens (ParserInfo a) String infoHeader :: Lens (ParserInfo a) String infoFooter :: Lens (ParserInfo a) String infoFailureCode :: Lens (ParserInfo a) Int descFull :: Lens ParserDesc Bool descProg :: Lens ParserDesc String descHeader :: Lens ParserDesc String descFooter :: Lens ParserDesc String descFailureCode :: Lens ParserDesc Int -- | A single option of a parser. data Option a Option :: OptReader a -> OptProperties a -> Option a -- | reader for this option _optMain :: Option a -> OptReader a -- | properties of this option _optProps :: Option a -> OptProperties a 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 a OptProperties :: Maybe a -> OptVisibility -> String -> String -> OptProperties a -- | default value _propDefault :: OptProperties a -> Maybe a -- | whether this flag is shown is the brief description _propVisibility :: OptProperties a -> OptVisibility -- | help text for this option _propHelp :: OptProperties a -> String -- | metavariable for this option _propMetaVar :: OptProperties a -> 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 optMain :: Lens (Option a) (OptReader a) optDefault :: Lens (Option a) (Maybe a) optVisibility :: Lens (Option a) OptVisibility optHelp :: Lens (Option a) String optMetaVar :: Lens (Option a) String propDefault :: Lens (OptProperties a) (Maybe a) propVisibility :: Lens (OptProperties a) OptVisibility propHelp :: Lens (OptProperties a) String propMetaVar :: Lens (OptProperties a) String prefMultiSuffix :: Lens ParserPrefs String instance Eq OptName instance Ord OptName instance Eq OptVisibility instance Ord OptVisibility instance Functor OptProperties instance Functor Option instance Functor OptReader instance Functor ParserInfo 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 -> ParserDesc -> ParserInfo a -- | the option parser for the program _infoParser :: ParserInfo a -> Parser a -- | description of the parser _infoDesc :: ParserInfo a -> ParserDesc -- | 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. mapParser :: (forall x. OptHelpInfo -> Option x -> b) -> Parser a -> [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 b -> Parser b -- | Builder for an argument parser. argument :: (String -> Maybe a) -> Mod Identity a b -> Parser b -- | 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 Identity a b -> Parser [b] -- | 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 b -> Parser b -- | 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 b -> Parser b -- | Builder for a boolean flag. -- --
-- switch = flag False True --switch :: Mod FlagFields Bool a -> Parser a -- | Builder for an option with a null reader. A non-trivial reader can be -- added using the reader modifier. nullOption :: Mod OptionFields a b -> Parser b -- | Builder for an option taking a String argument. strOption :: Mod OptionFields String a -> Parser a -- | Builder for an option using the auto reader. option :: Read a => Mod OptionFields a b -> Parser b -- | Specify a short name for an option. short :: HasName f => Char -> Mod f a a -- | Specify a long name for an option. long :: HasName f => String -> Mod f a a -- | Specify the help text for an option. help :: String -> Mod f a a -- | Specify a default value for an option. value :: a -> Mod f a a -- | Specify the metavariable. metavar :: String -> Mod f a a -- | Specify the Option reader. reader :: (String -> Maybe a) -> Mod OptionFields a a -- | Hide this option from the brief description. hidden :: Mod f a a -- | Hide this option from the help text internal :: Mod f a a -- | Apply a transformation to the return value of this option. -- -- This can be used, for example, to provide a default value for a -- required option, like: -- --
-- strOption -- ( transform Just -- & value Nothing ) --transform :: Functor f => (a -> b) -> Mod f a b -- | Add a command to a subparser option. command :: String -> ParserInfo a -> Mod CommandFields a a -- | Trivial option modifier. idm :: Category hom => hom a a -- | Compose modifiers. (&) :: Category hom => hom a b -> hom b c -> hom a c -- | 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 b class HasName f data OptionFields a data FlagFields a data CommandFields a -- | Modifier for ParserInfo. data InfoMod a b -- | Specify a full description for this parser. fullDesc :: InfoMod a a -- | Specify a header for this parser. header :: String -> InfoMod a a -- | Specify a short program description. progDesc :: String -> InfoMod a a -- | Specify a footer for this parser. footer :: String -> InfoMod a a -- | Specify an exit code if a parse error occurs. failureCode :: Int -> InfoMod a a -- | Create a ParserInfo given a Parser and a modifier. info :: Parser a -> InfoMod a a -> ParserInfo a -- | Modifier for ParserPrefs. type PrefsMod = PrefsModC ParserPrefs ParserPrefs multiSuffix :: String -> PrefsMod prefs :: PrefsMod -> ParserPrefs instance Functor OptionFields instance Functor FlagFields instance Functor CommandFields instance Category PrefsModC instance Category InfoMod instance Category (Mod f) 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)