optparse-simple-0.1.1.2: Simple interface to optparse-applicative

Safe HaskellNone
LanguageHaskell2010

Options.Applicative.Simple

Description

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 
Synopsis

Documentation

simpleOptions Source #

Arguments

:: String

version string

-> String

header

-> String

program description

-> Parser a

global settings

-> ExceptT b (Writer (Mod CommandFields b)) ()

commands (use addCommand)

-> IO (a, b) 

Generate and execute a simple options parser.

simpleVersion :: Version -> Q Exp Source #

Generate a string like Version 1.2, Git revision 1234.

$(simpleVersion …) :: String

addCommand Source #

Arguments

:: String

command string

-> String

title of command

-> (a -> b)

constructor to wrap up command in common data type

-> Parser a

command parser

-> ExceptT b (Writer (Mod CommandFields b)) () 

Add a command to the options dispatcher.

addSubCommands Source #

Arguments

:: String

command string

-> String

title of command

-> ExceptT b (Writer (Mod CommandFields b)) ()

sub-commands (use addCommand)

-> 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.

simpleParser Source #

Arguments

:: Parser a

common settings

-> ExceptT b (Writer (Mod CommandFields b)) ()

commands (use addCommand)

-> Parser (a, 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")))