package org.caudexorigo.cli;
/**
* Parses arguments and presents them, in a typesafe style, as an instance of the interface <code>O</code>
*
* @author Tim Wood
*
* @param <O>
* The type of interface provided by this Cli
*/
public interface Cli<O>
{
/**
* Parse the arguments and present them as an instance of the interface O
*
* @param arguments
* The arguments that will be parsed
*
* @return An instance of the interface O which will present the parsed arguments
*
* @throws InvalidArgumentsException
* @throws ArgumentValidationException
*/
O parseArguments(final String... arguments) throws ArgumentValidationException;
/**
* Get a help message suitable for describing the options to the user
*
* @param programName
* The name of the program to use in the help message
*
* @return A help message
*/
String getHelpMessage();
}