/*******************************************************************************
* Copyright © 2012-2015 eBay Software Foundation
* This program is dual licensed under the MIT and Apache 2.0 licenses.
* Please see LICENSE for more information.
*******************************************************************************/
/**
*
*/
package com.ebay.jetstream.application;
import java.io.PrintWriter;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
public class CliOptions {
private final CliOptionHandler m_optionHandler;
private final Options m_options;
public CliOptions(CliOptionHandler handler, String args[]) {
m_optionHandler = handler;
Options options = new Options();
options.addOption("h", "help", false, "Help");
m_options = m_optionHandler.addOptions(options);
m_optionHandler.parseOptions(getCommandLine(args));
}
/**
* Parse command line options and enforce rules, config file, app name and config version are mandatory
*
* @param args
*/
private CommandLine getCommandLine(String[] args) {
CommandLine cl = null;
try {
cl = new GnuParser().parse(m_options, args);
if (cl.hasOption('h')) {
printUsageAndExit(true);
}
}
catch (ParseException e) {
printErrorAndExit(e.getMessage());
}
return cl;
}
private void printErrorAndExit(String message) {
System.err.println("Error: " + message);
printUsageAndExit(false);
}
private void printUsageAndExit(boolean verbose) {
PrintWriter pw = new PrintWriter(System.err, true);
HelpFormatter hf = new HelpFormatter();
hf.printUsage(pw, 72, m_optionHandler.getClass().getCanonicalName(), m_options);
if (verbose)
hf.printOptions(pw, 72, m_options, 3, 3);
System.exit(1);
}
}