hoe 2.14.0 → 2.15.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/History.txt +10 -0
- data/README.txt +5 -24
- data/lib/hoe.rb +22 -1
- data/lib/hoe/deps.rb +25 -0
- data/lib/hoe/package.rb +4 -1
- data/lib/hoe/publish.rb +63 -17
- data/test/test_hoe.rb +32 -9
- metadata +7 -7
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
=== 2.15.0 / 2012-02-29
|
2
|
+
|
3
|
+
* 5 minor enhancements:
|
4
|
+
|
5
|
+
* Added Hoe::bad_plugins which returns plugins that could not be found
|
6
|
+
* Added post_blog_zenweb to post releases to my blog's jekyll-like format
|
7
|
+
* Added the install_plugins task
|
8
|
+
* Documented the blogs .hoerc entry.
|
9
|
+
* Revamped post_blog task to allow for local file based blogs.
|
10
|
+
|
1
11
|
=== 2.14.0 / 2012-02-20
|
2
12
|
|
3
13
|
* 9 minor enhancements:
|
data/README.txt
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
= Hoe
|
2
2
|
|
3
|
-
home ::
|
3
|
+
home :: http://www.zenspider.com/projects/hoe.html
|
4
|
+
code :: https://github.com/seattlerb/hoe
|
5
|
+
bugs :: https://github.com/seattlerb/hoe/issues
|
4
6
|
rdoc :: http://seattlerb.rubyforge.org/hoe/
|
5
7
|
doco :: http://seattlerb.rubyforge.org/hoe/Hoe.pdf
|
6
8
|
other :: http://github.com/jbarnette/hoe-plugin-examples
|
@@ -8,10 +10,10 @@ other :: http://github.com/jbarnette/hoe-plugin-examples
|
|
8
10
|
== DESCRIPTION:
|
9
11
|
|
10
12
|
Hoe is a rake/rubygems helper for project Rakefiles. It helps you
|
11
|
-
manage
|
13
|
+
manage, maintain, and release your project and includes a dynamic
|
12
14
|
plug-in system allowing for easy extensibility. Hoe ships with
|
13
15
|
plug-ins for all your usual project tasks including rdoc generation,
|
14
|
-
testing, packaging, and
|
16
|
+
testing, packaging, deployment, and announcement..
|
15
17
|
|
16
18
|
See class rdoc for help. Hint: `ri Hoe` or any of the plugins listed
|
17
19
|
below.
|
@@ -249,27 +251,6 @@ Finally, once the user's hoe-spec has been evaluated, all activated plugins
|
|
249
251
|
have their `define_#{plugin}_tasks` method called. This method must be defined
|
250
252
|
and it is here that you'll define all your tasks.
|
251
253
|
|
252
|
-
== HOW TO CONTRIBUTE OR GET SUPPORT:
|
253
|
-
|
254
|
-
=== Mailing List
|
255
|
-
|
256
|
-
A mailing list for hoe is hosted at: http://rubyforge.org/projects/seattlerb
|
257
|
-
|
258
|
-
=== Bugs & Feature Requests:
|
259
|
-
|
260
|
-
We use the bug trackers hosted at: http://rubyforge.org/projects/seattlerb
|
261
|
-
|
262
|
-
=== Patches:
|
263
|
-
|
264
|
-
* If you have a bug fix or enhancement to hoe that you'd like to
|
265
|
-
contribute, please provide a unified diff and file it in a ticket in
|
266
|
-
the bug tracker listed above.
|
267
|
-
* You can check out hoe:
|
268
|
-
* With git via github: http://github.com/seattlerb/hoe
|
269
|
-
* With svn via rubyforge: http://rubyforge.org/projects/seattlerb
|
270
|
-
* Or via perforce if you'd like to directly contribute:
|
271
|
-
http://www.zenspider.com/ZSS/Process/Perforce.html
|
272
|
-
|
273
254
|
== REQUIREMENTS:
|
274
255
|
|
275
256
|
* rake
|
data/lib/hoe.rb
CHANGED
@@ -68,11 +68,13 @@ class Hoe
|
|
68
68
|
include Rake::DSL if defined?(Rake::DSL)
|
69
69
|
|
70
70
|
# duh
|
71
|
-
VERSION = '2.
|
71
|
+
VERSION = '2.15.0'
|
72
72
|
|
73
73
|
@@plugins = [:clean, :debug, :deps, :flay, :flog, :newb, :package,
|
74
74
|
:publish, :rcov, :gemcutter, :signing, :test]
|
75
75
|
|
76
|
+
@bad_plugins = []
|
77
|
+
|
76
78
|
##
|
77
79
|
# Used to add extra flags to RUBY_FLAGS.
|
78
80
|
|
@@ -243,6 +245,13 @@ class Hoe
|
|
243
245
|
RUBY_FLAGS.sub!(/-I/, "-I#{dirs.join(s)}#{s}")
|
244
246
|
end
|
245
247
|
|
248
|
+
##
|
249
|
+
# Returns plugins that could not be loaded by Hoe.load_plugins.
|
250
|
+
|
251
|
+
def self.bad_plugins
|
252
|
+
@bad_plugins
|
253
|
+
end
|
254
|
+
|
246
255
|
##
|
247
256
|
# Find and load all plugin files.
|
248
257
|
#
|
@@ -273,6 +282,9 @@ class Hoe
|
|
273
282
|
plugins.delete bad_plugin
|
274
283
|
end
|
275
284
|
|
285
|
+
@bad_plugins.concat bad_plugins
|
286
|
+
@bad_plugins.uniq!
|
287
|
+
|
276
288
|
return @loaded, @found
|
277
289
|
end
|
278
290
|
|
@@ -504,6 +516,15 @@ class Hoe
|
|
504
516
|
self.email << email
|
505
517
|
end
|
506
518
|
|
519
|
+
##
|
520
|
+
# Returns true if the gem +name+ is installed.
|
521
|
+
|
522
|
+
def have_gem? name
|
523
|
+
Gem::Specification.find_by_name name
|
524
|
+
rescue Gem::LoadError
|
525
|
+
false
|
526
|
+
end
|
527
|
+
|
507
528
|
##
|
508
529
|
# Create a newly initialized hoe spec. If a block is given, yield on
|
509
530
|
# it and finish post_initialize steps. This is deprecated behavior
|
data/lib/hoe/deps.rb
CHANGED
@@ -119,6 +119,11 @@ module Hoe::Deps
|
|
119
119
|
end
|
120
120
|
end
|
121
121
|
end
|
122
|
+
|
123
|
+
desc 'Install missing plugins.'
|
124
|
+
task :install_plugins do
|
125
|
+
install_missing_plugins
|
126
|
+
end
|
122
127
|
end
|
123
128
|
|
124
129
|
##
|
@@ -170,6 +175,26 @@ module Hoe::Deps
|
|
170
175
|
}.flatten]
|
171
176
|
end
|
172
177
|
|
178
|
+
##
|
179
|
+
# Installs plugins that aren't currently installed
|
180
|
+
|
181
|
+
def install_missing_plugins plugins = Hoe.bad_plugins
|
182
|
+
version = '>= 0'
|
183
|
+
|
184
|
+
plugins.each do |name|
|
185
|
+
dash_name = name.to_s.gsub '_', '-'
|
186
|
+
|
187
|
+
next if have_gem?(name) or
|
188
|
+
have_gem?("hoe-#{name}") or
|
189
|
+
have_gem?("hoe-#{dash_name}")
|
190
|
+
|
191
|
+
install_gem("hoe-#{name}", version, false) or
|
192
|
+
install_gem(name, version, false) or
|
193
|
+
install_gem(dash_name, version, false) or
|
194
|
+
warn "could not install gem for #{name} plugin"
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
173
198
|
##
|
174
199
|
# Return all the dependencies on the named rubygem.
|
175
200
|
|
data/lib/hoe/package.rb
CHANGED
@@ -89,6 +89,7 @@ module Hoe::Package
|
|
89
89
|
|
90
90
|
def install_gem name, version = nil, rdoc=true
|
91
91
|
should_not_sudo = Hoe::WINDOZE || ENV["NOSUDO"] || File.writable?(Gem.dir)
|
92
|
+
null_dev = Hoe::WINDOZE ? '> NUL 2>&1' : '&> /dev/null'
|
92
93
|
|
93
94
|
gem_cmd = Gem.default_exec_format % 'gem'
|
94
95
|
sudo = 'sudo ' unless should_not_sudo
|
@@ -97,8 +98,10 @@ module Hoe::Package
|
|
97
98
|
|
98
99
|
cmd = "#{sudo}#{gem_cmd} install #{local} #{name} #{version}"
|
99
100
|
cmd += " --no-rdoc --no-ri" unless rdoc
|
101
|
+
cmd += " #{null_dev}" unless Rake.application.options.trace
|
100
102
|
|
101
|
-
|
103
|
+
puts cmd if Rake.application.options.trace
|
104
|
+
system cmd
|
102
105
|
end
|
103
106
|
|
104
107
|
def prerelease_version # :nodoc:
|
data/lib/hoe/publish.rb
CHANGED
@@ -16,6 +16,20 @@ require "hoe/rake"
|
|
16
16
|
#
|
17
17
|
# publish_on_announce:: Run +publish_docs+ when you run +release+.
|
18
18
|
# blogs:: An array of hashes of blog settings.
|
19
|
+
#
|
20
|
+
# The blogs entry can either look like:
|
21
|
+
#
|
22
|
+
# - path: ~/Work/p4/zss/www/blog.zenspider.com/releases
|
23
|
+
# type: zenweb
|
24
|
+
#
|
25
|
+
# or:
|
26
|
+
#
|
27
|
+
# - url: http://example.com/cgi-bin/blog.cgi
|
28
|
+
# blog_id: 1
|
29
|
+
# user: username
|
30
|
+
# password: passwd
|
31
|
+
# extra_headers:
|
32
|
+
# blah: whatever
|
19
33
|
|
20
34
|
module Hoe::Publish
|
21
35
|
##
|
@@ -177,28 +191,33 @@ module Hoe::Publish
|
|
177
191
|
puts generate_email
|
178
192
|
end
|
179
193
|
|
180
|
-
desc 'Post announcement to blog.'
|
194
|
+
desc 'Post announcement to blog. Uses the "blogs" array in your hoerc.'
|
181
195
|
task :post_blog do
|
182
|
-
require 'xmlrpc/client'
|
183
|
-
|
184
196
|
with_config do |config, path|
|
185
197
|
break unless config['blogs']
|
186
198
|
|
187
|
-
_, title, body, urls = announcement
|
188
|
-
body += "\n\n#{urls}"
|
189
|
-
|
190
199
|
config['blogs'].each do |site|
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
200
|
+
if site['path'] then
|
201
|
+
msg = "post_blog_#{site['type']}"
|
202
|
+
send msg, site
|
203
|
+
else
|
204
|
+
require 'xmlrpc/client'
|
205
|
+
|
206
|
+
_, title, body, urls = announcement
|
207
|
+
body += "\n\n#{urls}"
|
208
|
+
|
209
|
+
server = XMLRPC::Client.new2(site['url'])
|
210
|
+
content = site['extra_headers'].merge(:title => title,
|
211
|
+
:description => body,
|
212
|
+
:categories => blog_categories)
|
213
|
+
|
214
|
+
server.call('metaWeblog.newPost',
|
215
|
+
site['blog_id'],
|
216
|
+
site['user'],
|
217
|
+
site['password'],
|
218
|
+
content,
|
219
|
+
true)
|
220
|
+
end
|
202
221
|
end
|
203
222
|
end
|
204
223
|
end
|
@@ -207,6 +226,33 @@ module Hoe::Publish
|
|
207
226
|
task :announce => [:post_blog, :publish_on_announce ]
|
208
227
|
end
|
209
228
|
|
229
|
+
def post_blog_zenweb site
|
230
|
+
dir = site["path"]
|
231
|
+
|
232
|
+
_, title, body, urls = announcement
|
233
|
+
body += "\n\n#{urls}"
|
234
|
+
|
235
|
+
Dir.chdir File.expand_path dir do
|
236
|
+
time = Time.at Time.now.to_i # nukes fractions
|
237
|
+
path = [time.strftime("%Y-%m-%d-"),
|
238
|
+
title.sub(/\W+$/, '').gsub(/\W+/, '-'),
|
239
|
+
".html.md"].join
|
240
|
+
|
241
|
+
header = {
|
242
|
+
"title" => title,
|
243
|
+
"categories" => blog_categories,
|
244
|
+
"date" => time,
|
245
|
+
}
|
246
|
+
|
247
|
+
File.open path, "w" do |f|
|
248
|
+
f.puts header.to_yaml.gsub(/\s$/, '')
|
249
|
+
f.puts "..."
|
250
|
+
f.puts
|
251
|
+
f.puts body
|
252
|
+
end
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
210
256
|
def generate_email full = nil
|
211
257
|
require 'time'
|
212
258
|
|
data/test/test_hoe.rb
CHANGED
@@ -19,22 +19,40 @@ class TestHoe < MiniTest::Unit::TestCase
|
|
19
19
|
|
20
20
|
def setup
|
21
21
|
Rake.application.clear
|
22
|
+
|
23
|
+
Hoe.instance_variable_set :@bad_plugins, []
|
24
|
+
Hoe.instance_variable_set :@files, nil
|
25
|
+
Hoe.instance_variable_set :@found, nil
|
26
|
+
Hoe.instance_variable_set :@loaded, nil
|
27
|
+
|
28
|
+
Hoe.plugin :package
|
29
|
+
Hoe.plugin :publish
|
30
|
+
Hoe.plugin :test
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_class_bad_plugins
|
34
|
+
Hoe.plugin :bogus
|
35
|
+
|
36
|
+
Hoe.load_plugins
|
37
|
+
|
38
|
+
assert_equal [:bogus], Hoe.bad_plugins
|
39
|
+
|
40
|
+
Hoe.load_plugins
|
41
|
+
|
42
|
+
assert_equal [:bogus], Hoe.bad_plugins
|
22
43
|
end
|
23
44
|
|
24
45
|
def test_class_load_plugins
|
25
46
|
loaded, = Hoe.load_plugins
|
26
47
|
|
27
|
-
assert_includes loaded.keys, :
|
28
|
-
assert_includes loaded.keys, :
|
29
|
-
assert_includes loaded.keys, :
|
48
|
+
assert_includes loaded.keys, :package
|
49
|
+
assert_includes loaded.keys, :publish
|
50
|
+
assert_includes loaded.keys, :test
|
30
51
|
end
|
31
52
|
|
32
53
|
def test_activate_plugins
|
33
54
|
initializers = hoe.methods.grep(/^initialize/).map { |s| s.to_s }
|
34
55
|
|
35
|
-
assert_includes initializers, 'initialize_clean'
|
36
|
-
assert_includes initializers, 'initialize_flay'
|
37
|
-
assert_includes initializers, 'initialize_flog'
|
38
56
|
assert_includes initializers, 'initialize_package'
|
39
57
|
assert_includes initializers, 'initialize_publish'
|
40
58
|
assert_includes initializers, 'initialize_test'
|
@@ -105,6 +123,11 @@ class TestHoe < MiniTest::Unit::TestCase
|
|
105
123
|
ENV['HOME'] = home
|
106
124
|
end
|
107
125
|
|
126
|
+
def test_have_gem_eh
|
127
|
+
assert hoe.have_gem? 'rake'
|
128
|
+
refute hoe.have_gem? 'nonexistent'
|
129
|
+
end
|
130
|
+
|
108
131
|
def test_initialize_plugins_hoerc
|
109
132
|
home = ENV['HOME']
|
110
133
|
load_path = $LOAD_PATH.dup
|
@@ -297,12 +320,12 @@ class TestHoe < MiniTest::Unit::TestCase
|
|
297
320
|
|
298
321
|
def test_plugins
|
299
322
|
before = Hoe.plugins.dup
|
323
|
+
|
300
324
|
Hoe.plugin :first, :second
|
301
325
|
assert_equal before + [:first, :second], Hoe.plugins
|
326
|
+
|
302
327
|
Hoe.plugin :first, :second
|
303
328
|
assert_equal before + [:first, :second], Hoe.plugins
|
304
|
-
ensure
|
305
|
-
Hoe.plugins.replace before
|
306
329
|
end
|
307
330
|
|
308
331
|
def test_read_manifest
|
@@ -331,7 +354,7 @@ class TestHoe < MiniTest::Unit::TestCase
|
|
331
354
|
self.version = '1.2.3'
|
332
355
|
developer 'author', 'email'
|
333
356
|
|
334
|
-
def
|
357
|
+
def system cmd
|
335
358
|
cmd
|
336
359
|
end
|
337
360
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hoe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 51
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
|
-
-
|
8
|
+
- 15
|
9
9
|
- 0
|
10
|
-
version: 2.
|
10
|
+
version: 2.15.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ryan Davis
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
FBHgymkyj/AOSqKRIpXPhjC6
|
37
37
|
-----END CERTIFICATE-----
|
38
38
|
|
39
|
-
date: 2012-
|
39
|
+
date: 2012-03-01 00:00:00 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
@@ -85,10 +85,10 @@ dependencies:
|
|
85
85
|
version_requirements: *id003
|
86
86
|
description: |-
|
87
87
|
Hoe is a rake/rubygems helper for project Rakefiles. It helps you
|
88
|
-
manage
|
88
|
+
manage, maintain, and release your project and includes a dynamic
|
89
89
|
plug-in system allowing for easy extensibility. Hoe ships with
|
90
90
|
plug-ins for all your usual project tasks including rdoc generation,
|
91
|
-
testing, packaging, and
|
91
|
+
testing, packaging, deployment, and announcement..
|
92
92
|
|
93
93
|
See class rdoc for help. Hint: `ri Hoe` or any of the plugins listed
|
94
94
|
below.
|
@@ -143,7 +143,7 @@ files:
|
|
143
143
|
- test/test_hoe_gemcutter.rb
|
144
144
|
- test/test_hoe_test.rb
|
145
145
|
- .gemtest
|
146
|
-
homepage:
|
146
|
+
homepage: http://www.zenspider.com/projects/hoe.html
|
147
147
|
licenses: []
|
148
148
|
|
149
149
|
post_install_message:
|
metadata.gz.sig
CHANGED
Binary file
|