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']