You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildr.apache.org by vb...@apache.org on 2009/07/26 05:33:05 UTC

svn commit: r797861 - in /buildr/trunk: CHANGELOG doc/more_stuff.textile lib/buildr/core/shell.rb

Author: vborja
Date: Sun Jul 26 03:33:04 2009
New Revision: 797861

URL: http://svn.apache.org/viewvc?rev=797861&view=rev
Log:
Added BeanShell console as default shell for Java-only projects.

Modified:
    buildr/trunk/CHANGELOG
    buildr/trunk/doc/more_stuff.textile
    buildr/trunk/lib/buildr/core/shell.rb

Modified: buildr/trunk/CHANGELOG
URL: http://svn.apache.org/viewvc/buildr/trunk/CHANGELOG?rev=797861&r1=797860&r2=797861&view=diff
==============================================================================
--- buildr/trunk/CHANGELOG (original)
+++ buildr/trunk/CHANGELOG Sun Jul 26 03:33:04 2009
@@ -1,4 +1,7 @@
 1.3.5 (Pending)
+* Added:  BeanShell as default shell for java projects, bsh is small and it's
+          syntax provides the closest to an interpreted java. The BeanShell
+          console includes a graphical class browser. Shell is named :bsh
 * Added:  Interactive shell (REPL) support
 * Added:  BUILDR-56 Download Scala artifacts if not available locally
 * Added:  Mandriva (urpmi) installation support (with help from Franck Villaume).

Modified: buildr/trunk/doc/more_stuff.textile
URL: http://svn.apache.org/viewvc/buildr/trunk/doc/more_stuff.textile?rev=797861&r1=797860&r2=797861&view=diff
==============================================================================
--- buildr/trunk/doc/more_stuff.textile (original)
+++ buildr/trunk/doc/more_stuff.textile Sun Jul 26 03:33:04 2009
@@ -21,7 +21,7 @@
 
 Unfortunately, for such a tool to be useful in Java, Scala or Groovy development, it must have access to the @CLASSPATH@, not only the compiled project binaries, but also its full list of dependencies.  While it is usually possible with such tools to specify the classpath upon startup (e.g. the @-cp@ switch for the Scala shell), this can get extremely tedious for project's with more dependencies, especially when some of these dependencies are defined using @transitive@ artifacts.
 
-Buildr is capable of easing this workflow by providing full support for the configuration and launch of interactive shells.  In fact, if your project uses either Scala or Groovy, the relevant shell may be launched simply by invoking the @shell@ task:
+Buildr is capable of easing this workflow by providing full support for the configuration and launch of interactive shells, the relevant shell may be launched simply by invoking the @shell@ task:
 
 {% highlight sh %}
 $ buildr shell
@@ -37,7 +37,7 @@
 
 h3. Supported Shells
 
-By default, Buildr will open the interactive shell which corresponds to your project's language.  Thus, if your project is using Groovy, it will invoke the @groovysh@ command, configured with the appropriate classpath.  If your project is using Scala, then the @shell@ task will invoke the @scala@ command.  Unfortunately, the Java language does not define an interactive shell of any kind, meaning that there is no sane default if your project exclusively uses Java.
+By default, Buildr will open the interactive shell which corresponds to your project's language.  Thus, if your project is using Groovy, it will invoke the @groovysh@ command, configured with the appropriate classpath.  If your project is using Scala, then the @shell@ task will invoke the @scala@ command.  Unfortunately, the Java language does not define an interactive shell of any kind, however for those projects using exclusively the Java language, Buildr will use the "BeanShell":http://www.beanshell.org/manual/quickstart.html#The_BeanShell_GUI console.
 
 However, you may still wish to exploit the advantages of an interactive shell from some other JVM language even while working in Java.  Alternatively, you may want to use some shell other than the default even when working in a language which has its own.  There are two ways to acheive this aim.  The quickest way is to explicitly specify the relevant shell at the call-site:
 
@@ -70,6 +70,7 @@
 Buildr supports several different shell providers, and the framework is flexible enough that additional support can be added almost trivially.  The following table gives the complete list of supported shells, their corresponding @shell.using@ descriptor and the language for which they are the default (if applicable):
 
 |_. Shell Name        |_. Descriptor       |_. Language       |
+| BeanShell Console   | @:bsh@             | Java             |
 | Clojure REPL        | @:clj@             | *N/A*            |
 | GroovySH            | @:groovysh@        | Groovy           |
 | JRuby IRB           | @:jirb@            | *N/A*            |

Modified: buildr/trunk/lib/buildr/core/shell.rb
URL: http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/core/shell.rb?rev=797861&r1=797860&r2=797861&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/core/shell.rb (original)
+++ buildr/trunk/lib/buildr/core/shell.rb Sun Jul 26 03:33:04 2009
@@ -4,6 +4,43 @@
 
 module Buildr
   module Shell
+
+    class BeanShell < Base
+      
+      include JavaRebel
+      
+      VERSION = '2.0b4'
+
+      class << self
+        def version
+          Buildr.settings.build['bsh'] || VERSION
+        end
+        
+        def artifact
+          "org.beanshell:bsh:jar:#{version}"
+        end
+        
+        def lang
+          :java
+        end
+        
+        def to_sym
+          :bsh
+        end
+      end
+      
+      def launch        
+        cp = project.compile.dependencies + [Buildr.artifact(BeanShell.artifact)]
+        Java::Commands.java 'bsh.Console', {
+          :properties => rebel_props(project),
+          :classpath => cp,
+          :java_args => rebel_args
+        }
+      end
+      
+    end # BeanShell
+
+        
     class JIRB < Base
       include JavaRebel
       
@@ -134,5 +171,6 @@
   end
 end
 
+Buildr::ShellProviders << Buildr::Shell::BeanShell
 Buildr::ShellProviders << Buildr::Shell::JIRB
 Buildr::ShellProviders << Buildr::Shell::Clojure