lib/packnga/release-task.rb in packnga-0.9.5 vs lib/packnga/release-task.rb in packnga-0.9.6
- old
+ new
@@ -13,18 +13,14 @@
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-require "rubyforge"
-require "digest"
-
module Packnga
# This class creates release tasks.
#
# Release tasks tag current version and install gem for test.
- # It also define tasks to upload RubyForge whether option.
#
# @since 0.9.0
class ReleaseTask
include Rake::DSL
@@ -35,31 +31,20 @@
# @param [String] value path of base directory of document
attr_writer :base_dir
# This attribute is message when tagging in release.
# @param [String] value message
attr_writer :tag_message
- # This attribute is options for uploading RubyForge by rsync.
- # @param [Hash] value options for uploading.
- attr_writer :publish_options
- # This attribute is text for changes in new release
- # to post news to RubyForge.
- # @param [String] value text for changes.
- attr_writer :changes
# Defines task for preparing to release.
# Defined tasks update version and release-date in index files
# and tag in git.
- # If you set rubyforge_project of Jeweler::Task.new with its given block,
- # it also define tasks to update RubyForge.
# @param [Gem::Specification] spec specification for your package
def initialize(spec)
@spec = spec
@index_html_dir = nil
- @rubyforge = nil
@tag_messsage = nil
@publish_options = nil
@changes = nil
- @rubyforge_password = nil
yield(self) if block_given?
set_default_values
define_tasks
end
@@ -82,11 +67,10 @@
def define_tasks
namespace :release do
define_info_task
define_tag_task
- define_rubyforge_tasks
end
end
def define_info_task
namespace :info do
@@ -103,11 +87,11 @@
unless empty_options.empty?
raise ArgumentError, "Specify option(s) of #{empty_options.join(", ")}."
end
@index_html_dir = Pathname(@index_html_dir)
- indexes = [@index_html_dir + "index.html", @index_html_dir + "index.html.ja"]
+ indexes = [@index_html_dir + "index.html", @index_html_dir + "ja/index.html"]
indexes.each do |index|
content = replaced_content = File.read(index)
[[old_version, new_version],
[old_release_date, new_release_date]].each do |old, new|
replaced_content = replaced_content.gsub(/#{Regexp.escape(old)}/, new)
@@ -132,107 +116,9 @@
def define_tag_task
desc "Tag the current revision."
task :tag do
version = @spec.version
sh("git tag -a #{version} -m '#{@tag_message}'")
- end
- end
-
- def define_rubyforge_tasks
- return if @spec.rubyforge_project.nil?
- @rubyforge = RubyForge.new
- @uninitialized_password = Digest::SHA2.hexdigest(Time.now.to_f.to_s)
- @rubyforge.configure("password" => @uninitialized_password)
- define_reference_task
- define_html_task
- define_publish_task
- define_upload_tasks
- define_post_task
- end
-
- def define_reference_task
- namespace :reference do
- desc "Upload document to RubyForge."
- task :publish => "reference:publication:generate" do
- rsync_to_rubyforge(@spec, "#{html_reference_dir}/", @spec.name, @publish_options)
- end
- end
- end
-
- def define_html_task
- namespace :html do
- desc "Publish HTML to Web site."
- task :publish do
- rsync_to_rubyforge(@spec, "#{html_base_dir}/", "", @publish_options)
- end
- end
- end
-
- def define_publish_task
- desc "Upload document and HTML to RubyForge."
- task :publish => ["html:publish", "reference:publish"]
- end
-
- def define_upload_tasks
- namespace :rubyforge do
- desc "Upload tar.gz to RubyForge."
- task :upload => "package" do
- ensure_rubyforge_password
- if @rubyforge.autoconfig["group_ids"][@spec.rubyforge_project].nil?
- @rubyforge.scrape_config
- @rubyforge.save_autoconfig
- end
- if @rubyforge.autoconfig["package_ids"][@spec.name].nil?
- @rubyforge.create_package(@rubyforge.autoconfig["group_ids"][@spec.rubyforge_project], @spec.name)
- end
- @rubyforge.add_release(@spec.rubyforge_project,
- @spec.name,
- @spec.version.to_s,
- "pkg/#{@spec.name}-#{@spec.version}.tar.gz")
- end
- end
- desc "Release to RubyForge."
- task :rubyforge => "release:rubyforge:upload"
- end
-
- def define_post_task
- namespace :rubyforge do
- namespace :news do
- desc "Post news to RubyForge."
- task :post do
- ensure_rubyforge_password
- group_id =
- @rubyforge.autoconfig["group_ids"][@spec.rubyforge_project]
- subject =
- "#{@spec.name} version #{@spec.version} has been released!"
- body = @spec.description + "\nChanges:" + @changes
-
- if @rubyforge.post_news(group_id, subject, body).nil?
- raise "News couldn't be posted to RubyForge."
- end
- end
- end
- end
- end
-
- def rsync_to_rubyforge(spec, source, destination, options={})
- host = "#{@rubyforge.userconfig["username"]}@rubyforge.org"
-
- rsync_args = "-av --exclude '*.erb' --chmod=ug+w"
- rsync_args << " --group=#{spec.rubyforge_project}"
- rsync_args << " --delete" if options[:delete]
- rsync_args << " --dry-run" if options[:dryrun]
- remote_dir = "/var/www/gforge-projects/#{spec.rubyforge_project}/"
- sh("rsync #{rsync_args} #{source} #{host}:#{remote_dir}#{destination}")
- end
-
- def ensure_rubyforge_password
- if @rubyforge.userconfig["password"] == @uninitialized_password
- print "password:"
- system("stty -echo")
- @rubyforge.userconfig["password"] = STDIN.gets.chomp
- system("stty echo")
- puts
end
end
end
end