ReadArgs alternatives and similar packages
Based on the "Command Line" category.
Alternatively, view ReadArgs alternatives based on common mentions on social networks and blogs.
-
herms
:stew::fork_and_knife: A command-line manager for delicious kitchen recipes -
cli-extras
Miscellaneous utilities for building and working with command line interfaces -
cli
Command Line Interface Utility (Printing, Formatting, Options parsing) for Haskell -
otp-authenticator
OTP Authenticator (ala Google Authenticator) cli app -
optparse-applicative-simple
Simple command line interface arguments parser -
hnormalise
Log message normalisation tool producing structured JSON messages
Access the most powerful time series database as a service
Do you think we are missing an alternative of ReadArgs or a related project?
Popular Comparisons
README
ReadArgs provides the readArgs IO action, which lets you tell the compiler to parse the command line arguments to fit the type signature you give.
For example (a :: Int, b :: String, c :: Float) <- readArgs
would
parse the first runtime argument as an Int, the second as a String (no
quotes required) and the third as a float.
If the runtime arguments are incompatible with the type signature, then a simple usage statement is given of the types needed.
Continuing the previous example, if it was used in a program named Example, the error message for the above action would be:
usage: Example Int String Float
Any type that has both Typeable and Read instances can be used. Char, String, and Text are handled specially so that command line arguments for both do not require quotes (as their Read instances do). A special instance is provided for FilePath so that no constructor or quotes are required.
readArgs also supports optional arguments and variadic arguments.
Optional arguments are specified using Maybe, and variadic arguments
using a list. (a :: Int, b :: Maybe String, c :: [Float]) <- readArgs
would successfully parse any of the following sets of command line arguments:
Example 1
Example 1 2 3 4
Example 1 foo
Example 1 foo 2 3 4
But not
Example
Example foo
Example 1.0
Usage statements for optional and variadic arguments use command-line parlance:
usage: Example Int [String] [Float..]
Note that both optional and variadic parsers are greedy by default
(so Example 1 2 3 4
was parsed as (1, "2", [3.0,4.0])
. They
may both be made non-greedy through use of the NonGreedy constructor:
( a :: Int
, NonGreedy b :: NonGreedy Maybe String
, NonGreedy c :: NonGreedy [] Float
) <- readArgs