diff options
Diffstat (limited to 'org.eclipse.swtbot.releng/make-release.rb')
-rwxr-xr-x | org.eclipse.swtbot.releng/make-release.rb | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/org.eclipse.swtbot.releng/make-release.rb b/org.eclipse.swtbot.releng/make-release.rb new file mode 100755 index 00000000..61df39e7 --- /dev/null +++ b/org.eclipse.swtbot.releng/make-release.rb @@ -0,0 +1,71 @@ +#!/usr/bin/env ruby + +require 'rubygems' +require 'rake' +require 'fileutils' +require 'optparse' +require 'open-uri' + +class Release + def self.run(args) + if args.empty? + puts "Usage: #{$0} VERSION + VERSION: major.minor.patch" + exit(-1) + end + + @now = Time.at(`git log -1 --format='%ct'`.to_i).utc + @version = args.first + puts "Fetching revision available on the download site..." + uri = URI.parse("http://download.eclipse.org/technology/swtbot/helios/dev-build/RELEASE_NOTES.txt") + puts "Reading #{uri}" + + @available_revision = open(uri).readlines.grep(/ rev\(.*\) /).first.gsub(/RELEASE NOTES v(.*) rev\((.*)\) \(.*\)/, '\2').strip + + @current_head = `git log --pretty='%H' -1`.strip + + puts "Revision on the download site: #{@available_revision}" + puts "Generating revision log since #{@available_revision} to HEAD(#{@current_head})" + + @revision_log = `git log --reverse --pretty='%h - by %cn on %cd%n%w(80, 4, 4)%B\n' --date=short #{@available_revision}..#{@current_head}` + + @revision_log += "\n\n" + @revision_log += open(uri).read + + FileUtils.rm_rf('to-upload') + FileUtils.rm_rf('target') + + build_swtbot(36, 'helios') + build_swtbot(37, 'indigo') + end + + def self.release_notes(dir) + File.open("#{dir}/RELEASE_NOTES.txt", 'w') do |f| + title = "RELEASE NOTES v#{@version} rev(#{@current_head[0..6]}) (#{@now.strftime('%b %d, %Y')})" + f.puts(title) + f.puts("=" * title.length) + f.puts("") + f.puts(@revision_log) + end + end + + #version=35, code_name=galileo + #version=36, code_name=helios + #version=37, code_name=indigo + def self.build_swtbot(version, code_name) + + FileUtils.rm_rf("to-upload/#{code_name}") + FileUtils.mkdir_p("to-upload/#{code_name}/dev-build") + release_notes("to-upload/#{code_name}/dev-build") + + sh("ant materialize-workspace -Declipse.version=#{version} -Dhas.archives=true") + extra_jvm_opts = "-Dextra.jvm.options='#{ENV['JAVA_OPTS']}'" if ENV['JAVA_OPTS'] + sh("ant cruise -Declipse.version=#{version} -Dhas.archives=true #{extra_jvm_opts} -Dnow.now=#{@now.strftime('%Y%m%d_%H%M')}") + FileUtils.rm_rf("to-upload/#{code_name}") + FileUtils.mkdir_p("to-upload/#{code_name}") + FileUtils.mv("artifacts/to-upload", "to-upload/#{code_name}/dev-build") + release_notes("to-upload/#{code_name}/dev-build") + end +end + +Release.run(ARGV) |