Author: djspiewak
Date: Tue Jun 23 00:08:35 2009
New Revision: 787494

URL: http://svn.apache.org/viewvc?rev=787494&view=rev
Log:
Clojure REPL should be able to load without recompilation on Clojure projects

Modified:
    buildr/trunk/lib/buildr/core/shell.rb
    buildr/trunk/lib/buildr/shell.rb

Modified: buildr/trunk/lib/buildr/core/shell.rb
URL: 
http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/core/shell.rb?rev=787494&r1=787493&r2=787494&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/core/shell.rb (original)
+++ buildr/trunk/lib/buildr/core/shell.rb Tue Jun 23 00:08:35 2009
@@ -92,27 +92,44 @@
         end
       end
       
+      # don't build if it's *only* Clojure sources
+      def build?
+        !has_source?(:clojure) or has_source?(:java) or has_source?(:scala) or 
has_source?(:groovy)
+      end
+      
       def launch
         fail 'Are we forgetting something? CLOJURE_HOME not set.' unless 
clojure_home
         
         cp = project.compile.dependencies + 
           [
-            project.path_to(:target, :classes),
+            if build?
+              project.path_to(:target, :classes)
+            else
+              project.path_to(:src, :main, :clojure)
+            end,
             File.expand_path('clojure.jar', clojure_home),
             'jline:jline:jar:0.9.94'
           ]
         
-        Java::Commands.java 'jline.ConsoleRunner', 'clojure.lang.Repl', {
-          :properties => rebel_props(project),
-          :classpath => cp,
-          :java_args => rebel_args
-        }
+        if build?
+          Java::Commands.java 'jline.ConsoleRunner', 'clojure.lang.Repl', {
+            :properties => rebel_props(project),
+            :classpath => cp,
+            :java_args => rebel_args
+          }
+        else
+          Java::Commands.java 'jline.ConsoleRunner', 'clojure.lang.Repl', 
:classpath => cp
+        end
       end
       
     private
       def clojure_home
         @home ||= ENV['CLOJURE_HOME']
       end
+      
+      def has_source?(lang)
+        File.exists? project.path_to(:src, :main, lang)
+      end
     end
   end
 end

Modified: buildr/trunk/lib/buildr/shell.rb
URL: 
http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/shell.rb?rev=787494&r1=787493&r2=787494&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/shell.rb (original)
+++ buildr/trunk/lib/buildr/shell.rb Tue Jun 23 00:08:35 2009
@@ -49,6 +49,10 @@
         @project = project
       end
       
+      def build?
+        true
+      end
+      
       def launch
         fail 'Not implemented'
       end
@@ -102,9 +106,13 @@
         name = p.to_sym
         
         trace "Defining task #{project.name}:shell:#{name}"
-        project.task "shell:#{name}" => :compile do
+        
+        p_inst = p.new project
+        deps = if p_inst.build? then [:compile] else [] end
+        
+        project.task "shell:#{name}" => deps do
           trace "Launching #{name} shell"
-          p.new(project).launch
+          p_inst.launch
         end
       end
     end


Reply via email to