class HoeLike

HoeLike is intended to be used with the Hoe gem. It adds some Rake tasks.

Public Class Methods

new(keys) click to toggle source
# File lib/s4t-utils/hoelike.rb, line 40
def initialize(keys)
  @keys = keys
  project = pull(:project)
  this_release = pull(:this_release)
  login = pull(:login)
  web_site_root = pull(:web_site_root)
  export_root = pull(:export_root)
  
  root = "svn+ssh://#{login}/var/svn/#{project}"
  project_exports = "#{export_root}/#{project}"
  
  desc "Run fast tests."
  task 'fast' do
    S4tUtils.run_particular_tests('test', 'fast')
  end
  
  desc "Run slow tests."
  task 'slow' do
    S4tUtils.run_particular_tests('test', 'slow')
  end
  
  desc "Upload all the web pages (as part of release)"
  task 'upload_pages' do | task |
    assert_in(project_exports, task.name)
    exec = "scp -r #{web_site_root}/* #{login}:/var/www/gforge-projects/#{project}/"
    puts exec
    system(exec)
  end
  
  desc "Upload all the web pages (not as part of release)"
  task 'export_and_upload_pages' => 'export' do | task |
    Dir.chdir(project_exports) do
      exec = "scp -r #{web_site_root}/* #{login}:/var/www/gforge-projects/#{project}/"
      puts exec
      system(exec)
    end
  end

  desc "Tag release with current version."
  task 'tag_release' do
    from = "#{root}/trunk"
    to = "#{root}/tags/rel-#{this_release}"
    message = "Release #{this_release}"
    exec = "svn copy -m '#{message}' #{from} #{to}"
    puts exec
    system(exec)
  end
  
  desc "Export to #{project_exports}"
  task 'export' do 
    Dir.chdir(export_root) do
      rm_rf project
      exec = "svn export #{root}/trunk #{project}"
      puts exec
      system exec
    end
  end
  

  desc "Complete release of everything - asks for confirmation after steps"
  # Because in Ruby 1.8.6, Rake doesn't notice subtask failures, so it
  # won't stop for us.
  task 'release_everything' do  
    confirmed_step 'check_manifest'
    confirmed_step 'export'
    Dir.chdir(project_exports) do
      puts "Working in #{Dir.pwd}"
      confirmed_step 'test'
      confirmed_step 'upload_pages'
      confirmed_step 'publish_docs'
      ENV['VERSION'] = this_release
      confirmed_step 'release'
    end
    confirmed_step 'tag_release'
  end

end