Requirements for CLI functionality (taken from DNSCheck 1.*'s) for the Zonemaster project. This is the functional requirements from the current DNSCheck.
Current code: https://github.com/dotse/dnscheck/blob/master/engine/apps/dnscheck

Usability:
[1.1] The output from the CLI MUST provide timestamps for each log line, with an option to remove or add the timestamps in the output.
 [1.2] The output from the CLI MUST be able to provide information about what test level and test case generated a certain log entry with an option to remove or add the information in the output.
 [1.3] The CLI MUST be able to report the version used to run the test. Optional to report any version of each individual test case.

Input:
[2.1] The CLI MUST be able to output a help text, either explicitly or if user input does not validate.
 [2.2] The CLI SHOULD have a filter parameter to be able to hide log messages below a certain error level.
 [2.3] The CLI MUST be able to run with a user-provided configuration. A default SHOULD be used if none is provided.
 [2.4] The CLI MUST be able to run with a user-provided policy. A default SHOULD be used if none is provided.
 [2.5] The CLI MUST be able to run with a user-provided locale (language). A default SHOULD be used if none is provided.
 [2.6] The user MUST be able to specify name servers and corresponding IP-addresses as input for undelegated test purposes.
 [2.8] The user MUST be able to specify DS-data as input to be able to test DNSSEC fully even for undelegated domains.
 [2.9] The user MUST specify no more than one domain to test.

Output:
[3.1] The CLI MUST be able to provide an output log that is machine parseable and this MAY be disabled or enabled with a provided parameter.
 [3.2] The CLI MUST be able to provide output that is human readable and this SHOULD be the default mode although the default MAY be configurable.
 [3.3] The output from the CLI MUST have several levels of verbosity for DNS debugging purposes, for example additional messages and module version reports at a low level up to raw DNS packets and dependency modules' versions at higher levels.

