package jp.aegif.nemaki.aws.tools.backup;
import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.OptionGroup;
public class EntryPoint {
public static void main(String[] args) {
// create Options object
Options options = new Options();
// add t option
options.addOption("b", true, "Backup S3 bucket name.");
OptionGroup targetRepositoriesOpGroup = new OptionGroup();
Option targetUrlOp = new Option("u", true, "Backup repository url.");
Option targetLocalDirectoryPathOp = new Option("d", true, "Backup repository local dir path.");
targetRepositoriesOpGroup.addOption(targetUrlOp);
targetRepositoriesOpGroup.addOption(targetLocalDirectoryPathOp);
options.addOptionGroup(targetRepositoriesOpGroup);
options.addOption("p", true, "Backup AWS profile name.");
options.addOption("t", true, "Backup target name.");
try {
CommandLineParser parser = new DefaultParser();
CommandLine cmd = parser.parse( options, args );
BackupCouchDbToS3Util util = new BackupCouchDbToS3Util();
String bucketName = "";
URI url = new URI(BackupCouchDbToS3Util.DefaultCouchDbUrl);
String profile = "";
String targets = "";
if(cmd.hasOption("b")) {
bucketName = cmd.getOptionValue("b");
}else{
return;
}
if ( cmd.hasOption("d") ){
String dParam =cmd.getOptionValue("d");
url = new File(dParam).toURI();;
}else{
url = new URI( cmd.getOptionValue("u") );
}
profile = cmd.hasOption("p") ? cmd.getOptionValue("p") : BackupCouchDbToS3Util.DefaultProfileName;
targets = cmd.hasOption("t") ? cmd.getOptionValue("t") : "";
util.backup(bucketName, url, profile, targets);
}
catch( ParseException exp ) {
System.err.println( "Parsing failed. Reason: " + exp.getMessage() );
}catch( URISyntaxException exp){
System.err.println( "Bad uri syntax. Reason: " + exp.getMessage() );
}
return;
}
}