rakefile.rb in valuable-0.6 vs rakefile.rb in valuable-0.8

- old
+ new

@@ -1,193 +1,76 @@ -require 'rubygems' - -require 'rake' -require 'rake/rdoctask' -require 'rake/testtask' -require 'rake/packagetask' -require 'rake/gempackagetask' -require 'rake/contrib/rubyforgepublisher' - -task :default => [:test] - -PKG_NAME = 'valuable' -PKG_VERSION = '0.6' -PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" -RUBY_FORGE_PROJECT = 'valuable' -RUBY_FORGE_USER = 'mustmodify' - -desc "Run unit tests" -Rake::TestTask.new("test") { |t| - t.pattern = 'test/*_test.rb' - t.verbose = true - t.warning = true -} - -desc 'clean temporary files' -task :clean do - temp_filenames = File.join('**', '*.*~') - temp_files = Dir.glob(temp_filenames) - if temp_files.empty? - puts 'nothing to delete' - else - puts "deleting #{temp_files.size} files" - end - - File.delete(*temp_files) -end - -desc 'Generate documentation for the Valuable plugin' -Rake::RDocTask.new(:rdoc) do |rdoc| - rdoc.title = 'Valuable - light weight modeling' - rdoc.options << '--line-numbers' - rdoc.options << '--inline-source' - rdoc.rdoc_files.include('README.txt') - rdoc.rdoc_files.include('lib/**/*.rb') -end - -spec = Gem::Specification.new do |s| - s.name = PKG_NAME - s.version = PKG_VERSION - s.platform = Gem::Platform::RUBY - s.summary = 'attr_accessor on steroids with defaults, constructor, and light casting.' - s.description = "Valuable is a ruby base class that is essentially attr_accessor on steroids. Its aim is to provide Rails-like goodness where ActiveRecord isn't an option. It intends to use a simple and intuitive interface, allowing you to get on with the logic specific to your application." - - s.files = FileList["{lib, test}/**/*"].to_a + %w( README.txt rakefile.rb ) - s.add_dependency 'activesupport' - s.require_path = 'lib' - s.test_files = FileList["{test}/**/*test.rb"].to_a - s.has_rdoc = false - - s.rubyforge_project = RUBY_FORGE_PROJECT - s.author = 'Johnathon Wright' - s.email = 'jw@mustmodify.com' - s.homepage = 'http://valuable.mustmodify.com' -end - -Rake::GemPackageTask.new(spec) do |pkg| - pkg.need_zip = true - pkg.need_tar = true -end - -desc "Publish the API documentation" -task :pdoc => [:rdoc] do - Rake::RubyForgePublisher.new(RUBY_FORGE_PROJECT, RUBY_FORGE_USER).upload -end - -desc 'Publish the gem and API docs' -task :publish => [:pdoc, :rubyforge_upload] - -desc "Publish the release files to RubyForge." -task :rubyforge_upload => :package do - files = %w(gem tgz).map { |ext| "pkg/#{PKG_FILE_NAME}.#{ext}" } - - if RUBY_FORGE_PROJECT then - require 'net/http' - require 'open-uri' - - project_uri = "http://rubyforge.org/projects/#{RUBY_FORGE_PROJECT}/" - project_data = open(project_uri) { |data| data.read } - group_id = project_data[/[?&]group_id=(\d+)/, 1] - raise "Couldn't get group id" unless group_id - - # This echos password to shell which is a bit sucky - if ENV["RUBY_FORGE_PASSWORD"] - password = ENV["RUBY_FORGE_PASSWORD"] - else - print "#{RUBY_FORGE_USER}@rubyforge.org's password: " - password = STDIN.gets.chomp - end - - login_response = Net::HTTP.start("rubyforge.org", 80) do |http| - data = [ - "login=1", - "form_loginname=#{RUBY_FORGE_USER}", - "form_pw=#{password}" - ].join("&") - http.post("/account/login.php", data) - end - - cookie = login_response["set-cookie"] - raise "Login failed" unless cookie - headers = { "Cookie" => cookie } - - release_uri = "http://rubyforge.org/frs/admin/?group_id=#{group_id}" - release_data = open(release_uri, headers) { |data| data.read } - package_id = release_data[/[?&]package_id=(\d+)/, 1] - raise "Couldn't get package id" unless package_id - - first_file = true - release_id = "" - - files.each do |filename| - basename = File.basename(filename) - file_ext = File.extname(filename) - file_data = File.open(filename, "rb") { |file| file.read } - - puts "Releasing #{basename}..." - - release_response = Net::HTTP.start("rubyforge.org", 80) do |http| - release_date = Time.now.strftime("%Y-%m-%d %H:%M") - type_map = { - ".zip" => "3000", - ".tgz" => "3110", - ".gz" => "3110", - ".gem" => "1400" - }; type_map.default = "9999" - type = type_map[file_ext] - boundary = "rubyqMY6QN9bp6e4kS21H4y0zxcvoor" - - query_hash = if first_file then - { - "group_id" => group_id, - "package_id" => package_id, - "release_name" => PKG_FILE_NAME, - "release_date" => release_date, - "type_id" => type, - "processor_id" => "8000", # Any - "release_notes" => "", - "release_changes" => "", - "preformatted" => "1", - "submit" => "1" - } - else - { - "group_id" => group_id, - "release_id" => release_id, - "package_id" => package_id, - "step2" => "1", - "type_id" => type, - "processor_id" => "8000", # Any - "submit" => "Add This File" - } - end - - query = "?" + query_hash.map do |(name, value)| - [name, URI.encode(value)].join("=") - end.join("&") - - data = [ - "--" + boundary, - "Content-Disposition: form-data; name=\"userfile\"; filename=\"#{basename}\"", - "Content-Type: application/octet-stream", - "Content-Transfer-Encoding: binary", - "", file_data, "" - ].join("\x0D\x0A") - - release_headers = headers.merge( - "Content-Type" => "multipart/form-data; boundary=#{boundary}" - ) - - target = first_file ? "/frs/admin/qrs.php" : "/frs/admin/editrelease.php" - http.post(target + query, data, release_headers) - end - - if first_file then - release_id = release_response.body[/release_id=(\d+)/, 1] - raise("Couldn't get release id") unless release_id - end - - first_file = false - end - end -end - +require 'rubygems' +require 'config.rb' + +require 'rake' +require 'rake/rdoctask' +require 'rake/testtask' +require 'rake/packagetask' +require 'rake/gempackagetask' +require 'rake/contrib/rubyforgepublisher' + +task :default => [:test] + +PKG_FILE_NAME = "#{CONFIG[:name]}-#{CONFIG[:version]}" +RUBY_FORGE_PROJECT = 'valuable' +RUBY_FORGE_USER = 'mustmodify' + +desc "Run unit tests" +Rake::TestTask.new("test") { |t| + t.pattern = 'test/*_test.rb' + t.verbose = true + t.warning = true +} + +desc 'clean temporary files, rdoc, and gem package' +task :clean => [:clobber_package, :clobber_rdoc] do + temp_filenames = File.join('**', '*.*~') + temp_files = Dir.glob(temp_filenames) + if temp_files.empty? + puts 'no temp files to delete' + else + puts "deleting #{temp_files.size} temp files" + end + + File.delete(*temp_files) +end + +desc 'Generate documentation for the Valuable plugin' +Rake::RDocTask.new(:rdoc) do |rdoc| + rdoc.title = 'Valuable - light weight modeling' + rdoc.options << '--line-numbers' + rdoc.options << '--inline-source' + rdoc.rdoc_files.include('README.markdown') + rdoc.rdoc_files.include('lib/**/*.rb') +end + +spec = Gem::Specification.new do |s| + s.name = CONFIG[:name] + s.version = CONFIG[:version] + s.platform = Gem::Platform::RUBY + s.summary = 'attr_accessor on steroids with defaults, constructor, and light casting.' + s.description = "Valuable is a ruby base class that is essentially attr_accessor on steroids. It intends to use a simple and intuitive interface, allowing you to get on with the logic specific to your application." + + s.files = FileList["{lib, test, examples}/**/*"].to_a + %w( README.markdown rakefile.rb ) + s.require_path = 'lib' + s.test_files = FileList["{test}/**/*test.rb"].to_a + s.has_rdoc = true + + s.rubyforge_project = RUBY_FORGE_PROJECT + s.author = 'Johnathon Wright' + s.email = 'jw@mustmodify.com' + s.homepage = 'http://www.github.com/mustmodify/valuable' +end + +Rake::GemPackageTask.new(spec) do |pkg| + #pkg.need_zip = true + #pkg.need_tar = true +end + +desc "Publish the API documentation" +task :pdoc => [:rdoc] do + Rake::RubyForgePublisher.new(RUBY_FORGE_PROJECT, RUBY_FORGE_USER).upload +end + +desc 'Publish the gem and API docs' +task :publish => [:pdoc, :rubyforge_upload] +