[JGIT PATCH v2 06/24] Added a "init" command to the git like command line tool.
Signed-off-by: Florian Koeberle <florianskarten@web.de>
---
.../src/org/spearce/jgit/pgm/InitCommand.java | 67 ++++++++++++++++++++
.../src/org/spearce/jgit/pgm/MainProgram.java | 1 +
2 files changed, 68 insertions(+), 0 deletions(-)
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/pgm/InitCommand.java
diff --git a/org.spearce.jgit/src/org/spearce/jgit/pgm/InitCommand.java b/org.spearce.jgit/src/org/spearce/jgit/pgm/InitCommand.java
new file mode 100644
index 0000000..e87e777
--- /dev/null
+++ b/org.spearce.jgit/src/org/spearce/jgit/pgm/InitCommand.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2008 Florian Köberle
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ */
+package org.spearce.jgit.pgm;
+
+import java.io.File;
+import java.io.IOException;
+
+import static org.spearce.jgit.lib.Repository.createWorkTree;
+import org.spearce.jgit.lib.WorkTree;
+
+import static java.lang.String.format;
+
+/**
+ * The {@link #execute} method of this class is used to create git repositories.
+ * This class is immutable.
+ *
+ */
+public class InitCommand implements Command {
+ /**
+ * Use this instance instead of creating a new ${link InitCommand}. You
+ * don't need to create an instance of this class as it is immutable and not
+ * configurable.
+ */
+ public static InitCommand INSTANCE = new InitCommand();
+
+ public void execute(String... args) throws IOException {
+ final String currentDirectoryPathString = System
+ .getProperty("user.dir");
+ if (currentDirectoryPathString == null) {
+ throw new IOException("Unable to get current working directory");
+ }
+ final File currentDirectoryPath = new File(currentDirectoryPathString);
+ if (!currentDirectoryPath.isDirectory()) {
+ final String message = format(
+ "No directory found at \"%s\". It was the current working directory at program start.",
+ currentDirectoryPathString);
+ throw new IOException(message);
+ }
+
+ final WorkTree workTree = createWorkTree(currentDirectoryPath);
+ try {
+ System.out.printf("Created a git repository at: %s%n", workTree
+ .getRepository().getDirectory());
+ } finally {
+ workTree.closeRepository();
+ }
+
+ }
+
+ public String getShortDescription() {
+ return "Creates an empty git repository.";
+ }
+}
diff --git a/org.spearce.jgit/src/org/spearce/jgit/pgm/MainProgram.java b/org.spearce.jgit/src/org/spearce/jgit/pgm/MainProgram.java
index c9af51c..1ade91b 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/pgm/MainProgram.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/pgm/MainProgram.java
@@ -33,6 +33,7 @@ public class MainProgram {
static {
final Map<String, Command> commands = new HashMap<String, Command>();
+ commands.put("init", InitCommand.INSTANCE);
commands.put("help", HelpCommand.INSTANCE);
commandNameToObjectMap = Collections.unmodifiableMap(commands);
}
--
1.5.4.3