package be.billington.rob;
import org.apache.commons.cli.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final String O_REPO = "r";
private static final String O_OWNER = "o";
private static final String O_BRANCH = "b";
private static final String O_PREFIX = "p";
private static final String O_API = "a";
private static final String O_FROM_DATE = "fd";
private static final String O_TO_DATE = "td";
private static final String O_OUTPUT_FILE = "f";
private static final String O_CONFIG_FILE = "c";
private static final String O_BITBUCKET_KEY = "k";
private static final String O_BITBUCKET_SECRET = "s";
private static final String O_GITHUB_TOKEN = "t";
private static String repo, owner, branch, api, prefix, fromDate, toDate, filePath, rulesFile, key, secret, token;
public static void main(String[] args){
Logger logger = LoggerFactory.getLogger("");
logger.info("Robbing...");
CommandLineParser parser = new BasicParser();
try {
CommandLine cmd = parser.parse(createParserOptions(), args);
initParams(cmd);
Configuration conf = new Configuration.ConfigurationBuilder(logger, api, repo, owner)
.branch(branch).prefix(prefix).filePath(filePath).fromDate(fromDate).toDate(toDate)
.token(token).key(key).secret(secret).configPath(rulesFile).build();
Rob.logs(conf);
} catch (ParseException e) {
logger.error("ParseException: " + e.getMessage(), e);
usage(createParserOptions());
} catch (Exception ex) {
logger.error("Error: " + ex.getMessage(), ex);
}
logger.info("Robbed.");
}
private static void initParams(CommandLine cmd) {
repo = cmd.getOptionValue(O_REPO);
owner = cmd.getOptionValue(O_OWNER);
if (cmd.hasOption(O_BRANCH)) {
branch = cmd.getOptionValue(O_BRANCH);
} else {
branch = "development";
}
if (cmd.hasOption(O_PREFIX)) {
prefix = cmd.getOptionValue(O_PREFIX);
}
if (cmd.hasOption(O_API)) {
api = cmd.getOptionValue(O_API);
} else {
api = Rob.API_BITBUCKET;
}
if (cmd.hasOption(O_FROM_DATE)) {
fromDate = cmd.getOptionValue(O_FROM_DATE);
}
if (cmd.hasOption(O_TO_DATE)) {
toDate = cmd.getOptionValue(O_TO_DATE);
}
if (cmd.hasOption(O_OUTPUT_FILE)) {
filePath = cmd.getOptionValue(O_OUTPUT_FILE);
} else {
filePath = "./changelog.txt";
}
if (cmd.hasOption(O_CONFIG_FILE)) {
rulesFile = cmd.getOptionValue(O_CONFIG_FILE);
}
if (cmd.hasOption(O_BITBUCKET_KEY)) {
key = cmd.getOptionValue(O_BITBUCKET_KEY);
}
if (cmd.hasOption(O_BITBUCKET_SECRET)) {
secret = cmd.getOptionValue(O_BITBUCKET_SECRET);
}
if (cmd.hasOption(O_GITHUB_TOKEN)) {
token = cmd.getOptionValue(O_GITHUB_TOKEN);
}
}
private static Options createParserOptions() {
Options options = new Options();
Option repoOption = new Option(O_REPO, "repo", true, "Repository name");
repoOption.setRequired(true);
options.addOption(repoOption);
Option ownerOption = new Option(O_OWNER, "owner", true, "Repository owner");
ownerOption.setRequired(true);
options.addOption(ownerOption);
Option branchOption = new Option(O_BRANCH, "branch", true, "Repository branch");
options.addOption(branchOption);
Option prefixOption = new Option(O_PREFIX, "prefix", true, "Jira Prefix");
options.addOption(prefixOption);
Option apiOption = new Option(O_API, "api", true, "API");
options.addOption(apiOption);
Option fromDateOption = new Option(O_FROM_DATE, "from-date", true, "From date");
options.addOption(fromDateOption);
Option toDateOption = new Option(O_TO_DATE, "to-date", true, "To date");
options.addOption(toDateOption);
Option outputOption = new Option(O_OUTPUT_FILE, "output-file", true, "Output file");
options.addOption(outputOption);
Option rulesOption = new Option(O_CONFIG_FILE, "conf", true, "Config file");
options.addOption(rulesOption);
Option bitbucketKeyOption = new Option(O_BITBUCKET_KEY, "key", true, "bitbucket key");
options.addOption(bitbucketKeyOption);
Option bitbucketSecretOption = new Option(O_BITBUCKET_SECRET, "secret", true, "bitbucket secret");
options.addOption(bitbucketSecretOption);
Option githubToken = new Option(O_GITHUB_TOKEN, "token", true, "Github token");
options.addOption(githubToken);
return options;
}
private static void usage(Options options){
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp( "Rob", options );
}
}