def define_publish_tasks
if need_rdoc then
dependency "rdoc", "~> 3.10", :developer
unless defined? RDoc::Task then
begin
gem 'rdoc'
rescue Gem::LoadError
p $!
end unless Object.const_defined? :RDoc
begin
require 'rdoc/task'
rescue LoadError
require 'rake/rdoctask'
end
end
RDoc::Task.new(:docs) do |rd|
rd.main = readme_file
rd.options << '-d' if (`which dot` =~ /\/dot/) unless
ENV['NODOT'] || Hoe::WINDOZE
rd.rdoc_dir = local_rdoc_dir
rd.rdoc_files += spec.require_paths
rd.rdoc_files += spec.extra_rdoc_files
title = spec.rdoc_options.grep(/^(-t|--title)=?$/).first
if title then
rd.options << title
unless title =~ /\=/ then
title_index = spec.rdoc_options.index(title)
rd.options << spec.rdoc_options[title_index + 1]
end
else
title = "#{name}-#{version} Documentation"
title = "#{rubyforge_name}'s " + title if rubyforge_name != name
rd.options << '--title' << title
end
end
desc 'Generate ri locally for testing.'
task :ridocs => :clean do
sh %q{ rdoc --ri -o ri . }
end
RDoc::Task.new(:dcov) do |rd|
rd.options << '-C'
rd.rdoc_files += spec.require_paths
rd.rdoc_files += spec.extra_rdoc_files
end
task(:redcov).clear
task(:clobber_dcov).clear
task :docs do
Dir.chdir local_rdoc_dir do
sh "chmod -R g+w ."
end
end
end
desc "Publish RDoc to wherever you want."
task :publish_docs => [:clean, :docs] do
warn "no rdoc_location values" if rdoc_locations.empty?
self.rdoc_locations.each do |dest|
sh %{rsync #{rsync_args} #{local_rdoc_dir}/ #{dest}}
end
end
task :publish_on_announce do
with_config do |config, _|
Rake::Task['publish_docs'].invoke if config["publish_on_announce"]
end
end
desc 'Generate email announcement file.'
task :debug_email do
puts generate_email
end
desc 'Post announcement to blog.'
task :post_blog do
require 'xmlrpc/client'
with_config do |config, path|
break unless config['blogs']
_, title, body, urls = announcement
body += "\n\n#{urls}"
config['blogs'].each do |site|
server = XMLRPC::Client.new2(site['url'])
content = site['extra_headers'].merge(:title => title,
:description => body,
:categories => blog_categories)
server.call('metaWeblog.newPost',
site['blog_id'],
site['user'],
site['password'],
content,
true)
end
end
end
desc 'Announce your release.'
task :announce => [:post_blog, :publish_on_announce ]
end