Publish plugin for hoe.
| announce | Create news email file and post to rubyforge. |
| debug_email | Generate email announcement file. |
| post_blog | Post announcement to blog. |
| post_news | Post announcement to rubyforge. |
| publish_docs | |
| ridocs | Generate ri locally for testing. |
| publish_on_announce | Run publish_docs when you run release. |
| blogs | An array of hashes of blog settings. |
Optional: Should RDoc and ri generation tasks be defined? [default: true]
Allows you to define custom RDoc tasks then use the publish_rdoc task to upload them all. See also local_rdoc_dir
Define tasks for plugin.
# File lib/hoe/publish.rb, line 97
97: def define_publish_tasks
98: if need_rdoc then
99: Rake::RDocTask.new(:docs) do |rd|
100: rd.main = readme_file
101: rd.options << '-d' if (`which dot` =~ /\/dot/) unless
102: ENV['NODOT'] || Hoe::WINDOZE
103: rd.rdoc_dir = 'doc'
104:
105: rd.rdoc_files += spec.require_paths
106: rd.rdoc_files += spec.extra_rdoc_files
107:
108: title = spec.rdoc_options.grep(/^(-t|--title)=?$/).first
109:
110: if title then
111: rd.options << title
112:
113: unless title =~ /\=/ then # for ['-t', 'title here']
114: title_index = spec.rdoc_options.index(title)
115: rd.options << spec.rdoc_options[title_index + 1]
116: end
117: else
118: title = "#{name}-#{version} Documentation"
119: title = "#{rubyforge_name}'s " + title if rubyforge_name != name
120: rd.options << '--title' << title
121: end
122: end
123:
124: desc 'Generate ri locally for testing.'
125: task :ridocs => :clean do
126: sh %{ rdoc --ri -o ri . }
127: end
128: end
129:
130: desc "Publish RDoc to wherever you want."
131: task :publish_docs => [:clean, :docs] do
132: warn "no rdoc_location values" if rdoc_locations.empty?
133: self.rdoc_locations.each do |dest|
134: sh %{rsync #{rsync_args} #{local_rdoc_dir}/ #{dest}}
135: end
136: end
137:
138: # no doco for this one
139: task :publish_on_announce do
140: with_config do |config, _|
141: Rake::Task['publish_docs'].invoke if config["publish_on_announce"]
142: end
143: end
144:
145: desc 'Generate email announcement file.'
146: task :debug_email do
147: puts generate_email
148: end
149:
150: desc 'Post announcement to blog.'
151: task :post_blog do
152: require 'xmlrpc/client'
153:
154: with_config do |config, path|
155: break unless config['blogs']
156:
157: subject, title, body, urls = announcement
158: body += "\n\n#{urls}"
159:
160: config['blogs'].each do |site|
161: server = XMLRPC::Client.new2(site['url'])
162: content = site['extra_headers'].merge(:title => title,
163: :description => body,
164: :categories => blog_categories)
165:
166: result = server.call('metaWeblog.newPost',
167: site['blog_id'],
168: site['user'],
169: site['password'],
170: content,
171: true)
172: end
173: end
174: end
175:
176: desc 'Post announcement to rubyforge.'
177: task :post_news do
178: require 'rubyforge'
179: subject, title, body, urls = announcement
180:
181: rf = RubyForge.new.configure
182: rf.login
183: rf.post_news(rubyforge_name, subject, "#{title}\n\n#{body}")
184: puts "Posted to rubyforge"
185: end
186:
187: desc 'Announce your release.'
188: task :announce => [:post_blog, :publish_on_announce ]
189: end
# File lib/hoe/publish.rb, line 191
191: def generate_email full = nil
192: require 'time'
193:
194: abort "No email 'to' entry. Run `rake config_hoe` to fix." unless
195: !full || email_to
196:
197: from_name, from_email = author.first, email.first
198: subject, title, body, urls = announcement
199:
200: [
201: full && "From: #{from_name} <#{from_email}>",
202: full && "To: #{email_to.join(", ")}",
203: full && "Date: #{Time.now.rfc2822}",
204: "Subject: [ANN] #{subject}",
205: "", title,
206: "", urls,
207: "", body,
208: ].compact.join("\n")
209: end
Initialize variables for plugin.
# File lib/hoe/publish.rb, line 85
85: def initialize_publish
86: self.blog_categories ||= [self.name]
87: self.local_rdoc_dir ||= 'doc'
88: self.need_rdoc ||= true
89: self.rdoc_locations ||= []
90: self.remote_rdoc_dir ||= self.name
91: self.rsync_args ||= '-av --delete'
92: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.