blob: 33785ce1794c6d4c713dac9526f83c11b8457565 [file] [log] [blame]
#!/usr/bin/env ruby -wKU
$LOAD_PATH << File.expand_path(File.dirname(__FILE__))
$LOAD_PATH << File.expand_path(File.dirname(__FILE__) + '/../lib')
require 'repository'
require "rubygems"
require "etc"
require 'options'
args = Choice.choices
if File.exist?(File.expand_path(args[:repository_map]))
paths = Hash.new
IO.foreach(File.expand_path(args[:repository_map])) do |line|
paths[$1.strip] = $2.strip if line =~ /([^=]*)=(.*)/
end
else
paths = {
'osgi-test-stubs' => 'osgi-test-stubs',
'osgi-extensions' => 'osgi-extensions',
'util' => 'util',
'test' => 'test',
'medic' => 'medic',
'artifact-repository' => 'artifact-repository',
'kernel' => 'kernel',
'kernel-tools' => 'kernel-tools',
'web' => 'web',
'snaps' => 'snaps',
'apps' => 'apps',
'documentation' => 'documentation',
'web-server' => 'web-server',
'jetty-server' => 'jetty-server'
}
end
update_branch = args[:branch]
local_repo_root = 'git@git.springsource.org:virgo/'
virgo_repo_root = 'ssh://' + args[:remote_user] + '@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.'
ALL_REPOS = [
Repository.new(virgo_repo_root, 'web-server', paths['web-server'], nil, nil, update_branch),
Repository.new(virgo_repo_root, 'jetty-server', paths['jetty-server'], nil, nil, update_branch),
Repository.new(virgo_repo_root, 'documentation', paths['documentation'], nil, nil, update_branch),
Repository.new(virgo_repo_root, 'apps', paths['apps'], nil, nil, update_branch),
Repository.new(virgo_repo_root, 'snaps', paths['snaps'], nil, nil, update_branch),
Repository.new(virgo_repo_root, 'web', paths['web'], nil, nil, update_branch),
Repository.new(virgo_repo_root, 'kernel-tools', paths['kernel-tools'], nil, nil, update_branch),
Repository.new(virgo_repo_root, 'kernel', paths['kernel'], nil, nil, update_branch),
Repository.new(virgo_repo_root, 'artifact-repository', paths['artifact-repository'], nil, nil, update_branch),
Repository.new(virgo_repo_root, 'medic', paths['medic'], nil, nil, update_branch),
Repository.new(virgo_repo_root, 'test', paths['test'], nil, nil, update_branch),
Repository.new(virgo_repo_root, 'util', paths['util'], nil, nil, update_branch),
Repository.new(virgo_repo_root, 'osgi-extensions', paths['osgi-extensions'], nil, nil, update_branch),
Repository.new(virgo_repo_root, 'osgi-test-stubs', paths['osgi-test-stubs'], nil, nil, update_branch)
]
new_version = args[:new_version]
start_time = Time.new
ALL_REPOS.each do |repo|
puts 'Repo: ' + repo.name
puts ' Checkout with "' + repo.clone_command + '"'
repo.checkout(true)
repo.update_version(new_version)
puts ''
end
puts 'Execution Time: ' + Time.at(Time.new - start_time).utc.strftime('%R:%S')
print 'Do you want to push? (y/n) '
commit_ok = STDIN.gets.chomp
if commit_ok =~ /y.*/
ALL_REPOS.each do |repo|
begin
repo.push(new_version)
puts ''
rescue SystemExit
if VIRGO_PERMISSION_REPOS.include?(repo)
abort("\nFATAL: Push failed for #{repo.name}")
end
puts "\nWARNING: Push failed for #{repo.name}"
end
end
end