Commits

Meikel Brandmeyer committed a5d37a3

Add runtime driver class

Comments (0)

Files changed (3)

         plugin 'maven'
     }
 
-    group = 'clojuresque'
-    version = '1.4.0-SNAPSHOT'
-
     dependencies {
         compile gradleApi()
         groovy localGroovy()
     }
+}
+
+project(':runtime') {
+    apply plugin: 'java'
+
+    repositories {
+        mavenCentral()
+    }
+
+    dependencies {
+        compile 'org.clojure:clojure:1.+'
+    }
+}
+
+subprojects {
+    group = 'clojuresque'
+    version = '1.4.0-SNAPSHOT'
 
     uploadArchives.doLast {
         if (!project.version.endsWith("-SNAPSHOT")) {
         }
     }
 }
+

runtime/src/main/java/clojuresque/Driver.java

+/*-
+ * Copyright 2009,2010 © Meikel Brandmeyer.
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+package clojuresque;
+
+import clojure.lang.RT;
+import clojure.lang.Symbol;
+
+public class Driver {
+    public static void main(String[] args) throws Exception {
+        final String command = args[0];
+
+        int slash = command.indexOf("/");
+
+        final String namespace = command.substring(0, slash);
+        final String function  = command.substring(slash + 1);
+
+        RT.var("clojure.core", "require").invoke(Symbol.create(namespace));
+        RT.var(namespace, function).invoke(RT.next(RT.seq(args)));
+    }
+}
 rootProject.name = 'root'
 include 'clojuresque'
+include 'runtime'
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.