-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Simple interface to optparse-applicative -- -- Please see the README at -- https://www.stackage.org/package/optparse-simple @package optparse-simple @version 0.1.0 -- | Simple interface to program arguments. -- -- Typical usage with no commands: -- --
--   do (opts,()) <-
--        simpleOptions "ver"
--                      "header"
--                      "desc"
--                      (flag () () (long "some-flag"))
--                      empty
--      doThings opts
--   
-- -- Typical usage with commands: -- --
--   do (opts,runCmd) <-
--        simpleOptions "ver"
--                      "header"
--                      "desc"
--                      (pure ()) $
--        do addCommand "delete"
--                      "Delete the thing"
--                      (const deleteTheThing)
--                      (pure ())
--           addCommand "create"
--                      "Create a thing"
--                      createAThing
--                      (strOption (long "hello"))
--      runCmd
--   
module Options.Applicative.Simple -- | Generate and execute a simple options parser. simpleOptions :: String -> String -> String -> Parser a -> ExceptT b (Writer (Mod CommandFields b)) () -> IO (a, b) -- | Generate a string like Version 1.2, Git revision 1234. -- -- $(simpleVersion …) :: String simpleVersion :: Version -> Q Exp -- | Add a command to the options dispatcher. addCommand :: String -> String -> (a -> b) -> Parser a -> ExceptT b (Writer (Mod CommandFields b)) () -- | Add a command that takes sub-commands to the options dispatcher. -- -- Example: -- --
--   addSubCommands "thing"
--                  "Subcommands that operate on things"
--                  (do addCommand "delete"
--                                 "Delete the thing"
--                                 (const deleteTheThing)
--                                 (pure ())
--                      addCommand "create"
--                                 "Create a thing"
--                                 createAThing
--                                 (strOption (long "hello")))
--   
-- -- If there are common options between all the sub-commands, use -- addCommand in combination with simpleParser instead of -- addSubCommands. addSubCommands :: String -> String -> ExceptT b (Writer (Mod CommandFields b)) () -> ExceptT b (Writer (Mod CommandFields b)) () -- | Generate a simple options parser. -- -- Most of the time you should use simpleOptions instead, but -- simpleParser can be used for sub-commands that need common -- options. For example: -- --
--   addCommand "thing"
--              "Subcommands that operate on things"
--              (\(opts,runSubCmd) -> runSubCmd opts)
--              (simpleParser (flag () () (long "some-flag")) $
--               do addCommand "delete"
--                             "Delete the thing"
--                             (const deleteTheThing)
--                             (pure ())
--                  addCommand "create"
--                             "Create a thing"
--                             createAThing
--                             (strOption (long "hello")))
--   
simpleParser :: Parser a -> ExceptT b (Writer (Mod CommandFields b)) () -> Parser (a, b)