Skip to content

Commit

Permalink
add support for nrepl-handler (e.g. cider-nrepl)
Browse files Browse the repository at this point in the history
  • Loading branch information
Andreas Wurzer authored and Mark Derricutt committed Feb 8, 2016
1 parent 3f500d1 commit 16d1106
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions src/main/java/com/theoryinpractise/clojure/ClojureNReplMojo.java
Expand Up @@ -12,16 +12,16 @@

package com.theoryinpractise.clojure;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.SystemUtils;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

@Mojo(name = "nrepl", requiresDependencyResolution = ResolutionScope.TEST)
public class ClojureNReplMojo extends AbstractClojureCompilerMojo {

Expand All @@ -37,13 +37,17 @@ public class ClojureNReplMojo extends AbstractClojureCompilerMojo {
@Parameter(defaultValue = "localhost", property = "clojure.nrepl.host")
protected String nreplHost;

@Parameter(property = "clojure.nrepl.handler")
private String nreplHandler;

public void execute() throws MojoExecutionException {
StringBuilder sb = new StringBuilder();
sb.append("(do ");
sb.append("(clojure.tools.nrepl.server/start-server");
sb.append(" :bind \"").append(nreplHost).append("\"");
sb.append(" :port ");
sb.append(Integer.toString(port));
appendNreplHandler(sb);
sb.append("))");
String nreplLoader = sb.toString();

Expand All @@ -59,6 +63,7 @@ public void execute() throws MojoExecutionException {

args.add("-e");
args.add("(require (quote clojure.tools.nrepl.server))");
requireNreplHandlerNs(args);
args.add("-e");
args.add(nreplLoader);

Expand All @@ -69,6 +74,22 @@ outputDirectory, getRunWithClasspathElements(), "clojure.main",

}

private void requireNreplHandlerNs(List<String> args) {
if (noNreplHandlerAvailable()) { return; }
args.add("-e");
String nreplHandlerNs = nreplHandler.split("/")[0];
args.add("(require (quote " + nreplHandlerNs + "))");
}

private boolean noNreplHandlerAvailable() {
return nreplHandler == null || nreplHandler.trim().isEmpty();
}

private void appendNreplHandler(StringBuilder sb) {
if (noNreplHandlerAvailable()) { return; }
sb.append(" :handler ").append(nreplHandler);
}

private String windowsEscapeCommandLineArg(String arg) {
return "\"" + arg.replace("\"", "\\\"") + "\"";
}
Expand Down

0 comments on commit 16d1106

Please sign in to comment.