| #!/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 'options' |
| require 'console' |
| |
| args = Choice.choices |
| SCRIPT_NAME = "ripplor" |
| |
| DRY_RUN = args[:dryrun?].nil? ? false : true |
| puts "This is a dry run..." if DRY_RUN |
| |
| 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 |
| |
| eclipse_repo_root = 'ssh://' + args[:remote_user] + '@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.' |
| ripple_branch = args[:branch_name] |
| |
| ALL_REPOS = [ |
| Repository.new(eclipse_repo_root, 'osgi-test-stubs', paths['osgi-test-stubs'], 'org.eclipse.virgo.teststubs', nil, ripple_branch), |
| Repository.new(eclipse_repo_root, 'osgi-extensions', paths['osgi-extensions'], 'org.eclipse.virgo.osgi', nil, ripple_branch), |
| Repository.new(eclipse_repo_root, 'util', paths['util'], 'org.eclipse.virgo.util', nil, ripple_branch), |
| Repository.new(eclipse_repo_root, 'test', paths['test'], 'org.eclipse.virgo.test', nil, ripple_branch), |
| Repository.new(eclipse_repo_root, 'medic', paths['medic'], 'org.eclipse.virgo.medic', nil, ripple_branch), |
| Repository.new(eclipse_repo_root, 'artifact-repository', paths['artifact-repository'], 'org.eclipse.virgo.repository', nil, ripple_branch), |
| Repository.new(eclipse_repo_root, 'kernel', paths['kernel'], 'org.eclipse.virgo.kernel', nil, ripple_branch, 'clean clean-integration test package smoke-test publish publish-package-build'), |
| Repository.new(eclipse_repo_root, 'kernel-tools', paths['kernel-tools'], 'org.eclipse.virgo.kernel-tools', nil, ripple_branch), |
| Repository.new(eclipse_repo_root, 'web', paths['web'], 'org.eclipse.virgo.web', nil, ripple_branch), |
| Repository.new(eclipse_repo_root, 'snaps', paths['snaps'], 'org.eclipse.virgo.snaps', nil, ripple_branch, 'clean clean-integration test package publish publish-package-build'), |
| Repository.new(eclipse_repo_root, 'apps', paths['apps'], 'org.eclipse.virgo.apps', nil, ripple_branch), |
| Repository.new(eclipse_repo_root, 'documentation', paths['documentation'], 'org.eclipse.virgo.documentation', nil, ripple_branch, 'clean clean-integration doc-html publish'), |
| Repository.new(eclipse_repo_root, 'web-server', paths['web-server'], 'org.eclipse.virgo.web-server', nil, ripple_branch, 'clean clean-integration test package smoke-test publish publish-package-build'), |
| Repository.new(eclipse_repo_root, 'jetty-server', paths['jetty-server'], 'org.eclipse.virgo.jetty-server', nil, ripple_branch, 'clean clean-integration test package smoke-test publish publish-package-build') |
| ] |
| |
| repos = Array.new |
| repo_found = false |
| ALL_REPOS.each do |repo| |
| if repo_found || repo.name == args[:start_repo] |
| repos << repo |
| repo_found = true |
| end |
| end |
| |
| log_file=File.expand_path('./ripple.log') |
| start_time = Time.new |
| |
| versions = Hash.new |
| if !args[:version].nil? |
| args[:version].split(",").each do |v| |
| versions[$1.strip] = $2.strip if v =~ /(.*):(.*)/ |
| end |
| end |
| |
| console = Console.new |
| |
| begin |
| |
| repos.each do |repo| |
| puts 'Rippling ' + repo.name |
| puts ' checkout with "' + repo.clone_command + '"' if DRY_RUN |
| console.set_title(SCRIPT_NAME, "#{repo.name} Checkout") |
| repo.checkout if !DRY_RUN |
| puts ' update_versions ...' if DRY_RUN |
| console.set_title(SCRIPT_NAME, "#{repo.name} Update") |
| repo.update_versions(versions) if !DRY_RUN |
| if !args[:build_version].nil? |
| repo.update_virgo_build(args[:build_version]) if !DRY_RUN |
| end |
| puts ' build with user: ' + args[:remote_user] + ' and TARGETS: ' + repo.targets if DRY_RUN |
| console.set_title(SCRIPT_NAME, "#{repo.name} Build") |
| repo.build(args[:remote_user], log_file) if !DRY_RUN |
| versions.merge!(repo.versions) if !DRY_RUN |
| end |
| |
| console.set_title(SCRIPT_NAME, "Push?") |
| |
| if !DRY_RUN |
| 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.*/ |
| repos.each do |repo| |
| console.set_title(SCRIPT_NAME, "#{repo.name} Push") |
| repo.push |
| end |
| end |
| end |
| |
| console.clear_title |
| |
| rescue |
| console.set_title(SCRIPT_NAME, "Error") |
| end |