Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module contains a common pattern for parsing the legion runtime settings and application-specific configuration from the command line. The intent of this module is to implement a very specific and simple pattern that some people find useful and to get them there with minimum effort; not to be a flexible solution to every problem in the domain of configuration, or even to endorse the use of this pattern if you think you might need something different.
This parseArgs
function implements a command line parser that accepts
the usage:
<your-program-name> -c <file> --config=<file> REQUIRED - Specifies the config file. -j <host>:<port> --joinTarget=<host>:<port> OPTIONAL - The address of a node in the cluster we want to join.
The config file is a YAML file, which has the following format:
adminAddr: localhost:8080 peerAddr: localhost:8022 joinAddr: localhost:8023
In addition to these bindings, an arbitrary set of additional bindings
may be supplied, and which will be decoded into some FromJSON
instance
type of your choosing. (Note that the yaml
package is implemented by
transforming the YAML input to JSON and then delegating to aeson
,
which is why your custom config type must be FromJSON
, even though
the config file is YAML format.)
After parsing the command line and config file, parseArgs
will then
return a tuple containing the legionary runtime settings, the startup
mode that should be used, and custom application configuration.
- parseArgs :: FromJSON userConfig => IO (RuntimeSettings, StartupMode, userConfig)
Documentation
parseArgs :: FromJSON userConfig => IO (RuntimeSettings, StartupMode, userConfig) Source #
Parse the command line arguments.