You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildr.apache.org by as...@apache.org on 2008/04/16 02:29:50 UTC
svn commit: r648472 - in /incubator/buildr/trunk: Rakefile rakelib/doc.rake
rakelib/package.rake rakelib/release.rake
Author: assaf
Date: Tue Apr 15 17:29:50 2008
New Revision: 648472
URL: http://svn.apache.org/viewvc?rev=648472&view=rev
Log:
Brought in changes to release task from Docter, now using the same rakelib/*.rake files.
Modified:
incubator/buildr/trunk/Rakefile
incubator/buildr/trunk/rakelib/doc.rake
incubator/buildr/trunk/rakelib/package.rake
incubator/buildr/trunk/rakelib/release.rake
Modified: incubator/buildr/trunk/Rakefile
URL: http://svn.apache.org/viewvc/incubator/buildr/trunk/Rakefile?rev=648472&r1=648471&r2=648472&view=diff
==============================================================================
--- incubator/buildr/trunk/Rakefile (original)
+++ incubator/buildr/trunk/Rakefile Tue Apr 15 17:29:50 2008
@@ -14,6 +14,9 @@
# the License.
+require 'rake/gempackagetask'
+
+
def spec(platform = nil)
@specs ||= {}
platform ||= RUBY_PLATFORM =~ /java/ ? 'java' : 'ruby'
@@ -52,14 +55,31 @@
spec.add_dependency 'archive-tar-minitar', '~> 0.5'
spec.add_dependency 'rubyforge', '~> 0.4'
unless platform =~ /java/
- spec.add_dependency 'rjb', '~> 1.1', '!= 1.1.3'
+ #spec.add_dependency 'rjb', '~> 1.1', '!= 1.1.3'
+ spec.add_dependency 'rjb', '~> 1.1'
end
end
end
-$license_excluded = ['lib/core/progressbar.rb', 'spec/spec.opts', 'doc/css/syntax.css', '.textile', '.haml']
+$license_excluded = ['spec/spec.opts', '.textile', '.haml']
+
+desc 'Compile Java libraries used by Buildr'
+task 'compile' do
+ puts 'Compiling Java libraries ...'
+ sh Config::CONFIG['ruby_install_name'], '-Ilib', '-Iaddon', 'bin/buildr', 'compile'
+ puts 'OK'
+end
+
+Rake::GemPackageTask.new(spec('ruby')) do |pkg|
+ pkg.need_tar = pkg.need_zip = true
+ file pkg.package_dir_path=>'compile'
+ file pkg.package_dir=>'compile'
+end
+Rake::GemPackageTask.new(spec('java')) do |pkg|
+ file pkg.package_dir_path=>'compile'
+end
namespace 'release' do
Modified: incubator/buildr/trunk/rakelib/doc.rake
URL: http://svn.apache.org/viewvc/incubator/buildr/trunk/rakelib/doc.rake?rev=648472&r1=648471&r2=648472&view=diff
==============================================================================
--- incubator/buildr/trunk/rakelib/doc.rake (original)
+++ incubator/buildr/trunk/rakelib/doc.rake Tue Apr 15 17:29:50 2008
@@ -84,7 +84,7 @@
rescue LoadError
puts 'Please run rake setup to install the Docter document generation library'
task 'setup' do
- install_gem 'docter'
+ install_gem 'docter', '~>1.1.3'
end
task 'release:check' do
fail 'Please run rake setup to install the Docter document generation library'
Modified: incubator/buildr/trunk/rakelib/package.rake
URL: http://svn.apache.org/viewvc/incubator/buildr/trunk/rakelib/package.rake?rev=648472&r1=648471&r2=648472&view=diff
==============================================================================
--- incubator/buildr/trunk/rakelib/package.rake (original)
+++ incubator/buildr/trunk/rakelib/package.rake Tue Apr 15 17:29:50 2008
@@ -20,26 +20,18 @@
desc 'Clean up all temporary directories used for running tests, creating documentation, packaging, etc.'
task 'clobber'
-desc 'Compile Java libraries used by Buildr'
-task 'compile' do
- puts 'Compiling Java libraries ...'
- sh Config::CONFIG['ruby_install_name'], '-Ilib', '-Iaddon', 'bin/buildr', 'compile'
- puts 'OK'
-end
-
-Rake::GemPackageTask.new(spec('ruby')) do |pkg|
+Rake::GemPackageTask.new(spec) do |pkg|
pkg.need_tar = pkg.need_zip = true
- file pkg.package_dir_path=>'compile'
- file pkg.package_dir=>'compile'
-end
-Rake::GemPackageTask.new(spec('java')) do |pkg|
- file pkg.package_dir_path=>'compile'
end
current = Rake::GemPackageTask.new(spec)
desc 'Install the package locally'
task 'install'=>"#{current.package_dir}/#{current.gem_file}" do |task|
- install_gem "#{current.package_dir}/#{current.gem_file}"
+ print "Installing #{spec.name} ... "
+ args = [Config::CONFIG['ruby_install_name'], '-S', 'gem', 'install', "#{current.package_dir}/#{current.gem_file}"]
+ args.unshift('sudo') unless windows?
+ sh *args
+ puts 'Done'
end
desc 'Uninstall previously installed packaged'
Modified: incubator/buildr/trunk/rakelib/release.rake
URL: http://svn.apache.org/viewvc/incubator/buildr/trunk/rakelib/release.rake?rev=648472&r1=648471&r2=648472&view=diff
==============================================================================
--- incubator/buildr/trunk/rakelib/release.rake (original)
+++ incubator/buildr/trunk/rakelib/release.rake Tue Apr 15 17:29:50 2008
@@ -41,69 +41,91 @@
# Does CHANGELOG reflects current release?
task 'check' do
print 'Checking that CHANGELOG indicates most recent version and today\'s date ... '
- expecting = "#{ruby_spec.version} (#{Time.now.strftime('%Y-%m-%d')})"
- header = File.readlines('CHANGELOG').first
+ expecting = "#{spec.version} (#{Time.now.strftime('%Y-%m-%d')})"
+ header = File.readlines('CHANGELOG').first.chomp
fail "Expecting CHANGELOG to start with #{expecting}, but found #{header} instead" unless expecting == header
puts 'OK'
end
# No local changes.
task 'check' do
+ print 'Checking there are no local changes ... '
status = `svn status`
fail "Cannot release unless all local changes are in SVN:\n#{status}" unless status.empty?
+ fail "Cannot release unless all local changes are in Git:\n" + `git status` if `git status`[/^#\t/]
+ puts 'OK'
end
desc 'Make a release'
- task 'make'=>'prepare' do
- enhance do
+ task 'make'=>'release:prepare' do |task|
+ task.enhance do
task('release:wrapup').invoke
end
end
- task 'rubyforge'=>'pacakge' do
- # Read the changes for this release.
- print 'Looking for changes between this release and previous one ... '
- pattern = /(^(\d+\.\d+(?:\.\d+)?)\s+\(\d{4}-\d{2}-\d{2}\)\s*((:?^[^\n]+\n)*))/
- changelog = File.read(__FILE__.pathmap('%d/CHANGELOG'))
- changes = changelog.scan(pattern).inject({}) { |hash, set| hash[set[1]] = set[2] ; hash }
- current = changes[spec.version.to_s]
- current = changes[spec.version.to_s.split('.')[0..-2].join('.')] if !current && spec.version.to_s =~ /\.0$/
- fail "No changeset found for version #{spec.version}" unless current
- puts 'OK'
+ task 'rubyforge'=>'package' do
+ if File.exist?('CHANGELOG')
+ # Read the changes for this release.
+ print 'Looking for changes between this release and previous one ... '
+ pattern = /(^(\d+\.\d+(?:\.\d+)?)\s+\(\d{4}-\d{2}-\d{2}\)\s*((:?^[^\n]+\n)*))/
+ changes = File.read('CHANGELOG').scan(pattern).inject({}) { |hash, set| hash[set[1]] = set[2] ; hash }
+ current = changes[spec.version.to_s]
+ current = changes[spec.version.to_s.split('.')[0..-2].join('.')] if !current && spec.version.to_s =~ /\.0$/
+ fail "No changeset found for version #{spec.version}" unless current
+ puts 'OK'
+ end
print "Uploading #{spec.version} to RubyForge ... "
files = Dir.glob('pkg/*.{gem,tgz,zip}')
rubyforge = RubyForge.new
- rubyforge.login
- File.open('.changes', 'w'){|f| f.write(current)}
- rubyforge.userconfig.merge!('release_changes' => '.changes', 'preformatted' => true)
- rubyforge.add_release spec.rubyforge_project.downcase, spec.name.downcase, spec.version, *files
- rm '.changes'
+ rubyforge.login
+ begin
+ if changes
+ File.open('.changes', 'w'){|f| f.write(current)}
+ rubyforge.userconfig.merge!('release_changes' => '.changes', 'preformatted' => true)
+ end
+ rubyforge.add_release spec.rubyforge_project.downcase, spec.name.downcase, spec.version, *files
+ ensure
+ rm '.changes' if changes
+ end
puts 'Done'
end
# Tag this release in SVN.
task 'tag' do
- print "Tagging release as tags/#{ruby_spec.version} ... "
- cur_url = `svn info`.scan(/URL: (.*)/)[0][0]
- new_url = cur_url.sub(/(trunk$)|(branches\/\w*)$/, "tags/#{ruby_spec.version.to_s}")
- sh 'svn', 'copy', cur_url, new_url, '-m', "Release #{ruby_spec.version.to_s}", :verbose=>false
- puts "OK"
+ info = `svn info` + `git svn info` # Using either svn or git-svn
+ url = info[/^URL:/] && info.scan(/^URL: (.*)/)[0][0]
+ break unless url
+ new_url = url.sub(/(trunk$)|(branches\/\w*)$/, "tags/#{spec.version}")
+ break if url == new_url
+ print "Tagging release as tags/#{spec.version} ... "
+ sh 'svn', 'copy', url, new_url, '-m', "Release #{spec.version}", :verbose=>false do |ok, res|
+ if ok
+ puts 'Done'
+ else
+ puts 'Could not create tag, please do it yourself!'
+ puts %{ svn copy #{url} #{new_url} -m "#{spec.version}"}
+ end
+ end
end
# Update lib/buildr.rb to next vesion number, add new entry in CHANGELOG.
task 'next_version'=>'tag' do
- next_version = ruby_spec.version.to_ints.zip([0, 0, 1]).map { |a| a.inject(0) { |t,i| t + i } }.join('.')
- print "Updating lib/buildr.rb to next version number (#{next_version}) ... "
- buildr_rb = File.read(__FILE__.pathmap('%d/lib/buildr.rb')).
- sub(/(VERSION\s*=\s*)(['"])(.*)\2/) { |line| "#{$1}#{$2}#{next_version}#{$2}" }
- File.open(__FILE__.pathmap('%d/lib/buildr.rb'), 'w') { |file| file.write buildr_rb }
- puts "OK"
-
- print 'Adding new entry to CHANGELOG ... '
- changelog = File.read(__FILE__.pathmap('%d/CHANGELOG'))
- File.open(__FILE__.pathmap('%d/CHANGELOG'), 'w') { |file| file.write "#{next_version} (Pending)\n\n#{changelog}" }
- puts "OK"
+ next_version = spec.version.to_ints.zip([0, 0, 1]).map { |a| a.inject(0) { |t,i| t + i } }.join('.')
+ ver_file = "lib/#{spec.name}.rb"
+ if File.exist?(ver_file)
+ print "Updating #{ver_file} to next version number (#{next_version}) ... "
+ modified = File.read(ver_file).sub(/(VERSION\s*=\s*)(['"])(.*)\2/) { |line| "#{$1}#{$2}#{next_version}#{$2}" }
+ File.open(ver_file, 'w') { |file| file.write modified }
+ puts 'Done'
+ end
+
+ if File.exist?('CHANGELOG')
+ print 'Adding new entry to CHANGELOG ... '
+ modified = "#{next_version} (Pending)\n\n" + File.read('CHANGELOG')
+ File.open('CHANGELOG', 'w') { |file| file.write modified }
+ puts 'Done'
+ end
end
task 'wrapup'=>['tag', 'next_version']