From f35eaaf194569f1cbd9c2671cb8625f3e79707eb Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Wed, 27 Apr 2016 14:27:38 +0000
Subject: [PATCH] i2psnark: Add CommandLine to jar

---
 apps/i2psnark/java/build.xml                  |  2 +-
 .../java/src/org/klomp/snark/CommandLine.java | 45 +++++++++++++++++++
 2 files changed, 46 insertions(+), 1 deletion(-)
 create mode 100644 apps/i2psnark/java/src/org/klomp/snark/CommandLine.java

diff --git a/apps/i2psnark/java/build.xml b/apps/i2psnark/java/build.xml
index 2cbcd2ea88..83c0f514a9 100644
--- a/apps/i2psnark/java/build.xml
+++ b/apps/i2psnark/java/build.xml
@@ -70,7 +70,7 @@
         <property name="workspace.changes.tr" value="" />
         <jar destfile="./build/i2psnark.jar" basedir="./build/obj" includes="**/*.class" excludes="**/web/* **/messages_*.class">
             <manifest>
-                <attribute name="Main-Class" value="org.klomp.snark.Snark" />
+                <attribute name="Main-Class" value="org.klomp.snark.CommandLine" />
                 <attribute name="Class-Path" value="i2p.jar mstreaming.jar streaming.jar" />
                 <attribute name="Implementation-Version" value="${full.version}" />
                 <attribute name="Built-By" value="${build.built-by}" />
diff --git a/apps/i2psnark/java/src/org/klomp/snark/CommandLine.java b/apps/i2psnark/java/src/org/klomp/snark/CommandLine.java
new file mode 100644
index 0000000000..f82943704c
--- /dev/null
+++ b/apps/i2psnark/java/src/org/klomp/snark/CommandLine.java
@@ -0,0 +1,45 @@
+package org.klomp.snark;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import net.i2p.CoreVersion;
+
+/**
+ * Simple command line access to various utilities.
+ * Not a public API. Subject to change.
+ * Apps and plugins should use specific classes.
+ *
+ * @since 0.9.26
+ */
+public class CommandLine extends net.i2p.util.CommandLine {
+
+    protected static final List<String> SCLASSES = Arrays.asList(new String[] {
+        "org.klomp.snark.MetaInfo",
+        //"org.klomp.snark.Snark",
+        //"org.klomp.snark.StaticSnark",
+        "org.klomp.snark.Storage",
+        "org.klomp.snark.bencode.BDecoder",
+        //"org.klomp.snark.web.RunStandalone",
+    });
+
+    protected CommandLine() {}
+
+    public static void main(String args[]) {
+        List<String> classes = new ArrayList<String>(SCLASSES.size() + CLASSES.size());
+        classes.addAll(SCLASSES);
+        classes.addAll(CLASSES);
+        if (args.length > 0) {
+            exec(args, classes);
+        }
+        usage(classes);
+        System.exit(1);
+    }
+
+    private static void usage(List<String> classes) {
+        System.err.println("I2PSnark version " + CoreVersion.VERSION + '\n' +
+                           "USAGE: java -jar /path/to/i2psnark.jar command [args]");
+        printCommands(classes);
+    }
+}
-- 
GitLab