/*
- * jSite -
+ * jSite -
* Copyright (C) 2006 David Roden
*
* This program is free software; you can redistribute it and/or modify
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.
- *
+ *
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
*/
public class CLI implements InsertListener {
/**
* Creates a new command-line interface.
- *
+ *
* @param args
* The command-line arguments
*/
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();
+ 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;
+ }
+ }
+
+ Configuration configuration = new Configuration(configFile);
if (!configuration.createLockFile()) {
outputWriter.println("Lock file found!");
return;
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);
}
/**
* Returns the project with the given name.
- *
+ *
* @param name
* The name of the project
* @return The project, or <code>null</code> if no project could be found
/**
* Returns the node with the given name.
- *
+ *
* @param name
* The name of the node
* @return The node, or <code>null</code> if no node could be found
/**
* Inserts the given project.
- *
+ *
* @param currentProject
* The project to insert
* @return <code>true</code> if the insert finished successfully,
return false;
}
projectInserter.setProject(currentProject);
- projectInserter.start();
+ projectInserter.start(new ProgressListener() {
+
+ public void onProgress(long copied, long length) {
+ System.out.print("Uploaded: " + copied + " / " + length + " bytes...\r");
+ }
+ });
synchronized (lockObject) {
while (!finished) {
try {
/**
* {@inheritDoc}
*/
+ public void projectUploadFinished(Project project) {
+ outputWriter.println("Project \"" + project.getName() + "\" has been uploaded, starting insert...");
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public void projectURIGenerated(Project project, String uri) {
outputWriter.println("URI: " + uri);
}
/**
* Creates a new command-line interface with the given arguments.
- *
+ *
* @param args
* The command-line arguments
*/