/*
- * jSite -
- * Copyright (C) 2006 David Roden
+ * jSite - CLI.java - Copyright © 2006–2012 David Roden
*
* 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
import de.todesbaum.jsite.application.Node;
import de.todesbaum.jsite.application.Project;
import de.todesbaum.jsite.application.ProjectInserter;
+import de.todesbaum.util.io.StreamCopier.ProgressListener;
/**
* Command-line interface for jSite.
if ((args.length == 0) || args[0].equals("-h") || args[0].equals("--help")) {
outputWriter.println("\nParameters:\n");
+ outputWriter.println(" --config-file=<configuration file>");
outputWriter.println(" --node=<node name>");
outputWriter.println(" --project=<project name>");
outputWriter.println(" --local-directory=<local directory>");
return;
}
- Configuration configuration = new Configuration();
- if (!configuration.createLockFile()) {
- outputWriter.println("Lock file found!");
- return;
+ String configFile = System.getProperty("user.home") + "/.jSite/config7";
+ for (String argument : args) {
+ String value = argument.substring(argument.indexOf('=') + 1).trim();
+ if (argument.startsWith("--config-file=")) {
+ configFile = value;
+ }
}
+ ConfigurationLocator configurationLocator = new ConfigurationLocator();
+ if (configFile != null) {
+ configurationLocator.setCustomLocation(configFile);
+ }
+ Configuration configuration = new Configuration(configurationLocator, configurationLocator.findPreferredLocation());
+
projectInserter.addInsertListener(this);
projects = configuration.getProjects();
Node node = configuration.getSelectedNode();
Project currentProject = null;
for (String argument : args) {
+ if (argument.startsWith("--config-file=")) {
+ /* we already parsed this one. */
+ continue;
+ }
String value = argument.substring(argument.indexOf('=') + 1).trim();
if (argument.startsWith("--node=")) {
Node newNode = getNode(value);
}
}
+ int errorCode = 1;
if (currentProject != null) {
if (insertProject(currentProject)) {
outputWriter.println("Project \"" + currentProject.getName() + "\" successfully inserted.");
+ errorCode = 0;
} else {
outputWriter.println("Project \"" + currentProject.getName() + "\" was not successfully inserted.");
}
configuration.setProjects(projects);
configuration.save();
+
+ System.exit(errorCode);
}
/**
return false;
}
projectInserter.setProject(currentProject);
- projectInserter.start();
+ projectInserter.start(new ProgressListener() {
+
+ @Override
+ public void onProgress(long copied, long length) {
+ System.out.print("Uploaded: " + copied + " / " + length + " bytes...\r");
+ }
+ });
synchronized (lockObject) {
while (!finished) {
try {
/**
* {@inheritDoc}
*/
+ @Override
public void projectInsertStarted(Project project) {
outputWriter.println("Starting Insert of project \"" + project.getName() + "\".");
}
/**
* {@inheritDoc}
*/
+ @Override
+ public void projectUploadFinished(Project project) {
+ outputWriter.println("Project \"" + project.getName() + "\" has been uploaded, starting insert...");
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public void projectURIGenerated(Project project, String uri) {
outputWriter.println("URI: " + uri);
}
/**
* {@inheritDoc}
*/
+ @Override
public void projectInsertProgress(Project project, int succeeded, int failed, int fatal, int total, boolean finalized) {
outputWriter.println("Progress: " + succeeded + " done, " + failed + " failed, " + fatal + " fatal, " + total + " total" + (finalized ? " (finalized)" : "") + ", " + ((succeeded + failed + fatal) * 100 / total) + "%");
}
/**
* {@inheritDoc}
*/
+ @Override
public void projectInsertFinished(Project project, boolean success, Throwable cause) {
outputWriter.println("Request URI: " + project.getFinalRequestURI(0));
finished = true;