in hbase-hbck2/src/main/java/org/apache/hbase/HBCK2.java [911:984]
public int run(String[] args) throws IOException {
// Configure Options. The below article was more helpful than the commons-cli doc:
// https://dzone.com/articles/java-command-line-interfaces-part-1-apache-commons
Options options = new Options();
Option help = Option.builder("h").longOpt("help").desc("output this help message").build();
options.addOption(help);
Option debug = Option.builder("d").longOpt("debug").desc("run with debug output").build();
options.addOption(debug);
Option quorum = Option.builder("q").longOpt(HConstants.ZOOKEEPER_QUORUM).hasArg().
desc("hbase ensemble").build();
options.addOption(quorum);
Option parent = Option.builder("z").longOpt(HConstants.ZOOKEEPER_ZNODE_PARENT).hasArg()
.desc("parent znode of hbase ensemble").build();
options.addOption(parent);
Option peerPort = Option.builder("p").longOpt(HConstants.ZOOKEEPER_CLIENT_PORT).hasArg()
.desc("port of hbase ensemble").type(Integer.class).build();
options.addOption(peerPort);
Option version = Option.builder("v").longOpt(VERSION).desc("this hbck2 version").build();
options.addOption(version);
Option skip = Option.builder("s").longOpt("skip").
desc("skip hbase version check (PleaseHoldException)").build();
options.addOption(skip);
// Parse command-line.
CommandLineParser parser = new DefaultParser();
CommandLine commandLine;
try {
commandLine = parser.parse(options, args, true);
} catch (ParseException e) {
showErrorMessage(e.getMessage());
return EXIT_FAILURE;
}
// Process general options.
if (commandLine.hasOption(version.getOpt())) {
System.out.println(readHBCK2BuildProperties(VERSION));
return EXIT_SUCCESS;
}
if (commandLine.hasOption(help.getOpt()) || commandLine.getArgList().isEmpty()) {
showUsage(options);
return EXIT_SUCCESS;
}
if (commandLine.hasOption(debug.getOpt())) {
Configurator.setRootLevel(Level.DEBUG);
}
// Build up Configuration for client to use connecting to hbase zk ensemble.
if (commandLine.hasOption(quorum.getOpt())) {
getConf().set(HConstants.ZOOKEEPER_QUORUM, commandLine.getOptionValue(quorum.getOpt()));
}
if (commandLine.hasOption(peerPort.getOpt())) {
String optionValue = commandLine.getOptionValue(peerPort.getOpt());
if (optionValue.matches("[0-9]+")) {
getConf().setInt(HConstants.ZOOKEEPER_CLIENT_PORT, Integer.parseInt(optionValue));
} else {
showErrorMessage(
"Invalid client port. Please provide proper port for target hbase ensemble.");
return EXIT_FAILURE;
}
}
if (commandLine.hasOption(parent.getOpt())) {
String optionValue = commandLine.getOptionValue(parent.getOpt());
if (optionValue.startsWith("/")) {
getConf().set(HConstants.ZOOKEEPER_ZNODE_PARENT, optionValue);
} else {
showErrorMessage("Invalid parent znode. Please provide proper parent znode of target hbase."
+ " Note that valid znodes must start with \"/\".");
return EXIT_FAILURE;
}
}
if (commandLine.hasOption(skip.getOpt())) {
skipCheck = true;
}
return doCommandLine(commandLine, options);
}