diff options
| author | technoweenie <technoweenie@567b1171-46fb-0310-a4c9-b4bef9110e78> | 2005-09-19 04:47:48 +0000 |
|---|---|---|
| committer | technoweenie <technoweenie@567b1171-46fb-0310-a4c9-b4bef9110e78> | 2005-09-19 04:47:48 +0000 |
| commit | c6b797a35a20d188d496e2bd2d2f99654afd5709 (patch) | |
| tree | 6199f0b4ca88a9c55cf746a7bcfd94d6068cdbdb | |
| parent | be856e0761734a29937e47d54af3f798fcc328f8 (diff) | |
first rubyforge release
git-svn-id: http://svn.techno-weenie.net/projects/acts_as_versioned@94 567b1171-46fb-0310-a4c9-b4bef9110e78
| -rw-r--r-- | CHANGELOG | 4 | ||||
| -rw-r--r-- | README | 13 | ||||
| -rw-r--r-- | Rakefile | 128 |
3 files changed, 134 insertions, 11 deletions
@@ -1,3 +1,7 @@ +*0.1.3* (18 Sep 2005) + +* First RubyForge release + *0.1.2* * check if module is already included when acts_as_versioned is called @@ -2,18 +2,19 @@ This library adds simple versioning to an ActiveRecord module. ActiveRecord is required. -== Download +== Install Gem installation: - gem install acts_as_versioned --source=http://techno-weenie.net/code + gem install acts_as_versioned -Get a gzipped tar at http://techno-weenie.net/code/pkg +Download: -== Usage + http://rubyforge.org/projects/ar-versioned/ -RDocs are online at http://techno-weenie.net/code/doc/acts_as_versioned/. Start with the -ActiveRecord::Acts::Versioned module. +== Documentation + +RDocs are online at http://ar-versioned.rubyforge.org Special thanks to Dreamer on ##rubyonrails for help in early testing. His ServerSideWiki (http://serversidewiki.com) was the first project to use acts_as_versioned <em>in the wild</em>.
\ No newline at end of file @@ -8,10 +8,12 @@ require 'rake/gempackagetask' require 'rake/testtask' require 'rake/contrib/rubyforgepublisher' -PKG_NAME = 'acts_as_versioned' -PKG_VERSION = '0.1.2' -PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" -PROD_HOST = "technoweenie@bidwell.textdrive.com" +PKG_NAME = 'acts_as_versioned' +PKG_VERSION = '0.1.3' +PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" +PROD_HOST = "technoweenie@bidwell.textdrive.com" +RUBY_FORGE_PROJECT = 'ar-versioned' +RUBY_FORGE_USER = 'technoweenie' for adapter in %w( mysql postgresql sqlite sqlite3 sqlserver sqlserver_odbc db2 oci ) Rake::TestTask.new("test_#{adapter}") do |t| @@ -63,7 +65,123 @@ end desc "Publish the API documentation" task :pdoc => [:rdoc] do Rake::SshDirPublisher.new(PROD_HOST, "public_html/code/doc/#{PKG_NAME}", "doc").upload + Rake::RubyForgePublisher.new(RUBY_FORGE_PROJECT, RUBY_FORGE_USER).upload end desc 'Publish the gem and API docs' -task :publish => [:pgem, :pdoc]
\ No newline at end of file +task :publish => [:pgem, :pdoc, :rubyforge_upload] + +desc "Publish the release files to RubyForge." +task :rubyforge_upload 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
\ No newline at end of file |
