Author: djspiewak
Date: Tue Jun 23 00:01:31 2009
New Revision: 787458
URL: http://svn.apache.org/viewvc?rev=787458&view=rev
Log:
Added generic shell API
Added:
buildr/trunk/lib/buildr/scala/shell.rb
buildr/trunk/lib/buildr/shell.rb
Modified:
buildr/trunk/lib/buildr/scala.rb
Modified: buildr/trunk/lib/buildr/scala.rb
URL:
http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/scala.rb?rev=787458&r1=787457&r2=787458&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/scala.rb (original)
+++ buildr/trunk/lib/buildr/scala.rb Tue Jun 23 00:01:31 2009
@@ -20,6 +20,7 @@
require 'buildr/scala/compiler'
require 'buildr/scala/tests'
require 'buildr/scala/bdd'
+require 'buildr/scala/shell'
Object::Scala = Buildr::Scala
Added: buildr/trunk/lib/buildr/scala/shell.rb
URL:
http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/scala/shell.rb?rev=787458&view=auto
==============================================================================
--- buildr/trunk/lib/buildr/scala/shell.rb (added)
+++ buildr/trunk/lib/buildr/scala/shell.rb Tue Jun 23 00:01:31 2009
@@ -0,0 +1,34 @@
+require 'buildr/shell'
+
+module Buildr
+ module Scala
+ class Shell
+ attr_reader :project
+
+ class << self
+ def lang
+ :scala
+ end
+ end
+
+ def initialize(project)
+ @project = project
+ end
+
+ def launch
+ Scalac.scala_home or fail 'Are we forgetting something? SCALA_HOME not
set.'
+
+ cp = (project.compile.dependencies +
Scalac.dependencies).join(File::PATH_SEPARATOR) +
+ project.path_to(:target, :classes)
+
+ cmd_args = " -Denv.classpath='#{cp}'"
+ cmd_args += ' -classpath'
+ cmd_args += " '#{cp}'"
+
+ system(File.expand_path('bin/scala', Scalac.scala_home) + cmd_args)
+ end
+ end
+ end
+end
+
+Buildr::ShellProviders << Buildr::Scala::Shell
Added: buildr/trunk/lib/buildr/shell.rb
URL:
http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/shell.rb?rev=787458&view=auto
==============================================================================
--- buildr/trunk/lib/buildr/shell.rb (added)
+++ buildr/trunk/lib/buildr/shell.rb Tue Jun 23 00:01:31 2009
@@ -0,0 +1,43 @@
+module Buildr
+ module ShellProviders
+
+ class << self
+ def add(p)
+ @providers ||= {}
+ @providers[p.lang] = p
+ end
+ alias :<< :add
+
+ def providers
+ @providers ||= {}
+ end
+ end
+ end
+
+ module Shell
+ include Extension
+
+ first_time do
+ Project.local_task 'shell'
+ end
+
+ after_define do |project|
+ project.task 'shell' => :compile do
+ lang = project.compile.language
+ trace "Launching shell based on language #{lang}"
+
+ p = ShellProviders.providers[lang]
+
+ if p
+ p.new(project).launch
+ else
+ fail "No shell provider defined for language #{lang}"
+ end
+ end
+ end
+ end
+
+ class Project
+ include Shell
+ end
+end