Rakefile in masterview_parser-0.0.5 vs Rakefile in masterview_parser-0.0.6

- old
+ new

@@ -1,13 +1,25 @@ #!/usr/bin/env ruby require 'rubygems' +require 'meta_project' + require 'rake' require 'rake/testtask' require 'rake/rdoctask' require 'rake/gempackagetask' require 'rake/contrib/rubyforgepublisher' +require 'rake/contrib/xforge' +require 'rake/clean' +require 'gmailer' + +#require 'archive/tar/minitar' +#require 'zlib' + + + + $LOAD_PATH.unshift( File.join( File.dirname(__FILE__), 'lib') ) require 'masterview' RUBY_FORGE_PROJECT = "masterview" RUBY_FORGE_USER = "jeffbski" @@ -92,10 +104,23 @@ # Rake::SshFilePublisher.new("foobar.com", "dist/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload # # Rake::SshDirPublisher.new("foobar.com", "dist/api/#{PKG_NAME}", "doc").upload #end +MASTERVIEW = MetaProject::Project::XForge::RubyForge.new('masterview') + +task :verify_rubyforge do + raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER'] + raise "RUBYFORGE_PASSWORD environment variable not set!" unless ENV['RUBYFORGE_PASSWORD'] +end + +task :verify_gmail do + raise "GMAIL_USER environment variable not set!" unless ENV['GMAIL_USER'] + raise "GMAIL_PASSWORD environment variable not set!" unless ENV['GMAIL_PASSWORD'] +end + + desc 'Build all packages' task :package_all => ['masterview_complete:package', 'masterview:package', 'masterview_parser:package', 'masterview_generator:package', @@ -106,10 +131,17 @@ 'masterview:repackage', 'masterview_parser:repackage', 'masterview_generator:repackage', 'masterview_plugin_generator:repackage'] +desc 'Release all files' +task :release_all_files => ['masterview_complete:release_files', + 'masterview:release_files', + 'masterview_parser:release_files', + 'masterview_generator:release_files', + 'masterview_plugin_generator:release_files'] + namespace 'masterview_complete' do module MasterViewComplete PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : '' PKG_NAME = 'masterview_complete' PKG_VERSION = MasterView::VERSION::STRING + PKG_BUILD @@ -145,20 +177,43 @@ p.gem_spec = spec p.need_tar = true p.need_zip = true end - # --- Ruby forge release manager by florian gross ------------------------------------------------- - RUBY_FORGE_PACKAGEID = "1909" #verify this from http://rubyforge.org/frs/admin/?group_id=1290 - desc "Publish the masterview_complete release files to RubyForge." - task :release => [:gem, :package] do - files = ["zip", "tgz"].map { |ext| "pkg/#{PKG_FILE_NAME}.#{ext}" } + desc "Release files on RubyForge." + task :release_files => [ :verify_rubyforge ] do + release_files = ["zip", "tgz"].map { |ext| "pkg/#{PKG_FILE_NAME}.#{ext}" } - system("rubyforge login --username #{::RUBY_FORGE_USER}") - - files.each do |file| - system("rubyforge add_release #{::RUBY_FORGE_GROUPID} #{RUBY_FORGE_PACKAGEID} \"#{RELEASE_NAME}\" #{file}") + Rake::XForge::Release.new(MASTERVIEW) do |release| + release.user_name = ENV['RUBYFORGE_USER'] + release.password = ENV['RUBYFORGE_PASSWORD'] + release.files = release_files.to_a + release.release_name = RELEASE_NAME + release.package_name = PKG_NAME + + notes = [] + File.open("RELEASE_NOTES") do |file| + file.each do |line| + line.chomp! + line.gsub!(/^#.*$/, '') and next + notes << line + end + end + release.release_notes = notes.join("\n") + + changes = [] + File.open("CHANGELOG") do |file| + current = true + + file.each do |line| + line.chomp! + current = false if current and line =~ /^==/ + break if line.empty? and not current + changes << line + end + end + release.release_changes = changes.join("\n") end end end end @@ -195,20 +250,43 @@ p.gem_spec = spec p.need_tar = false p.need_zip = false end - # --- Ruby forge release manager by florian gross ------------------------------------------------- - RUBY_FORGE_PACKAGEID = "1581" #verify this from http://rubyforge.org/frs/admin/?group_id=1290 - desc "Publish the masterview_complete release files to RubyForge." - task :release => [:gem, :package] do - files = ["zip", "tgz"].map { |ext| "pkg/#{PKG_FILE_NAME}.#{ext}" } + desc "Release files on RubyForge." + task :release_files => [ :verify_rubyforge ] do + release_files = ["gem"].map { |ext| "pkg/#{PKG_FILE_NAME}.#{ext}" } - system("rubyforge login --username #{::RUBY_FORGE_USER}") - - files.each do |file| - system("rubyforge add_release #{::RUBY_FORGE_GROUPID} #{RUBY_FORGE_PACKAGEID} \"#{RELEASE_NAME}\" #{file}") + Rake::XForge::Release.new(MASTERVIEW) do |release| + release.user_name = ENV['RUBYFORGE_USER'] + release.password = ENV['RUBYFORGE_PASSWORD'] + release.files = release_files.to_a + release.release_name = RELEASE_NAME + release.package_name = PKG_NAME + + notes = [] + File.open("RELEASE_NOTES") do |file| + file.each do |line| + line.chomp! + line.gsub!(/^#.*$/, '') and next + notes << line + end + end + release.release_notes = notes.join("\n") + + changes = [] + File.open("CHANGELOG") do |file| + current = true + + file.each do |line| + line.chomp! + current = false if current and line =~ /^==/ + break if line.empty? and not current + changes << line + end + end + release.release_changes = changes.join("\n") end end end end @@ -248,20 +326,43 @@ p.gem_spec = spec p.need_tar = false p.need_zip = false end - # --- Ruby forge release manager by florian gross ------------------------------------------------- - RUBY_FORGE_PACKAGEID = "1910" #verify this from http://rubyforge.org/frs/admin/?group_id=1290 - desc "Publish the masterview_parser release files to RubyForge." - task :release => [:gem, :package] do - files = ["zip", "tgz"].map { |ext| "pkg/#{PKG_FILE_NAME}.#{ext}" } + desc "Release files on RubyForge." + task :release_files => [ :verify_rubyforge ] do + release_files = ["gem"].map { |ext| "pkg/#{PKG_FILE_NAME}.#{ext}" } - system("rubyforge login --username #{::RUBY_FORGE_USER}") - - files.each do |file| - system("rubyforge add_release #{::RUBY_FORGE_GROUPID} #{RUBY_FORGE_PACKAGEID} \"#{RELEASE_NAME}\" #{file}") + Rake::XForge::Release.new(MASTERVIEW) do |release| + release.user_name = ENV['RUBYFORGE_USER'] + release.password = ENV['RUBYFORGE_PASSWORD'] + release.files = release_files.to_a + release.release_name = RELEASE_NAME + release.package_name = PKG_NAME + + notes = [] + File.open("RELEASE_NOTES") do |file| + file.each do |line| + line.chomp! + line.gsub!(/^#.*$/, '') and next + notes << line + end + end + release.release_notes = notes.join("\n") + + changes = [] + File.open("CHANGELOG") do |file| + current = true + + file.each do |line| + line.chomp! + current = false if current and line =~ /^==/ + break if line.empty? and not current + changes << line + end + end + release.release_changes = changes.join("\n") end end end end @@ -297,20 +398,43 @@ p.gem_spec = spec p.need_tar = false p.need_zip = false end - # --- Ruby forge release manager by florian gross ------------------------------------------------- - RUBY_FORGE_PACKAGEID = "1911" #verify this from http://rubyforge.org/frs/admin/?group_id=1290 - desc "Publish the masterview_generator release files to RubyForge." - task :release => [:gem, :package] do - files = ["zip", "tgz"].map { |ext| "pkg/#{PKG_FILE_NAME}.#{ext}" } + desc "Release files on RubyForge." + task :release_files => [ :verify_rubyforge ] do + release_files = ["gem"].map { |ext| "pkg/#{PKG_FILE_NAME}.#{ext}" } - system("rubyforge login --username #{::RUBY_FORGE_USER}") - - files.each do |file| - system("rubyforge add_release #{::RUBY_FORGE_GROUPID} #{RUBY_FORGE_PACKAGEID} \"#{RELEASE_NAME}\" #{file}") + Rake::XForge::Release.new(MASTERVIEW) do |release| + release.user_name = ENV['RUBYFORGE_USER'] + release.password = ENV['RUBYFORGE_PASSWORD'] + release.files = release_files.to_a + release.release_name = RELEASE_NAME + release.package_name = PKG_NAME + + notes = [] + File.open("RELEASE_NOTES") do |file| + file.each do |line| + line.chomp! + line.gsub!(/^#.*$/, '') and next + notes << line + end + end + release.release_notes = notes.join("\n") + + changes = [] + File.open("CHANGELOG") do |file| + current = true + + file.each do |line| + line.chomp! + current = false if current and line =~ /^==/ + break if line.empty? and not current + changes << line + end + end + release.release_changes = changes.join("\n") end end end end @@ -347,21 +471,78 @@ p.gem_spec = spec p.need_tar = false p.need_zip = false end - # --- Ruby forge release manager by florian gross ------------------------------------------------- - RUBY_FORGE_PACKAGEID = "1912" #verify this from http://rubyforge.org/frs/admin/?group_id=1290 - desc "Publish the masterview_plugin_generator release files to RubyForge." - task :release => [:gem, :package] do - files = ["zip", "tgz"].map { |ext| "pkg/#{PKG_FILE_NAME}.#{ext}" } + desc "Release files on RubyForge." + task :release_files => [ :verify_rubyforge ] do + release_files = ["gem"].map { |ext| "pkg/#{PKG_FILE_NAME}.#{ext}" } - system("rubyforge login --username #{::RUBY_FORGE_USER}") - - files.each do |file| - system("rubyforge add_release #{::RUBY_FORGE_GROUPID} #{RUBY_FORGE_PACKAGEID} \"#{RELEASE_NAME}\" #{file}") + Rake::XForge::Release.new(MASTERVIEW) do |release| + release.user_name = ENV['RUBYFORGE_USER'] + release.password = ENV['RUBYFORGE_PASSWORD'] + release.files = release_files.to_a + release.release_name = RELEASE_NAME + release.package_name = PKG_NAME + + notes = [] + File.open("RELEASE_NOTES") do |file| + file.each do |line| + line.chomp! + line.gsub!(/^#.*$/, '') and next + notes << line + end + end + release.release_notes = notes.join("\n") + + changes = [] + File.open("CHANGELOG") do |file| + current = true + + file.each do |line| + line.chomp! + current = false if current and line =~ /^==/ + break if line.empty? and not current + changes << line + end + end + release.release_changes = changes.join("\n") end end end end + + + + +desc "Publish news on RubyForge" +task :publish_news => [ :verify_rubyforge, :tar, :gem, :demotar] do + Rake::XForge::NewsPublisher.new(Ruby_PDF) do |news| + news.user_name = ENV['RUBYFORGE_USER'] + news.password = ENV['RUBYFORGE_PASSWORD'] + news.subject = "PDF::Writer #{PDF::Writer::VERSION} Released" + news.changes_file = nil + + details = [] + File.open("Release-Announcement") do |file| + file.each do |line| + line.chomp! + break if line =~ /^=/ + details << line + end + end + news.details = details.join("\n") + end +end + +desc "Post a release announcement via GMail." +#task :email_announcement => [ :verify_gmail, :tar, :gem, :demotar] do +task :email_announcement => [ :verify_gmail ] do + GMailer.connect(ENV["GMAIL_USER"], ENV["GMAIL_PASSWORD"]) do |gmail| + gmail.send :to => "ruby-talk@ruby-lang.org", + :subject => "[ANN] PDF::Writer #{PDF::Writer::VERSION}", + :body => File.read("Release-Announcement") + end +end +