-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Applicative flag parsing
--
-- https://github.com/mtth/flags-applicative
@package flags-applicative
@version 0.0.4.2
-- | Simple flags parsing module, inspired by
-- optparse-applicative.
--
-- Sample usage (note the default log level and optional context):
--
--
-- module Main where
--
-- import Control.Applicative ((<|>), optional)
-- import Data.Text (Text)
-- import Flags.Applicative
--
-- data Options = Options
-- { rootPath :: Text
-- , logLevel :: Int
-- , context :: Maybe Text
-- } deriving Show
--
-- optionsParser :: FlagParser Options
-- optionsParser = Options <$> textFlag "root" "path to the root"
-- <*> (autoFlag "log_level" "" <|> pure 0)
-- <*> (optional $ textFlag "context" "")
--
-- main :: IO ()
-- main = do
-- (opts, args) <- parseSystemFlagsOrDie optionsParser
-- print opts
--
module Flags.Applicative
-- | The name of a flag (without the -- prefix). Names can use all
-- valid utf-8 characters except = (the value delimiter). In
-- general, it's good practice for flag names to be lowercase ASCII with
-- underscores.
--
-- The following names are reserved and attempting to define a flag with
-- the same name will cause an error:
--
--
-- - help, displays usage when set.
-- - swallowed_flags, flags in this list which are set but
-- undeclared will be ignored rather than cause an error during
-- parsing.
-- - swallowed_switches, similar to swallowed_flags
-- but for switches (nullary flags).
--
type Name = Text
-- | An human-readable explanation of what the flag does. It is displayed
-- when the parser is invoked with the --help flag.
type Description = Text
-- | Flags parser.
--
-- There are two types of flags:
--
--
-- - Nullary flags created with switch and boolFlag,
-- which do not accept a value.
-- - Unary flags created with flag and its convenience variants
-- (e.g. textFlag, autoFlag, autoListFlag). These
-- expect a value to be passed in either after an equal sign
-- (--foo=value) or as the following input value (--foo
-- value). If the value starts with --, only the first form
-- is accepted.
--
--
-- You can run a parser using parseFlags or
-- parseSystemFlagsOrDie.
data FlagParser a
-- | The possible parsing errors.
data FlagError
-- | A flag was declared multiple times.
DuplicateFlag :: Name -> FlagError
-- | The parser was empty.
EmptyParser :: FlagError
-- | The input included the --help flag.
Help :: Text -> FlagError
-- | At least one unary flag was specified multiple times with different
-- values.
InconsistentFlagValues :: Name -> FlagError
-- | A unary flag's value failed to parse.
InvalidFlagValue :: Name -> Text -> String -> FlagError
-- | A required flag was missing.
MissingFlag :: Name -> FlagError
-- | A unary flag was missing a value. This can happen either if a
-- value-less unary flag was the last token or was followed by a value
-- which is also a flag name (in which case you should use the
-- single-token form: --flag=--value).
MissingFlagValue :: Name -> FlagError
-- | A flag with a reserved name was declared.
ReservedFlag :: Name -> FlagError
-- | At least one flag was set but unused. This can happen when optional
-- flags are set but their branch is not selected.
UnexpectedFlags :: NonEmpty Name -> FlagError
-- | An unknown flag was set.
UnknownFlag :: Name -> FlagError
-- | Runs a parser on a list of tokens, returning the parsed flags
-- alongside other non-flag arguments (i.e. which don't start with
-- --). If the special -- token is found, all following
-- tokens will be considered arguments even if they look like flags.
parseFlags :: FlagParser a -> [String] -> Either FlagError (a, [String])
-- | Runs a parser on the system's arguments, or exits with code 1 and
-- prints the relevant error message in case of failure.
parseSystemFlagsOrDie :: FlagParser a -> IO (a, [String])
-- | Returns a parser with the given name and description for a flag with
-- no value, failing if the flag is not present. See also boolFlag
-- for a variant which doesn't fail when the flag is missing.
switch :: Name -> Description -> FlagParser ()
-- | Returns a parser with the given name and description for a flag with
-- no value, returning whether the flag was present.
boolFlag :: Name -> Description -> FlagParser Bool
-- | Returns a parser using the given parsing function, name, and
-- description for a flag with an associated value.
flag :: (Text -> Either String a) -> Name -> Description -> FlagParser a
-- | Returns a parser for a single text value.
textFlag :: Name -> Description -> FlagParser Text
-- | Returns a parser for any value with a Read instance. Prefer
-- textFlag for textual values since flag will expect its
-- values to be double-quoted and might not work as expected.
autoFlag :: Read a => Name -> Description -> FlagParser a
-- | Returns a parser for a single flag with multiple text values.
textListFlag :: Text -> Name -> Description -> FlagParser [Text]
-- | Returns a parser for a single flag with multiple values having a
-- Read instance, with a configurable separator. Empty values are
-- always ignored, so it's possible to declare an empty list as
-- --list= and trailing commas are supported.
autoListFlag :: Read a => Text -> Name -> Description -> FlagParser [a]
instance GHC.Show.Show Flags.Applicative.FlagError
instance GHC.Classes.Eq Flags.Applicative.FlagError
instance GHC.Base.Functor Flags.Applicative.FlagParser
instance GHC.Show.Show Flags.Applicative.ParserError
instance GHC.Classes.Eq Flags.Applicative.ParserError
instance GHC.Classes.Ord Flags.Applicative.Usage
instance GHC.Classes.Eq Flags.Applicative.Usage
instance GHC.Classes.Eq Flags.Applicative.Arity
instance GHC.Base.Applicative Flags.Applicative.FlagParser
instance GHC.Base.Alternative Flags.Applicative.FlagParser