diff --git a/manual-test/build.gradle b/manual-test/build.gradle index e452f64..00b6ce9 100644 --- a/manual-test/build.gradle +++ b/manual-test/build.gradle @@ -32,10 +32,6 @@ dependencies { implementation 'com.stuartsierra:component:1.1.0' devImplementation 'com.stuartsierra:component.repl:0.2.0' - // cider - devImplementation 'cider:cider-nrepl:0.28.5' - devImplementation 'cider:piggieback:0.5.3' - // figwheel devImplementation 'com.bhauman:figwheel-repl:0.2.18' devImplementation 'ring:ring-jetty-adapter:1.9.5' @@ -45,10 +41,6 @@ tasks.withType(Test) { useJUnitPlatform() } -tasks.named('clojureRepl') { - middleware = ['cider.nrepl/cider-middleware', 'cider.piggieback/wrap-cljs-repl'] -} - clojure { builds { main { diff --git a/src/compatTest/clojure/dev/clojurephant/compat_test/repl.clj b/src/compatTest/clojure/dev/clojurephant/compat_test/repl.clj index e557e60..9672a38 100644 --- a/src/compatTest/clojure/dev/clojurephant/compat_test/repl.clj +++ b/src/compatTest/clojure/dev/clojurephant/compat_test/repl.clj @@ -68,6 +68,12 @@ (is (= "0.28.2" (-> (send-repl client {:op "cider-version"}) :cider-version :version-string))) (is (pr-str 7) (eval-repl client '(do (require 'basic-project.core) (basic-project/use-ns 4))))))) +(deftest cider-jack-in + (testing "nREPL dependencies can be jacked-in via command line" + (with-client [client "BasicClojureProjectTest" "--handler=cider.nrepl/cider-nrepl-handler" "-Pdev.clojurephant.jack-in.nrepl=nrepl:nrepl:0.9,cider:cider-nrepl:0.28.3"] + (is (= "0.28.3" (-> (send-repl client {:op "cider-version"}) :cider-version :version-string))) + (is (pr-str 7) (eval-repl client '(do (require 'basic-project.core) (basic-project/use-ns 4))))))) + (deftest task-dependencies-clj (testing "No Clojure compiles happen when REPL is requested, but other languages are compiled" (gradle/with-project "MixedJavaClojureTest" diff --git a/src/main/java/dev/clojurephant/plugin/common/internal/ClojureCommonBasePlugin.java b/src/main/java/dev/clojurephant/plugin/common/internal/ClojureCommonBasePlugin.java index 8f2c7ca..23fd859 100644 --- a/src/main/java/dev/clojurephant/plugin/common/internal/ClojureCommonBasePlugin.java +++ b/src/main/java/dev/clojurephant/plugin/common/internal/ClojureCommonBasePlugin.java @@ -1,14 +1,30 @@ package dev.clojurephant.plugin.common.internal; - import org.gradle.api.Plugin; import org.gradle.api.Project; +import org.gradle.api.artifacts.Configuration; import org.gradle.api.plugins.JavaBasePlugin; import org.gradle.api.tasks.SourceSetContainer; public class ClojureCommonBasePlugin implements Plugin { + public static final String NREPL_JACK_IN_PROPERTY = "dev.clojurephant.jack-in.nrepl"; + @Override public void apply(Project project) { project.getPluginManager().apply(JavaBasePlugin.class); + configureNreplDependencies(project); + } + + public void configureNreplDependencies(Project project) { + Configuration nrepl = project.getConfigurations().create(ClojureCommonPlugin.NREPL_CONFIGURATION_NAME); + if (project.hasProperty(NREPL_JACK_IN_PROPERTY)) { + String[] jackInDeps = project.findProperty(NREPL_JACK_IN_PROPERTY).toString().split(","); + for (String jackInDep : jackInDeps) { + project.getLogger().lifecycle("Jacking {} into the {} configuration", jackInDep, ClojureCommonPlugin.NREPL_CONFIGURATION_NAME); + project.getDependencies().add(ClojureCommonPlugin.NREPL_CONFIGURATION_NAME, jackInDep); + } + } else { + project.getDependencies().add(ClojureCommonPlugin.NREPL_CONFIGURATION_NAME, "nrepl:nrepl:0.9.0"); + } } } diff --git a/src/main/java/dev/clojurephant/plugin/common/internal/ClojureCommonPlugin.java b/src/main/java/dev/clojurephant/plugin/common/internal/ClojureCommonPlugin.java index 9f26e20..239de2a 100644 --- a/src/main/java/dev/clojurephant/plugin/common/internal/ClojureCommonPlugin.java +++ b/src/main/java/dev/clojurephant/plugin/common/internal/ClojureCommonPlugin.java @@ -47,9 +47,7 @@ private void configureDev(Project project, SourceSetContainer sourceSets) { SourceSet test = sourceSets.getByName(SourceSet.TEST_SOURCE_SET_NAME); SourceSet dev = sourceSets.create(DEV_SOURCE_SET_NAME); - Configuration nrepl = project.getConfigurations().create(NREPL_CONFIGURATION_NAME); - project.getDependencies().add(NREPL_CONFIGURATION_NAME, "nrepl:nrepl:0.9.0"); - + Configuration nrepl = project.getConfigurations().getByName(NREPL_CONFIGURATION_NAME); project.getConfigurations().getByName(dev.getCompileClasspathConfigurationName()).extendsFrom(nrepl); project.getConfigurations().getByName(dev.getRuntimeClasspathConfigurationName()).extendsFrom(nrepl);