Skip to main content
summaryrefslogtreecommitdiffstats
blob: 0e9b9b188b1d0ad3f7e7d1aed0a84bc9b8b3a64e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env ruby

require 'rubygems'
require 'rake'
require 'fileutils'
require 'optparse'
require 'open-uri'

class Release
  def self.run(args)
    @now = Time.now.strftime('%b %d, %Y')
    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(/Revision: (.){40}/).first.gsub(/Revision: /, '').strip

    @current_head = `git log --pretty='%H' -1`.strip
    @current_head_svn = `git log -1`.gsub(/.*git-svn-id:.*@(\d+).*/m, '\1')

    puts "Revision on the download site: #{@available_revision}"
    puts "Generating revision log since  #{@available_revision} to HEAD(#{@current_head})"

    @revision_log = `git log --pretty='%h - by %cn on %cd%n%s%n%b%n' --date=short #{@available_revision}..#{@current_head}`
    
    @revision_log.gsub!(/.*git-svn-id:.*@(\d+).*/, '  svn-revision: \1')
    @revision_log = @revision_log.gsub(/\t/,"     ").gsub(/.{1,72}(?:\s|\Z)/){($& + 5.chr).gsub(/\n\005/,"\n  ").gsub(/\005/,"\n  ")}
    
    @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#{@current_head_svn} (#{@now})"
      f.puts(title)
      f.puts("=" * title.length)
      f.puts("")
      rev = "Revision: #{@current_head}"
      f.puts("=" * rev.length)
      f.puts(rev)
      f.puts("=" * rev.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")
    sh("ant cruise -Declipse.version=#{version} -Dhas.archives=true")
    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)

Back to the top