Repository: buildr
Updated Branches:
  refs/heads/master e2f98fa03 -> e6c0c1b04


Support the :no_invoke parameter being passed to Buildr.project() and 
Buildr.projects() to avoid attempting to call invoke when retrieving the 
projects.


Project: http://git-wip-us.apache.org/repos/asf/buildr/repo
Commit: http://git-wip-us.apache.org/repos/asf/buildr/commit/0fbb397e
Tree: http://git-wip-us.apache.org/repos/asf/buildr/tree/0fbb397e
Diff: http://git-wip-us.apache.org/repos/asf/buildr/diff/0fbb397e

Branch: refs/heads/master
Commit: 0fbb397ec1bafcad97a57ab2040e393d73d6c3d4
Parents: 9419f24
Author: Peter Donald <[email protected]>
Authored: Tue Mar 15 12:00:38 2016 +1100
Committer: Peter Donald <[email protected]>
Committed: Tue Mar 15 12:00:38 2016 +1100

----------------------------------------------------------------------
 CHANGELOG                  |  2 ++
 lib/buildr/core/project.rb | 25 +++++++++++++++----------
 2 files changed, 17 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/buildr/blob/0fbb397e/CHANGELOG
----------------------------------------------------------------------
diff --git a/CHANGELOG b/CHANGELOG
index f2d1b87..f321e9d 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,6 @@
 1.4.24 (Pending)
+* Added:  Support the :no_invoke parameter being passed to Buildr.project() and
+          Buildr.projects() to avoid attempting to call invoke when retrieving 
the projects.
 * Added:  Add `exclude_paths` setting to pmd addon to allow paths to be 
explicitly excluded.
 * Fixed:  Update jDepend addon to ensure target directories are invoked prior 
to attempting
           to analyze directories.

http://git-wip-us.apache.org/repos/asf/buildr/blob/0fbb397e/lib/buildr/core/project.rb
----------------------------------------------------------------------
diff --git a/lib/buildr/core/project.rb b/lib/buildr/core/project.rb
index e3e995a..9dc1953 100644
--- a/lib/buildr/core/project.rb
+++ b/lib/buildr/core/project.rb
@@ -234,7 +234,9 @@ module Buildr #: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
+        rake_check_options options, :scope, :no_invoke if options
+        no_invoke = options && options[:no_invoke]
+
         raise ArgumentError, 'Only one project name at a time' unless 
args.size == 1
         @projects ||= {}
         name = args.first.to_s
@@ -251,7 +253,7 @@ module Buildr #:nodoc:
         end
         project ||= @projects[name] # Not found in scope.
         raise "No such project #{name}" unless project
-        project.invoke unless Buildr.application.current_scope.join(":").to_s 
== project.name.to_s
+        project.invoke unless no_invoke || 
Buildr.application.current_scope.join(":").to_s == project.name.to_s
         project
       end
 
@@ -261,26 +263,29 @@ module Buildr #:nodoc:
       # See Buildr#projects.
       def projects(*names) #:nodoc:
         options = names.pop if Hash === names.last
-        rake_check_options options, :scope if options
+        rake_check_options options, :scope, :no_invoke if options
+
+        no_invoke = options && options[:no_invoke]
+
         @projects ||= {}
         names = names.flatten
         if options && options[:scope]
           # We assume parent project is evaluated.
           if names.empty?
             parent = @projects[options[:scope].to_s] or raise "No such project 
#{options[:scope]}"
-            @projects.values.select { |project| project.parent == parent 
}.each { |project| project.invoke }.
-              map { |project| [project] + projects(:scope=>project) 
}.flatten.sort_by(&:name)
+            @projects.values.select { |project| project.parent == parent 
}.each { |project| project.invoke unless no_invoke }.
+              map { |project| [project] + projects(:scope => project, 
:no_invoke => no_invoke) }.flatten.sort_by(&:name)
           else
-            names.uniq.map { |name| project(name, :scope=>options[:scope]) }
+            names.uniq.map { |name| project(name, :scope => options[:scope], 
:no_invoke => no_invoke) }
           end
         elsif names.empty?
           # Parent project(s) not evaluated so we don't know all the projects 
yet.
-          @projects.values.each(&:invoke)
-          @projects.keys.map { |name| project(name) or raise "No such project 
#{name}" }.sort_by(&:name)
+          @projects.values.each { |project| project.invoke unless no_invoke }
+          @projects.keys.map { |name| project(name, :no_invoke => no_invoke) 
or raise "No such project #{name}" }.sort_by(&:name)
         else
           # Parent project(s) not evaluated, for the sub-projects we may need 
to find.
-          names.map { |name| name.split(':') }.select { |name| name.size > 1 
}.map(&:first).uniq.each { |name| project(name) }
-          names.uniq.map { |name| project(name) or raise "No such project 
#{name}" }.sort_by(&:name)
+          names.map { |name| name.split(':') }.select { |name| name.size > 1 
}.map(&:first).uniq.each { |name| project(name, :no_invoke => no_invoke) }
+          names.uniq.map { |name| project(name, :no_invoke => no_invoke) or 
raise "No such project #{name}" }.sort_by(&:name)
         end
       end
 

Reply via email to