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') } }