haveno/gui/src/main/java/io/bitsquare/app/BitsquareExecutable.java
2015-02-27 23:47:23 +01:00

69 lines
2.3 KiB
Java

/*
* This file is part of Bitsquare.
*
* Bitsquare is free software: you can redistribute it and/or modify it
* under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at
* your option) any later version.
*
* Bitsquare 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 Affero General Public
* License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Bitsquare. If not, see <http://www.gnu.org/licenses/>.
*/
package io.bitsquare.app;
import joptsimple.OptionException;
import joptsimple.OptionParser;
import joptsimple.OptionSet;
import org.springframework.util.StringUtils;
import static java.lang.String.*;
public abstract class BitsquareExecutable {
public static final int EXIT_SUCCESS = 0;
public static final int EXIT_FAILURE = 1;
public static final String HELP_KEY = "help";
public void execute(String[] args) throws Exception {
OptionParser parser = new OptionParser();
parser.accepts(HELP_KEY, "This help text").forHelp();
this.customizeOptionParsing(parser);
OptionSet options;
try {
options = parser.parse(args);
if (options.has(HELP_KEY)) {
parser.printHelpOn(System.out);
System.exit(EXIT_SUCCESS);
return;
}
} catch (OptionException ex) {
System.out.println("error: " + ex.getMessage());
System.out.println();
parser.printHelpOn(System.out);
System.exit(EXIT_FAILURE);
return;
}
this.doExecute(options);
}
protected abstract void customizeOptionParsing(OptionParser parser);
protected static String description(String descText, Object defaultValue) {
String description = "";
if (StringUtils.hasText(descText))
description = description.concat(descText);
if (defaultValue != null)
description = join(" ", description, format("(default: %s)", defaultValue));
return description;
}
protected abstract void doExecute(OptionSet options);
}