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 01:15:09 UTC
svn commit: r648452 - in /incubator/buildr/docter/trunk: Rakefile
lib/docter.rb lib/docter/template.rb rakelib/release.rake
Author: assaf
Date: Tue Apr 15 16:15:05 2008
New Revision: 648452
URL: http://svn.apache.org/viewvc?rev=648452&view=rev
Log:
Fix to copying resources when those include directories.
Fix to release task for tagging, updating version and checking local changes.
Modified:
incubator/buildr/docter/trunk/Rakefile
incubator/buildr/docter/trunk/lib/docter.rb
incubator/buildr/docter/trunk/lib/docter/template.rb
incubator/buildr/docter/trunk/rakelib/release.rake
Modified: incubator/buildr/docter/trunk/Rakefile
URL: http://svn.apache.org/viewvc/incubator/buildr/docter/trunk/Rakefile?rev=648452&r1=648451&r2=648452&view=diff
==============================================================================
--- incubator/buildr/docter/trunk/Rakefile (original)
+++ incubator/buildr/docter/trunk/Rakefile Tue Apr 15 16:15:05 2008
@@ -14,10 +14,6 @@
# the License.
-require 'rake/gempackagetask'
-require 'rake/rdoctask'
-require 'rubyforge'
-
# Gem specification comes first, other tasks rely on it.
def spec
Gem::Specification.new do |spec|
@@ -42,6 +38,7 @@
spec.add_dependency 'haml', '~> 1.8'
spec.add_dependency 'mongrel', '~> 1.1'
spec.add_dependency 'syntax', '~> 1.0'
+ spec.add_dependency 'rake', '~> 0.8'
end
end
Modified: incubator/buildr/docter/trunk/lib/docter.rb
URL: http://svn.apache.org/viewvc/incubator/buildr/docter/trunk/lib/docter.rb?rev=648452&r1=648451&r2=648452&view=diff
==============================================================================
--- incubator/buildr/docter/trunk/lib/docter.rb (original)
+++ incubator/buildr/docter/trunk/lib/docter.rb Tue Apr 15 16:15:05 2008
@@ -18,7 +18,6 @@
VERSION = '1.1.3'.freeze
end
-#$LOAD_PATH.unshift __DIR__
# Ruby 1.9 conveniences.
module Kernel #:nodoc:
@@ -34,10 +33,11 @@
end unless method_defined?('to_proc')
end
+
require 'docter/common.rb'
require 'docter/page.rb'
require 'docter/template.rb'
require 'docter/collection.rb'
require 'docter/server.rb'
-require 'docter/rake.rb' if defined?(Rake)
+require 'docter/rake.rb'
require 'docter/ultraviolet.rb' if defined?(Uv)
Modified: incubator/buildr/docter/trunk/lib/docter/template.rb
URL: http://svn.apache.org/viewvc/incubator/buildr/docter/trunk/lib/docter/template.rb?rev=648452&r1=648451&r2=648452&view=diff
==============================================================================
--- incubator/buildr/docter/trunk/lib/docter/template.rb (original)
+++ incubator/buildr/docter/trunk/lib/docter/template.rb Tue Apr 15 16:15:05 2008
@@ -157,7 +157,18 @@
# Copy resource files to the destination directory.
def copy_resources(to_dir)
mkpath to_dir
- cp_r @sources, to_dir
+ @sources.each do |src|
+ if File.directory?(src)
+ target = File.join(to_dir, File.basename(src))
+ mkpath target
+ FileList["#{src}/**/*"].reject { |path| File.directory?(path) }.each do |path|
+ mkpath File.dirname(path).gsub(/^#{src}/, target)
+ cp path, path.gsub(/^#{src}/, target)
+ end
+ else
+ cp src, to_dir
+ end
+ end
touch to_dir # For Rake dependency management.
end
Modified: incubator/buildr/docter/trunk/rakelib/release.rake
URL: http://svn.apache.org/viewvc/incubator/buildr/docter/trunk/rakelib/release.rake?rev=648452&r1=648451&r2=648452&view=diff
==============================================================================
--- incubator/buildr/docter/trunk/rakelib/release.rake (original)
+++ incubator/buildr/docter/trunk/rakelib/release.rake Tue Apr 15 16:15:05 2008
@@ -51,6 +51,7 @@
task 'check' do
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/]
end
desc 'Make a release'
@@ -61,51 +62,70 @@
end
task 'rubyforge'=>'package' 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('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'
+ 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
+ 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} ... "
- cur_url = `svn info`.scan(/URL: (.*)/)[0][0]
- new_url = cur_url.sub(/(trunk$)|(branches\/\w*)$/, "tags/#{spec.version.to_s}")
- sh 'svn', 'copy', cur_url, new_url, '-m', "Release #{spec.version.to_s}", :verbose=>false
- puts "OK"
+ 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 = 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('CHANGELOG')
- File.open('CHANGELOG', 'w') { |file| file.write "#{next_version} (Pending)\n\n#{changelog}" }
- puts "OK"
+ 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']
+ task 'wrapup'=>['tag', 'next_version']
end