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/03/27 06:16:15 UTC
svn commit: r928148 - in /buildr/trunk: CHANGELOG
lib/buildr/packaging/archive.rb spec/packaging/archive_spec.rb
Author: boisvert
Date: Sat Mar 27 05:16:14 2010
New Revision: 928148
URL: http://svn.apache.org/viewvc?rev=928148&view=rev
Log:
BUILDR-409 archive.include() should convert arguments to artifact if applicable
Modified:
buildr/trunk/CHANGELOG
buildr/trunk/lib/buildr/packaging/archive.rb
buildr/trunk/spec/packaging/archive_spec.rb
Modified: buildr/trunk/CHANGELOG
URL: http://svn.apache.org/viewvc/buildr/trunk/CHANGELOG?rev=928148&r1=928147&r2=928148&view=diff
==============================================================================
--- buildr/trunk/CHANGELOG (original)
+++ buildr/trunk/CHANGELOG Sat Mar 27 05:16:14 2010
@@ -27,8 +27,10 @@
* Added: BUILDR-375 Buildr now recognizes buildfile.rb and Buildfile.rb
(Kerry Wilson)
* Added: BUILDR-390 Buildr::group() should accept :classifier argument
-* Added: BUILDR-407: Exclude and include patterns should support lambdas or procs
-* Added: BUILDR-408: Filter include() and exclude() should accept Rake tasks
+* Added: BUILDR-407 Exclude and include patterns should support lambdas or procs
+* Added: BUILDR-408 Filter include() and exclude() should accept Rake tasks
+* Added: BUILDR-409 archive.include() should convert arguments to artifact
+ if applicable
* Added: ScalaTest now generates JUnit XML reports in addition to text files.
* Change: Updated to Ant 1.8.0
* Change: Updated to Groovy 1.7.1
Modified: buildr/trunk/lib/buildr/packaging/archive.rb
URL: http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/packaging/archive.rb?rev=928148&r1=928147&r2=928148&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/packaging/archive.rb (original)
+++ buildr/trunk/lib/buildr/packaging/archive.rb Sat Mar 27 05:16:14 2010
@@ -61,7 +61,7 @@ module Buildr
# include(*files, :merge=>true) => self
def include(*args)
options = args.pop if Hash === args.last
- files = args.flatten
+ files = to_artifacts(args)
raise 'AchiveTask.include() values should not include nil' if files.include? nil
if options.nil? || options.empty?
@@ -92,7 +92,7 @@ module Buildr
# :call-seq:
# exclude(*files) => self
def exclude(*files)
- files = files.flatten.map(&:to_s)
+ files = to_artifacts(files)
@excludes |= files
@excludes |= files.reject { |f| f =~ /\*$/ }.map { |f| "#{f}/*" }
self
@@ -103,7 +103,7 @@ module Buildr
# merge(*files, :path=>name) => Merge
def merge(*args)
options = Hash === args.last ? args.pop : {}
- files = args.flatten
+ files = to_artifacts(args)
rake_check_options options, :path
raise ArgumentError, "Expected at least one file to merge" if files.empty?
path = options[:path] || @path
@@ -174,6 +174,30 @@ module Buildr
protected
+ # Convert objects to artifacts, where applicable
+ def to_artifacts(files)
+ files.flatten.inject([]) do |set, file|
+ case file
+ when ArtifactNamespace
+ set |= file.artifacts
+ when Symbol, Hash
+ set |= [artifact(file)]
+ when /([^:]+:){2,4}/ # A spec as opposed to a file name.
+ set |= [Buildr.artifact(file)]
+ when Project
+ set |= Buildr.artifacts(file.packages)
+ when Rake::Task
+ set |= [file]
+ when Struct
+ set |= Buildr.artifacts(file.values)
+ else
+ # non-artifacts passed as-is; in particular, String paths are
+ # unmodified since Rake FileTasks don't use absolute paths
+ set |= [file]
+ end
+ end
+ end
+
def include_as(source, as)
@sources << proc { source }
@actions << proc do |file_map|
Modified: buildr/trunk/spec/packaging/archive_spec.rb
URL: http://svn.apache.org/viewvc/buildr/trunk/spec/packaging/archive_spec.rb?rev=928148&r1=928147&r2=928148&view=diff
==============================================================================
--- buildr/trunk/spec/packaging/archive_spec.rb (original)
+++ buildr/trunk/spec/packaging/archive_spec.rb Sat Mar 27 05:16:14 2010
@@ -88,6 +88,22 @@ describe 'ArchiveTask', :shared=>true do
inspect_archive.keys.should include('included')
end
+ it 'should archive artifacts' do
+ write 'library-1.0.txt', 'library-1.0'
+ artifact("org.example:library:txt:1.0").from 'library-1.0.txt'
+ archive(@archive).include("org.example:library:txt:1.0").invoke
+ inspect_archive.keys.should include('library-1.0.txt')
+ end
+
+ it 'should archive project artifacts' do
+ define 'p1' do
+ project.version = '1.0'
+ package(:zip)
+ end
+ archive(@archive).include(project('p1')).invoke
+ inspect_archive.keys.should include('p1-1.0.zip')
+ end
+
it 'should include entry for directory' do
archive(@archive).include(@dir).invoke
inspect_archive { |archive| @files.each { |f| archive['test/' + File.basename(f)].should eql(content_for(f)) } }