blob: 9cb6c7c461d8a9f6ea8f8e56e4d7f7a7d19794dc [file]
#!/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.now.utc
@version = args.first
puts "Fetching revision available on the download site..."
uri = URI.parse("http://download.eclipse.org/technology/swtbot/ganymede/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(34, 'ganymede')
build_swtbot(35, 'galileo')
build_swtbot(36, 'helios')
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=34, code_name=ganymede
#version=35, code_name=galileo
#version=36, code_name=helios
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)