hoe 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +11 -0
- data/README.txt +1 -1
- data/Rakefile +3 -0
- data/lib/hoe.rb +88 -16
- data/test/test_hoe.rb +5 -1
- metadata +6 -6
data/History.txt
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
= 1.0.5 2006-10-03
|
2
|
+
|
3
|
+
* Doco cleanup.
|
4
|
+
* Removed Manifest.txt from rdoc and added title.
|
5
|
+
* Added changeset support.
|
6
|
+
* Added spec_extras for easy gemspec attribute setting.
|
7
|
+
* Added release_notes, changeset setting for releases.
|
8
|
+
* Added paragraphs_of utility method.
|
9
|
+
* Added email and rubyforge news announcement tasks.
|
10
|
+
* Url attribute may now be an array of urls.
|
11
|
+
|
1
12
|
= 1.0.4 2006-09-23
|
2
13
|
|
3
14
|
* Damnit... I messed up. There is no rubygems gem to be dependent upon. Duh.
|
data/README.txt
CHANGED
data/Rakefile
CHANGED
@@ -5,6 +5,9 @@ require './lib/hoe.rb'
|
|
5
5
|
Hoe.new("hoe", Hoe::VERSION) do |p|
|
6
6
|
p.rubyforge_name = "seattlerb"
|
7
7
|
p.summary = "Hoe is a way to write Rakefiles much easier and cleaner."
|
8
|
+
p.description = p.paragraphs_of('README.txt', 2..5).join("\n\n")
|
9
|
+
p.url = p.paragraphs_of('README.txt', 0).first.split(/\n/)[1..-1]
|
10
|
+
p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
|
8
11
|
end
|
9
12
|
|
10
13
|
# vim: syntax=Ruby
|
data/lib/hoe.rb
CHANGED
@@ -50,21 +50,26 @@ require 'rbconfig'
|
|
50
50
|
#
|
51
51
|
# The attributes that you can provide inside the new block above are:
|
52
52
|
#
|
53
|
-
# ==== Mandatory
|
53
|
+
# ==== Mandatory
|
54
|
+
#
|
55
|
+
# * name - The name of the release.
|
56
|
+
# * version - The version. Don't hardcode! use a constant in the project.
|
57
|
+
#
|
58
|
+
# ==== Damn Good to Set
|
54
59
|
#
|
55
60
|
# * author - The author of the package. (can be array of authors)
|
61
|
+
# * changes - A description of the release's latest changes.
|
56
62
|
# * description - A description of the project.
|
57
|
-
# * email - The author's email address.
|
58
|
-
# * name - The name of the release.
|
63
|
+
# * email - The author's email address. (can be array of urls)
|
59
64
|
# * summary - A short summary of the project.
|
60
65
|
# * url - The url of the project.
|
61
|
-
# * version - The version. Don't hardcode! use a constant in the project.
|
62
66
|
#
|
63
67
|
# ==== Optional
|
64
68
|
#
|
65
69
|
# * clean_globs - An array of file patterns to delete on clean.
|
66
70
|
# * extra_deps - An array of rubygem dependencies.
|
67
71
|
# * rubyforge_name - The name of the rubyforge project. [default: name.downcase]
|
72
|
+
# * spec_extras - A hash of extra values to set in the gemspec.
|
68
73
|
#
|
69
74
|
# === Environment Variables
|
70
75
|
#
|
@@ -74,7 +79,7 @@ require 'rbconfig'
|
|
74
79
|
# * FILTER - Used to add flags to test_unit (e.g., -n test_borked)
|
75
80
|
|
76
81
|
class Hoe
|
77
|
-
VERSION = '1.0.
|
82
|
+
VERSION = '1.0.5'
|
78
83
|
|
79
84
|
rubyprefix = Config::CONFIG['prefix']
|
80
85
|
sitelibdir = Config::CONFIG['sitelibdir']
|
@@ -91,7 +96,7 @@ class Hoe
|
|
91
96
|
(RUBY_DEBUG ? " #{RUBY_DEBUG}" : '')
|
92
97
|
FILTER = ENV['FILTER'] # for tests (eg FILTER="-n test_blah")
|
93
98
|
|
94
|
-
attr_accessor :author, :bin_files, :clean_globs, :description, :email, :extra_deps, :lib_files, :name, :rubyforge_name, :spec, :summary, :test_files, :url, :version
|
99
|
+
attr_accessor :author, :bin_files, :changes, :clean_globs, :description, :email, :extra_deps, :lib_files, :name, :rubyforge_name, :spec, :spec_extras, :summary, :test_files, :url, :version
|
95
100
|
|
96
101
|
def initialize(name, version)
|
97
102
|
self.name = name
|
@@ -102,16 +107,18 @@ class Hoe
|
|
102
107
|
self.url = "http://www.zenspider.com/ZSS/Products/#{name}/"
|
103
108
|
self.author = "Ryan Davis"
|
104
109
|
self.email = "ryand-ruby@zenspider.com"
|
105
|
-
self.clean_globs = %w(diff diff.txt demo.rb ri *.gem **/*~)
|
110
|
+
self.clean_globs = %w(diff diff.txt demo.rb email.txt ri *.gem **/*~)
|
111
|
+
self.changes = "#{author} is too lazy to write a changeset"
|
106
112
|
self.description = "#{author} is too lazy to write a description"
|
107
113
|
self.summary = "#{author} is too lazy to write a summary"
|
108
114
|
self.extra_deps = []
|
115
|
+
self.spec_extras = {}
|
109
116
|
|
110
117
|
if name == 'hoe' then
|
111
118
|
extra_deps << ['rake']
|
112
|
-
extra_deps << ['rubyforge']
|
119
|
+
extra_deps << ['rubyforge', '>= 0.3.0']
|
113
120
|
else
|
114
|
-
extra_deps << ['hoe']
|
121
|
+
extra_deps << ['hoe', ">= #{VERSION}"]
|
115
122
|
end
|
116
123
|
|
117
124
|
yield self if block_given?
|
@@ -147,7 +154,7 @@ class Hoe
|
|
147
154
|
s.author = author
|
148
155
|
end
|
149
156
|
s.email = email
|
150
|
-
s.homepage = url
|
157
|
+
s.homepage = Array(url).first
|
151
158
|
s.rubyforge_project = rubyforge_name
|
152
159
|
|
153
160
|
s.description = description
|
@@ -156,6 +163,10 @@ class Hoe
|
|
156
163
|
s.add_dependency(*dep)
|
157
164
|
end
|
158
165
|
|
166
|
+
spec_extras.each do |msg, val|
|
167
|
+
s.send "#{msg}=", val
|
168
|
+
end
|
169
|
+
|
159
170
|
s.files = File.read("Manifest.txt").split
|
160
171
|
s.executables = s.files.grep(/bin/) { |f| File.basename(f) }
|
161
172
|
|
@@ -216,6 +227,12 @@ class Hoe
|
|
216
227
|
rf = RubyForge.new
|
217
228
|
puts "Logging in"
|
218
229
|
rf.login
|
230
|
+
|
231
|
+
c = rf.config
|
232
|
+
c["release_notes"] = description if description
|
233
|
+
c["release_changes"] = changes if changes
|
234
|
+
c["preformatted"] = true
|
235
|
+
|
219
236
|
puts "Releasing #{name} v. #{version} tarball"
|
220
237
|
release_id = rf.add_release rubyforge_name, name, version, "#{pkg}.tgz"
|
221
238
|
if release_id then
|
@@ -232,9 +249,16 @@ class Hoe
|
|
232
249
|
|
233
250
|
Rake::RDocTask.new(:docs) do |rd|
|
234
251
|
rd.main = "README.txt"
|
235
|
-
rd.options << '-d' if `which dot` =~ /\/dot/
|
252
|
+
rd.options << '-d' if RUBY_PLATFORM !~ /win32/ and `which dot` =~ /\/dot/
|
236
253
|
rd.rdoc_dir = 'doc'
|
237
|
-
|
254
|
+
files = spec.files.grep(/^(lib|bin)|txt$/)
|
255
|
+
files -= ['Manifest.txt']
|
256
|
+
rd.rdoc_files.push(*files)
|
257
|
+
|
258
|
+
title = "#{name}-#{version} Documentation"
|
259
|
+
title = "#{rubyforge_name}'s " + title if rubyforge_name != title
|
260
|
+
|
261
|
+
rd.options << "-t #{title}"
|
238
262
|
end
|
239
263
|
|
240
264
|
desc "Generate ri locally for testing"
|
@@ -279,21 +303,69 @@ class Hoe
|
|
279
303
|
rm_rf files unless files.empty?
|
280
304
|
end
|
281
305
|
end
|
306
|
+
|
307
|
+
desc 'Generate email announcement file.'
|
308
|
+
task :email do
|
309
|
+
require 'rubyforge'
|
310
|
+
subject, body = announcement
|
311
|
+
|
312
|
+
File.open("email.txt", "w") do |mail|
|
313
|
+
mail.puts subject
|
314
|
+
mail.puts
|
315
|
+
mail.puts body
|
316
|
+
end
|
317
|
+
puts "Created email.txt"
|
318
|
+
end
|
319
|
+
|
320
|
+
desc 'Post announcement to rubyforge.'
|
321
|
+
task :post_news do
|
322
|
+
require 'rubyforge'
|
323
|
+
subject, body = announcement
|
324
|
+
|
325
|
+
rf = RubyForge.new
|
326
|
+
rf.login
|
327
|
+
rf.post_news(rubyforge_name, subject, body)
|
328
|
+
puts "Posted to rubyforge"
|
329
|
+
end
|
330
|
+
|
331
|
+
desc 'Generate email announcement file and post to rubyforge.'
|
332
|
+
task :announce => [:email, :post_news]
|
333
|
+
|
282
334
|
end # end define
|
283
335
|
|
284
|
-
def
|
336
|
+
def announcement
|
337
|
+
urls = " " + Array(url).map {|s| s.strip}.join("\n ")
|
338
|
+
|
339
|
+
subject = "Subject: #{name} #{version} Released"
|
340
|
+
body = "#{name} version #{version} has been released!\n\n#{urls}\n\n#{description}\n\nChanges:\n\n#{changes}\n\n#{urls}\n"
|
341
|
+
|
342
|
+
return subject, body
|
343
|
+
end
|
344
|
+
|
345
|
+
def run_tests(multi=false) # :nodoc:
|
285
346
|
msg = multi ? :sh : :ruby
|
286
347
|
cmd = if test ?f, 'test/test_all.rb' then
|
287
348
|
"#{RUBY_FLAGS} test/test_all.rb #{FILTER}"
|
288
349
|
else
|
289
|
-
tests = (Dir.glob("test/**/test_*.rb") + ['test/unit']).map { |f|
|
290
|
-
|
291
|
-
|
350
|
+
tests = ((Dir.glob("test/**/test_*.rb") + ['test/unit']).map { |f|
|
351
|
+
"require \"#{f}\""
|
352
|
+
})
|
292
353
|
"#{RUBY_FLAGS} -e '#{tests.join("; ")}' #{FILTER}"
|
293
354
|
end
|
294
355
|
cmd = "multiruby #{cmd}" if multi
|
295
356
|
send msg, cmd
|
296
357
|
end
|
358
|
+
|
359
|
+
##
|
360
|
+
# Reads a file at +path+ and spits out an array of the +paragraphs+ specified
|
361
|
+
#
|
362
|
+
# changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
|
363
|
+
# summary, *description = p.paragraphs_of('Readme.txt', 3, 3..8)
|
364
|
+
|
365
|
+
def paragraphs_of(path, *paragraphs)
|
366
|
+
file = File.read(path)
|
367
|
+
file.split(/\n\n+/).values_at(*paragraphs)
|
368
|
+
end
|
297
369
|
end
|
298
370
|
|
299
371
|
class ::Rake::SshDirPublisher # :nodoc:
|
data/test/test_hoe.rb
CHANGED
@@ -9,9 +9,13 @@ class TestHoe < Test::Unit::TestCase
|
|
9
9
|
Rake.application.clear
|
10
10
|
end
|
11
11
|
|
12
|
+
##
|
13
|
+
# Yes, these tests suck, but it is damn hard to test this since
|
14
|
+
# everything is forked out.
|
15
|
+
|
12
16
|
def test_basics
|
13
17
|
boring = %w(clobber clobber_docs clobber_package doc doc/index.html pkg pkg/blah-1.0.0 pkg/blah-1.0.0.gem pkg/blah-1.0.0.tgz redocs repackage)
|
14
|
-
expected = %w(audit clean debug_gem default docs gem install multi package publish_docs release ridocs test uninstall)
|
18
|
+
expected = %w(audit announce clean debug_gem default docs email gem install multi package post_news publish_docs release ridocs test uninstall)
|
15
19
|
expected += boring
|
16
20
|
|
17
21
|
Hoe.new('blah', '1.0.0')
|
metadata
CHANGED
@@ -3,16 +3,16 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: hoe
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.0.
|
7
|
-
date: 2006-
|
6
|
+
version: 1.0.5
|
7
|
+
date: 2006-10-03 00:00:00 -07:00
|
8
8
|
summary: Hoe is a way to write Rakefiles much easier and cleaner.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
11
11
|
- test
|
12
12
|
email: ryand-ruby@zenspider.com
|
13
|
-
homepage: http://
|
13
|
+
homepage: " http://rubyforge.org/projects/seattlerb/"
|
14
14
|
rubyforge_project: seattlerb
|
15
|
-
description:
|
15
|
+
description: "Hoe is a simple rake/rubygems helper for project Rakefiles. It generates all the usual tasks for projects including rdoc generation, testing, packaging, and deployment. Tasks Provided: * audit - Run ZenTest against the package * clean - Clean up all the extras * debug_gem - Show information about the gem * default - Run the default tasks * docs - Build the docs HTML Files * install - Install the package. Uses PREFIX and RUBYLIB * multi - Run the test suite using multiruby * package - Build all the packages * publish_docs - Publish RDoc to RubyForge * release - Package and upload the release to RubyForge * test - Run the test suite. Use FILTER to add to the command line. * uninstall - Uninstall the package. * upload - Upload RDoc to RubyForge See class rdoc for help. Hint: ri Hoe"
|
16
16
|
autorequire:
|
17
17
|
default_executable:
|
18
18
|
bindir: bin
|
@@ -63,7 +63,7 @@ dependencies:
|
|
63
63
|
version_requirement:
|
64
64
|
version_requirements: !ruby/object:Gem::Version::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
68
|
+
version: 0.3.0
|
69
69
|
version:
|