You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildr.apache.org by bo...@apache.org on 2010/11/28 03:54:27 UTC

svn commit: r1039818 - in /buildr/trunk: CHANGELOG lib/buildr/core/project.rb spec/core/project_spec.rb

Author: boisvert
Date: Sun Nov 28 02:54:26 2010
New Revision: 1039818

URL: http://svn.apache.org/viewvc?rev=1039818&view=rev
Log:
BUILDR-552 Projects may now be defined using project(:name) and a block

Modified:
    buildr/trunk/CHANGELOG
    buildr/trunk/lib/buildr/core/project.rb
    buildr/trunk/spec/core/project_spec.rb

Modified: buildr/trunk/CHANGELOG
URL: http://svn.apache.org/viewvc/buildr/trunk/CHANGELOG?rev=1039818&r1=1039817&r2=1039818&view=diff
==============================================================================
--- buildr/trunk/CHANGELOG (original)
+++ buildr/trunk/CHANGELOG Sun Nov 28 02:54:26 2010
@@ -5,6 +5,7 @@
 * Added:  BUILDR-537 Shell tasks should use JAVA_OPTS by default
 * Added:  BUILDR-538 Shell tasks should support passing :java_args
 * Added:  BUILDR-544 Support ${groupId} in pom files (Chris Dean)
+* Added:  BUILDR-552 Projects may now be defined using project(:name) and a block
 * Change: BUILDR-540 Upgrade to rspec 2.1.0
 * Change: BUILDR-546 Upgrade to Rubyzip 0.9.4 (Michael Guymon)
 * Fixed:  BUILDR-542 Release task:  SVN tagging fails if parent tag directory

Modified: buildr/trunk/lib/buildr/core/project.rb
URL: http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/core/project.rb?rev=1039818&r1=1039817&r2=1039818&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/core/project.rb (original)
+++ buildr/trunk/lib/buildr/core/project.rb Sun Nov 28 02:54:26 2010
@@ -235,8 +235,9 @@ module Buildr
       #   project(name) => project
       #
       # See Buildr#project.
-      def project(*args) #:nodoc:
+      def project(*args, &block) #:nodoc:
         options = args.pop if Hash === args.last
+        return define(args.first, options, &block) if block
         rake_check_options options, :scope if options
         raise ArgumentError, 'Only one project name at a time' unless args.size == 1
         @projects ||= {}
@@ -557,7 +558,7 @@ module Buildr
     #   define 'foo' do
     #     project.version = '1.0'
     #   end
-    def project(*args)
+    def project(*args, &block)
       if Hash === args.last
         options = args.pop
       else
@@ -566,7 +567,7 @@ module Buildr
       if args.empty?
         self
       else
-        Project.project *(args + [{ :scope=>self.name }.merge(options)])
+        Project.project *(args + [{ :scope=>self.name }.merge(options)]), &block
       end
     end
 
@@ -641,7 +642,7 @@ module Buildr
     def call_callbacks(phase) #:nodoc:
       remaining = @callbacks.select { |cb| cb.phase == phase }
       known_callbacks = remaining.map { |cb| cb.name }
-      
+
       # call each extension in order
       until remaining.empty?
         callback = first_satisfied(remaining, known_callbacks)
@@ -652,9 +653,9 @@ module Buildr
         callback.blocks.each { |b| b.call(self) }
       end
     end
-    
+
     private
-    
+
     # find first callback with satisfied dependencies
     def first_satisfied(r, known_callbacks)
       remaining_names = r.map { |cb| cb.name }
@@ -944,8 +945,8 @@ module Buildr
   #   end
   #
   #   puts project('myapp:beans').version
-  def project(*args)
-    Project.project *args
+  def project(*args, &block)
+    Project.project *args, &block
   end
 
   # :call-seq:

Modified: buildr/trunk/spec/core/project_spec.rb
URL: http://svn.apache.org/viewvc/buildr/trunk/spec/core/project_spec.rb?rev=1039818&r1=1039817&r2=1039818&view=diff
==============================================================================
--- buildr/trunk/spec/core/project_spec.rb (original)
+++ buildr/trunk/spec/core/project_spec.rb Sun Nov 28 02:54:26 2010
@@ -499,6 +499,16 @@ describe Buildr, '#project' do
     project('foo').should be(foo)
   end
 
+  it 'should define a project if a block is given' do
+    foo = project('foo') {}
+    project('foo').should be(foo)
+  end
+
+  it 'should define a project if properties and a block are given' do
+    foo = project('foo', :version => '1.2') {}
+    project('foo').should be(foo)
+  end
+
   it 'should find a project by its full name' do
     bar, baz = nil
     define('foo') { bar = define('bar') { baz = define('baz')  } }