by.stub.cli.CommandLineInterpreter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of stubby4j Show documentation
Show all versions of stubby4j Show documentation
HTTP stub server written in Java with embedded Jetty
/*
A Java-based HTTP stub server
Copyright (C) 2012 Alexander Zagniotov, Isa Goksu and Eric Mrak
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
package by.stub.cli;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
import java.util.HashMap;
import java.util.Map;
public final class CommandLineInterpreter {
public static final String OPTION_ADDRESS = "location";
public static final String OPTION_CLIENTPORT = "stubs";
public static final String OPTION_SSLPORT = "ssl";
public static final String OPTION_ADMINPORT = "admin";
public static final String OPTION_CONFIG = "data";
public static final String OPTION_KEYSTORE = "keystore";
public static final String OPTION_KEYPASS = "password";
public static final String OPTION_MUTE = "mute";
public static final String OPTION_WATCH = "watch";
public static final String OPTION_HELP = "help";
private static final CommandLineParser POSIX_PARSER = new PosixParser();
private static final Options OPTIONS = new Options();
private CommandLine line;
static {
OPTIONS.addOption("l", OPTION_ADDRESS, true, "Hostname at which to bind stubby.");
OPTIONS.addOption("s", OPTION_CLIENTPORT, true, "Port for stub portal. Defaults to 8882.");
OPTIONS.addOption("a", OPTION_ADMINPORT, true, "Port for admin portal. Defaults to 8889.");
OPTIONS.addOption("t", OPTION_SSLPORT, true, "Port for SSL connection. Defaults to 7443.");
OPTIONS.addOption("d", OPTION_CONFIG, true, "Data file to pre-load endpoints. Valid YAML 1.1 expected.");
OPTIONS.addOption("k", OPTION_KEYSTORE, true, "Keystore file for custom SSL. By default SSL is enabled using internal keystore.");
OPTIONS.addOption("p", OPTION_KEYPASS, true, "Password for the provided keystore file.");
OPTIONS.addOption("h", OPTION_HELP, false, "This help text.");
OPTIONS.addOption("m", OPTION_MUTE, false, "Prevent stubby from printing to the console.");
OPTIONS.addOption("w", OPTION_WATCH, false, "Reload datafile when changes are made.");
}
public void parseCommandLine(final String[] args) throws ParseException {
line = POSIX_PARSER.parse(OPTIONS, args);
}
/**
* Checks if console output has been muted
*
* @return true if the user disabled output to console using command line arg
*/
public boolean isMute() {
return line.hasOption(OPTION_MUTE);
}
/**
* Checks if data YAML was provided
*
* @return true if the user provided stub data as YAML file with using command line arg
*/
public boolean isYamlProvided() {
return line.hasOption(OPTION_CONFIG);
}
/**
* Checks if help option was provided
*
* @return true if the user has provided 'help' command line arg
*/
public boolean isHelp() {
return line.hasOption(OPTION_HELP);
}
/**
* Prints 'help' message which describes avilable command line arguments
*/
public void printHelp() {
final HelpFormatter formatter = new HelpFormatter();
final String command = String.format("%sjava -jar stubby4j-x.x.xx.jar", "\n");
formatter.printHelp(command, OPTIONS, true);
}
/**
* Identifies what command line arguments that have been passed by user are matching available options
*
* @return a map of passed command line arguments where key is the name of the argument
*/
public Map getCommandlineParams() {
final Option[] options = line.getOptions();
return new HashMap() {{
for (final Option option : options) {
put(option.getLongOpt(), option.getValue());
}
}};
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy