echoe 1.3 → 1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +3 -2
- data/lib/echoe.rb +26 -96
- metadata +3 -3
data/CHANGELOG
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
|
2
|
+
1.4. auto-detect readme file; make rdoc default pattern compatible with manifest generator; fix publish_docs task; use env var for rdoc template if available
|
2
3
|
1.3. avoid rubyforge gem multi-activation conflict
|
3
4
|
1.2. build_manifest Rake task
|
4
|
-
1.1.
|
5
|
-
1.0.0.
|
5
|
+
1.1. sane error messages on releasing new or duplicate gems; allow Manifest to not end in .txt
|
6
|
+
1.0.0. fork from Hoe
|
6
7
|
|
data/lib/echoe.rb
CHANGED
@@ -62,12 +62,12 @@ require 'rbconfig'
|
|
62
62
|
# * name - The name of the release.
|
63
63
|
# * version - The version. Don't hardcode! use a constant in the project.
|
64
64
|
#
|
65
|
-
# ====
|
65
|
+
# ==== Good to Set
|
66
66
|
#
|
67
|
-
# * author - The author of the package.
|
67
|
+
# * author - The author of the package.
|
68
68
|
# * changes - A description of the release's latest changes.
|
69
69
|
# * description - A description of the project.
|
70
|
-
# * email - The author's email address.
|
70
|
+
# * email - The author's email address.
|
71
71
|
# * summary - A short summary of the project.
|
72
72
|
# * url - The url of the project.
|
73
73
|
#
|
@@ -78,6 +78,7 @@ require 'rbconfig'
|
|
78
78
|
# * need_tar - Should package create a tarball? [default: true]
|
79
79
|
# * need_zip - Should package create a zipfile? [default: false]
|
80
80
|
# * rdoc_pattern - A regexp to match documentation files against the manifest.
|
81
|
+
# * rdoc_template - Path to an external rdoc template file
|
81
82
|
# * rubyforge_name - The name of the rubyforge project. [default: name.downcase]
|
82
83
|
# * spec_extras - A hash of extra values to set in the gemspec.
|
83
84
|
# * test_globs - An array of test file patterns [default: test/**/test_*.rb]
|
@@ -105,7 +106,7 @@ class Echoe
|
|
105
106
|
"-w -I#{%w(lib ext bin test).join(File::PATH_SEPARATOR)}" +
|
106
107
|
(RUBY_DEBUG ? " #{RUBY_DEBUG}" : '')
|
107
108
|
FILTER = ENV['FILTER'] # for tests (eg FILTER="-n test_blah")
|
108
|
-
attr_accessor :author, :bin_files, :changes, :clean_globs, :description, :email, :extra_deps, :lib_files, :name, :need_tar, :need_tar_gz, :need_zip, :rdoc_pattern, :rubyforge_name, :spec, :spec_extras, :summary, :test_files, :test_globs, :url, :version, :tar_extension #, :tar_separator, :zip_separator
|
109
|
+
attr_accessor :author, :bin_files, :changes, :clean_globs, :description, :email, :extra_deps, :lib_files, :name, :need_tar, :need_tar_gz, :need_zip, :rdoc_pattern, :rubyforge_name, :spec, :spec_extras, :summary, :test_files, :test_globs, :url, :version, :tar_extension, :rdoc_template #, :tar_separator, :zip_separator
|
109
110
|
|
110
111
|
def initialize(name, version)
|
111
112
|
self.name = name
|
@@ -121,7 +122,7 @@ class Echoe
|
|
121
122
|
self.changes = ""
|
122
123
|
self.description = ""
|
123
124
|
self.summary = ""
|
124
|
-
self.rdoc_pattern = /^(lib|bin)|txt$/
|
125
|
+
self.rdoc_pattern = /^(\.\/|)(lib|bin|tasks)|README|CHANGELOG|LICENSE|txt$/
|
125
126
|
self.extra_deps = []
|
126
127
|
self.spec_extras = {}
|
127
128
|
self.need_tar = true
|
@@ -167,12 +168,7 @@ class Echoe
|
|
167
168
|
s.name = name
|
168
169
|
s.version = version
|
169
170
|
s.summary = summary
|
170
|
-
|
171
|
-
when Array
|
172
|
-
s.authors = author
|
173
|
-
else
|
174
|
-
s.author = author
|
175
|
-
end
|
171
|
+
s.author = Array(author).join(", ")
|
176
172
|
s.email = email
|
177
173
|
s.homepage = Array(url).first
|
178
174
|
s.rubyforge_project = rubyforge_name
|
@@ -183,8 +179,7 @@ class Echoe
|
|
183
179
|
s.add_dependency(*dep)
|
184
180
|
end
|
185
181
|
|
186
|
-
manifest =
|
187
|
-
manifest += ".txt" if File.exist? "Manifest.txt"
|
182
|
+
manifest = File.exist?('Manifest.txt') ? 'Manifest.txt' : 'Manifest'
|
188
183
|
begin
|
189
184
|
s.files = File.read(manifest).split
|
190
185
|
rescue Errno::ENOENT
|
@@ -197,7 +192,7 @@ class Echoe
|
|
197
192
|
s.require_paths = dirs unless dirs.empty?
|
198
193
|
s.has_rdoc = true
|
199
194
|
|
200
|
-
if
|
195
|
+
if File.exist? "test/test_all.rb"
|
201
196
|
s.test_file = "test/test_all.rb"
|
202
197
|
else
|
203
198
|
s.test_files = Dir[*test_globs]
|
@@ -229,21 +224,8 @@ class Echoe
|
|
229
224
|
pkg.need_zip = @need_zip
|
230
225
|
end
|
231
226
|
|
232
|
-
desc 'Install the package. Uses PREFIX and RUBYLIB'
|
233
|
-
task :install do
|
234
|
-
[
|
235
|
-
[lib_files + test_files, RUBYLIB, 0444],
|
236
|
-
[bin_files, File.join(PREFIX, 'bin'), 0555]
|
237
|
-
].each do |files, dest, mode|
|
238
|
-
FileUtils.mkdir_p dest unless test ?d, dest
|
239
|
-
files.each do |file|
|
240
|
-
install file, dest, :mode => mode
|
241
|
-
end
|
242
|
-
end
|
243
|
-
end
|
244
|
-
|
245
227
|
desc 'Install the package as a gem'
|
246
|
-
task :
|
228
|
+
task :install => [:clean, :package] do
|
247
229
|
sh "sudo gem install pkg/*.gem"
|
248
230
|
end
|
249
231
|
|
@@ -259,7 +241,7 @@ class Echoe
|
|
259
241
|
|
260
242
|
desc 'Package and upload the release to rubyforge.'
|
261
243
|
task :release => [:clean, :package] do |t|
|
262
|
-
v = ENV["VERSION"] or abort "Must supply VERSION=x
|
244
|
+
v = ENV["VERSION"] or abort "Must supply VERSION=x"
|
263
245
|
abort "Versions don't match #{v} vs #{version}" if v != version
|
264
246
|
|
265
247
|
gem 'rubyforge', '>= 0.4.0'
|
@@ -283,7 +265,7 @@ class Echoe
|
|
283
265
|
c = rf.userconfig
|
284
266
|
c["release_notes"] = description if description
|
285
267
|
c["release_changes"] = changes if changes
|
286
|
-
c["preformatted"] =
|
268
|
+
c["preformatted"] = false
|
287
269
|
|
288
270
|
files = [(@need_tar ? pkg_tar : nil),
|
289
271
|
(@need_tar_gz ? pkg_tar_gz : nil),
|
@@ -303,17 +285,22 @@ class Echoe
|
|
303
285
|
############################################################
|
304
286
|
# Doco
|
305
287
|
|
306
|
-
Rake::RDocTask.new(:docs) do |rd|
|
307
|
-
rd.main =
|
288
|
+
Rake::RDocTask.new(:docs) do |rd|
|
289
|
+
rd.main = Dir['*'].detect {|f| f =~ /^readme/i}
|
308
290
|
rd.options << '-d' if RUBY_PLATFORM !~ /win32/ and `which dot` =~ /\/dot/
|
291
|
+
rd.options << '--line-numbers' << '--inline-source'
|
309
292
|
rd.rdoc_dir = 'doc'
|
310
293
|
files = spec.files.grep(rdoc_pattern)
|
311
294
|
files -= ['Manifest.txt', 'Manifest']
|
312
|
-
rd.rdoc_files.push
|
295
|
+
rd.rdoc_files.push *files
|
313
296
|
|
314
|
-
|
315
|
-
|
297
|
+
if rdoc_template
|
298
|
+
rd.template = rdoc_template
|
299
|
+
elsif ENV['RDOC_TEMPLATE'] and File.exist? ENV['RDOC_TEMPLATE']
|
300
|
+
rd.template = ENV['RDOC_TEMPLATE']
|
301
|
+
end
|
316
302
|
|
303
|
+
title = name.capitalize if name.downcase == name
|
317
304
|
rd.options << "-t #{title}"
|
318
305
|
end
|
319
306
|
|
@@ -324,7 +311,7 @@ class Echoe
|
|
324
311
|
|
325
312
|
desc 'Publish RDoc to RubyForge'
|
326
313
|
task :publish_docs => [:clean, :docs] do
|
327
|
-
config = YAML.load(File.read(File.expand_path("~/.rubyforge/config.yml")))
|
314
|
+
config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
|
328
315
|
user = "#{config["username"]}@rubyforge.org"
|
329
316
|
project = "/var/www/gforge-projects/#{rubyforge_name}"
|
330
317
|
project += "/#{name}" if rubyforge_name != name
|
@@ -342,16 +329,12 @@ class Echoe
|
|
342
329
|
end
|
343
330
|
pub.upload
|
344
331
|
end
|
332
|
+
|
333
|
+
task :doc => [:docs]
|
345
334
|
|
346
335
|
############################################################
|
347
336
|
# Misc/Maintenance:
|
348
|
-
|
349
|
-
desc 'Run ZenTest against the package'
|
350
|
-
task :audit do
|
351
|
-
libs = %w(lib test).join(File::PATH_SEPARATOR)
|
352
|
-
sh "zentest -I=#{libs} #{spec.files.grep(/^(lib|test)/).join(' ')}"
|
353
|
-
end
|
354
|
-
|
337
|
+
|
355
338
|
desc 'Clean up all the extras'
|
356
339
|
task :clean => [ :clobber_docs, :clobber_package ] do
|
357
340
|
clean_globs.each do |pattern|
|
@@ -360,39 +343,6 @@ class Echoe
|
|
360
343
|
end
|
361
344
|
end
|
362
345
|
|
363
|
-
desc 'Generate email announcement file.'
|
364
|
-
task :email do
|
365
|
-
require 'rubyforge'
|
366
|
-
subject, title, body, urls = announcement
|
367
|
-
|
368
|
-
File.open("email.txt", "w") do |mail|
|
369
|
-
mail.puts "Subject: [ANN] #{subject}"
|
370
|
-
mail.puts
|
371
|
-
mail.puts title
|
372
|
-
mail.puts
|
373
|
-
mail.puts urls
|
374
|
-
mail.puts
|
375
|
-
mail.puts body
|
376
|
-
mail.puts
|
377
|
-
mail.puts urls
|
378
|
-
end
|
379
|
-
puts "Created email.txt"
|
380
|
-
end
|
381
|
-
|
382
|
-
desc 'Post announcement to rubyforge.'
|
383
|
-
task :post_news do
|
384
|
-
require 'rubyforge'
|
385
|
-
subject, title, body, urls = announcement
|
386
|
-
|
387
|
-
rf = RubyForge.new
|
388
|
-
rf.login
|
389
|
-
rf.post_news(rubyforge_name, subject, "#{title}\n\n#{body}")
|
390
|
-
puts "Posted to rubyforge"
|
391
|
-
end
|
392
|
-
|
393
|
-
desc 'Generate email announcement file and post to rubyforge.'
|
394
|
-
task :announce => [:email, :post_news]
|
395
|
-
|
396
346
|
desc "Verify the manifest"
|
397
347
|
task :check_manifest => :clean do
|
398
348
|
f = "Manifest.tmp"
|
@@ -429,16 +379,6 @@ class Echoe
|
|
429
379
|
end
|
430
380
|
end # end define
|
431
381
|
|
432
|
-
def announcement
|
433
|
-
urls = " " + Array(url).map {|s| s.strip}.join("\n ")
|
434
|
-
|
435
|
-
subject = "#{name} #{version} Released"
|
436
|
-
title = "#{name} version #{version} has been released!"
|
437
|
-
body = "#{description}\n\nChanges:\n\n#{changes}"
|
438
|
-
|
439
|
-
return subject, title, body, urls
|
440
|
-
end
|
441
|
-
|
442
382
|
def run_tests(multi=false) # :nodoc:
|
443
383
|
msg = multi ? :sh : :ruby
|
444
384
|
cmd = if test ?f, 'test/test_all.rb' then
|
@@ -452,16 +392,6 @@ class Echoe
|
|
452
392
|
send msg, cmd
|
453
393
|
end
|
454
394
|
|
455
|
-
##
|
456
|
-
# Reads a file at +path+ and spits out an array of the +paragraphs+ specified
|
457
|
-
#
|
458
|
-
# changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
|
459
|
-
# summary, *description = p.paragraphs_of('Readme.txt', 3, 3..8)
|
460
|
-
|
461
|
-
def paragraphs_of(path, *paragraphs)
|
462
|
-
file = File.read(path)
|
463
|
-
file.split(/\n\n+/).values_at(*paragraphs)
|
464
|
-
end
|
465
395
|
end
|
466
396
|
|
467
397
|
class ::Rake::SshDirPublisher # :nodoc:
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.4
|
3
3
|
specification_version: 1
|
4
4
|
name: echoe
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: "1.
|
7
|
-
date: 2007-
|
6
|
+
version: "1.4"
|
7
|
+
date: 2007-08-02 00:00:00 -04:00
|
8
8
|
summary: Echoe is a simple packaging tool for working with rubygems.
|
9
9
|
require_paths:
|
10
10
|
- lib
|