lib/packnga/release-task.rb in packnga-0.9.0 vs lib/packnga/release-task.rb in packnga-0.9.1
- old
+ new
@@ -31,20 +31,28 @@
# @param [String] path of HTML files
attr_writer :index_html_dir
# This attribute is path of base directory of document.
# @param [String] path of base directory of document
attr_writer :base_dir
+ # This attribute is message when tagging in release.
+ # @param [String] message
+ attr_writer :tag_message
+ # This attribute is options for uploading rubyforge by rsync.
+ # @param [hash] options for uploading.
+ attr_writer :publish_options
# 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 [Jeweler::Task] spec created by Jeweler::Task.new.
def initialize(spec)
@spec = spec
@index_html_dir = nil
@rubyforge = nil
+ @tag_messsage = nil
+ @publish_options = nil
yield(self) if block_given?
set_default_values
define_tasks
end
@@ -58,10 +66,12 @@
end
def set_default_values
@index_html_dir ||= "doc/html"
@base_dir ||= Pathname.new("doc")
+ @tag_message ||= 'release #{version}!!!'
+ @publish_options ||= {}
end
def define_tasks
namespace :release do
define_info_task
@@ -113,11 +123,11 @@
def define_tag_task
desc "Tag the current revision."
task :tag do
version = @spec.version
- sh("git tag -a #{version} -m 'release #{version}!!!'")
+ sh("git tag -a #{version} -m '#{@tag_message}'")
end
end
def define_rubyforge_tasks
return if @spec.rubyforge_project.nil?
@@ -130,21 +140,21 @@
end
def define_reference_task
namespace :reference do
desc "Upload document to rubyforge."
- task :publish => [:generate, "reference:publication:prepare"] do
- rsync_to_rubyforge(@spec, "#{html_reference_dir}/", @spec.name)
+ 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}/", "")
+ rsync_to_rubyforge(@spec, "#{html_base_dir}/", "", @publish_options)
end
end
end
def define_publish_task
@@ -158,10 +168,17 @@
task :upload => "package" do
print "password:"
system("stty -echo")
@rubyforge.userconfig["password"] = STDIN.gets.chomp
system("stty echo")
+ 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
@@ -171,11 +188,13 @@
end
def rsync_to_rubyforge(spec, source, destination, options={})
host = "#{@rubyforge.userconfig["username"]}@rubyforge.org"
- rsync_args = "-av --dry-run --exclude '*.erb' --chmod=ug+w"
+ 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
end
end