hoe 2.1.0 → 2.2.0
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.tar.gz.sig +0 -0
- data/History.txt +19 -0
- data/Rakefile +4 -3
- data/lib/hoe.rb +33 -5
- data/lib/hoe/debug.rb +2 -0
- data/lib/hoe/deps.rb +1 -1
- data/lib/hoe/publish.rb +69 -46
- data/lib/hoe/signing.rb +21 -19
- data/test/test_hoe.rb +9 -55
- metadata +2 -2
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
=== 2.2.0 / 2009-06-17
|
2
|
+
|
3
|
+
* 8 minor enhancements:
|
4
|
+
|
5
|
+
* Alter task descriptions to say what plugin they come from. jbarnette
|
6
|
+
* Fix and improve generate_key task. Patch #20441 by Matthew Kent.
|
7
|
+
* Hoe.plugin can take multiple names. jbarnette
|
8
|
+
* Increase configurability of RDoc tasks. Patch #19597 by Sylvain Joyeux.
|
9
|
+
* Refactored and renamed email task to debug_email, removed from announce.
|
10
|
+
* Removed email task from announce task.
|
11
|
+
* Switched to seattlerb plugin
|
12
|
+
* check_extra_deps now installs developer dependencies as well
|
13
|
+
|
14
|
+
* 3 bug fixes:
|
15
|
+
|
16
|
+
* Fixed blogs entry in DEFAULT_CONFIG.
|
17
|
+
* activated but missing plugins are properly skipped now
|
18
|
+
* exclude field was missing from DEFAULT_CONFIG
|
19
|
+
|
1
20
|
=== 2.1.0 / 2009-06-14
|
2
21
|
|
3
22
|
* 6 minor enhancements:
|
data/Rakefile
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
# -*- ruby -*-
|
2
2
|
|
3
|
+
$: << 'lib'
|
4
|
+
|
3
5
|
require './lib/hoe.rb'
|
4
6
|
|
5
|
-
Hoe.plugin :
|
6
|
-
Hoe.plugin :minitest
|
7
|
+
Hoe.plugin :seattlerb
|
7
8
|
|
8
9
|
Hoe.spec "hoe" do
|
9
10
|
developer "Ryan Davis", "ryand-ruby@zenspider.com"
|
@@ -15,4 +16,4 @@ Hoe.spec "hoe" do
|
|
15
16
|
pluggable!
|
16
17
|
end
|
17
18
|
|
18
|
-
# vim: syntax=
|
19
|
+
# vim: syntax=ruby
|
data/lib/hoe.rb
CHANGED
@@ -69,7 +69,7 @@ end
|
|
69
69
|
|
70
70
|
class Hoe
|
71
71
|
# duh
|
72
|
-
VERSION = '2.
|
72
|
+
VERSION = '2.2.0'
|
73
73
|
|
74
74
|
##
|
75
75
|
# Used to add extra flags to RUBY_FLAGS.
|
@@ -245,10 +245,10 @@ class Hoe
|
|
245
245
|
end
|
246
246
|
|
247
247
|
##
|
248
|
-
# Activate
|
248
|
+
# Activate plugins.
|
249
249
|
|
250
|
-
def self.plugin
|
251
|
-
self.plugins
|
250
|
+
def self.plugin *names
|
251
|
+
self.plugins.concat names
|
252
252
|
end
|
253
253
|
|
254
254
|
##
|
@@ -451,10 +451,28 @@ class Hoe
|
|
451
451
|
# Load activated plugins by calling their define tasks method.
|
452
452
|
|
453
453
|
def load_plugin_tasks
|
454
|
+
bad = []
|
455
|
+
|
456
|
+
$plugin_max = self.class.plugins.map { |s| s.to_s.size }.max
|
457
|
+
|
454
458
|
self.class.plugins.each do |plugin|
|
455
459
|
warn plugin if $DEBUG
|
456
|
-
|
460
|
+
|
461
|
+
old_tasks = Rake::Task.tasks.dup
|
462
|
+
|
463
|
+
begin
|
464
|
+
send "define_#{plugin}_tasks"
|
465
|
+
rescue NoMethodError => e
|
466
|
+
warn "warning: couldn't activate the #{plugin} plugin, skipping"
|
467
|
+
bad << plugin
|
468
|
+
next
|
469
|
+
end
|
470
|
+
|
471
|
+
(Rake::Task.tasks - old_tasks).each do |task|
|
472
|
+
task.plugin = plugin # "%-#{max}s" % plugin
|
473
|
+
end
|
457
474
|
end
|
475
|
+
@@plugins -= bad
|
458
476
|
end
|
459
477
|
|
460
478
|
##
|
@@ -542,3 +560,13 @@ class File
|
|
542
560
|
File.read(path).sub(/\A\xEF\xBB\xBF/, '')
|
543
561
|
end
|
544
562
|
end
|
563
|
+
|
564
|
+
module Rake
|
565
|
+
class Task
|
566
|
+
attr_accessor :plugin
|
567
|
+
alias :old_comment :comment
|
568
|
+
def comment
|
569
|
+
"%-#{$plugin_max}s # %s" % [plugin, old_comment] if old_comment
|
570
|
+
end
|
571
|
+
end
|
572
|
+
end
|
data/lib/hoe/debug.rb
CHANGED
data/lib/hoe/deps.rb
CHANGED
@@ -111,7 +111,7 @@ module Hoe::Deps
|
|
111
111
|
desc 'Install missing dependencies.'
|
112
112
|
task :check_extra_deps do
|
113
113
|
# extra_deps = [["rubyforge", ">= 1.0.0"], ["rake", ">= 0.8.1"]]
|
114
|
-
extra_deps.each do |dep|
|
114
|
+
(extra_deps + extra_dev_deps).each do |dep|
|
115
115
|
begin
|
116
116
|
gem(*dep)
|
117
117
|
rescue Gem::LoadError
|
data/lib/hoe/publish.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
# === Tasks Provided:
|
5
5
|
#
|
6
6
|
# announce:: Create news email file and post to rubyforge.
|
7
|
-
#
|
7
|
+
# debug_email:: Generate email announcement file.
|
8
8
|
# post_blog:: Post announcement to blog.
|
9
9
|
# post_news:: Post announcement to rubyforge.
|
10
10
|
# publish_docs:: Publish RDoc to RubyForge.
|
@@ -19,10 +19,25 @@ module Hoe::Publish
|
|
19
19
|
Hoe.plugin :publish
|
20
20
|
|
21
21
|
##
|
22
|
-
#
|
22
|
+
# Optional: An array of the project's blog categories. Defaults to project
|
23
|
+
# name.
|
23
24
|
|
24
25
|
attr_accessor :blog_categories
|
25
26
|
|
27
|
+
##
|
28
|
+
# Optional: Name of destination directory for RDoc generated files.
|
29
|
+
# [default: rdoc]
|
30
|
+
|
31
|
+
attr_accessor :local_rdoc_dir
|
32
|
+
|
33
|
+
##
|
34
|
+
# Optional: Should RDoc and ri generation tasks be defined? [default: true]
|
35
|
+
#
|
36
|
+
# Allows you to define custom RDoc tasks then use the publish_rdoc task to
|
37
|
+
# upload them all. See also local_rdoc_dir
|
38
|
+
|
39
|
+
attr_accessor :need_rdoc
|
40
|
+
|
26
41
|
##
|
27
42
|
# Optional: Name of RDoc destination directory on Rubyforge. [default: +name+]
|
28
43
|
|
@@ -34,23 +49,25 @@ module Hoe::Publish
|
|
34
49
|
attr_accessor :rsync_args
|
35
50
|
|
36
51
|
Hoe::DEFAULT_CONFIG["publish_on_announce"] = true
|
37
|
-
Hoe::DEFAULT_CONFIG["
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
52
|
+
Hoe::DEFAULT_CONFIG["blogs"] = [
|
53
|
+
{
|
54
|
+
"user" => "user",
|
55
|
+
"password" => "password",
|
56
|
+
"url" => "url",
|
57
|
+
"blog_id" => "blog_id",
|
58
|
+
"extra_headers" => {
|
59
|
+
"mt_convert_breaks" => "markdown"
|
60
|
+
},
|
61
|
+
}
|
62
|
+
]
|
48
63
|
|
49
64
|
##
|
50
65
|
# Initialize variables for plugin.
|
51
66
|
|
52
67
|
def initialize_publish
|
53
68
|
self.blog_categories ||= [self.name]
|
69
|
+
self.local_rdoc_dir ||= 'doc'
|
70
|
+
self.need_rdoc ||= true
|
54
71
|
self.remote_rdoc_dir ||= self.name
|
55
72
|
self.rsync_args ||= '-av --delete'
|
56
73
|
end
|
@@ -59,24 +76,26 @@ module Hoe::Publish
|
|
59
76
|
# Define tasks for plugin.
|
60
77
|
|
61
78
|
def define_publish_tasks
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
79
|
+
if need_rdoc then
|
80
|
+
Rake::RDocTask.new(:docs) do |rd|
|
81
|
+
rd.main = readme_file
|
82
|
+
rd.options << '-d' if (`which dot` =~ /\/dot/) unless
|
83
|
+
ENV['NODOT'] || Hoe::WINDOZE
|
84
|
+
rd.rdoc_dir = 'doc'
|
67
85
|
|
68
|
-
|
69
|
-
|
86
|
+
rd.rdoc_files += spec.require_paths
|
87
|
+
rd.rdoc_files += spec.extra_rdoc_files
|
70
88
|
|
71
|
-
|
72
|
-
|
89
|
+
title = "#{name}-#{version} Documentation"
|
90
|
+
title = "#{rubyforge_name}'s " + title if rubyforge_name != name
|
73
91
|
|
74
|
-
|
75
|
-
|
92
|
+
rd.options << "-t" << title
|
93
|
+
end
|
76
94
|
|
77
|
-
|
78
|
-
|
79
|
-
|
95
|
+
desc 'Generate ri locally for testing.'
|
96
|
+
task :ridocs => :clean do
|
97
|
+
sh %q{ rdoc --ri -o ri . }
|
98
|
+
end
|
80
99
|
end
|
81
100
|
|
82
101
|
desc 'Publish RDoc to RubyForge.'
|
@@ -85,7 +104,7 @@ module Hoe::Publish
|
|
85
104
|
host = "#{config["username"]}@rubyforge.org"
|
86
105
|
|
87
106
|
remote_dir = "/var/www/gforge-projects/#{rubyforge_name}/#{remote_rdoc_dir}"
|
88
|
-
local_dir =
|
107
|
+
local_dir = local_rdoc_dir
|
89
108
|
|
90
109
|
sh %{rsync #{rsync_args} #{local_dir}/ #{host}:#{remote_dir}}
|
91
110
|
end
|
@@ -98,22 +117,8 @@ module Hoe::Publish
|
|
98
117
|
end
|
99
118
|
|
100
119
|
desc 'Generate email announcement file.'
|
101
|
-
task :
|
102
|
-
|
103
|
-
subject, title, body, urls = announcement
|
104
|
-
|
105
|
-
File.open("email.txt", "w") do |mail|
|
106
|
-
mail.puts "Subject: [ANN] #{subject}"
|
107
|
-
mail.puts
|
108
|
-
mail.puts title
|
109
|
-
mail.puts
|
110
|
-
mail.puts urls
|
111
|
-
mail.puts
|
112
|
-
mail.puts body
|
113
|
-
mail.puts
|
114
|
-
mail.puts urls
|
115
|
-
end
|
116
|
-
puts "Created email.txt"
|
120
|
+
task :debug_email do
|
121
|
+
puts generate_email
|
117
122
|
end
|
118
123
|
|
119
124
|
desc 'Post announcement to blog.'
|
@@ -153,8 +158,26 @@ module Hoe::Publish
|
|
153
158
|
puts "Posted to rubyforge"
|
154
159
|
end
|
155
160
|
|
156
|
-
desc '
|
157
|
-
task :announce => [:
|
161
|
+
desc 'Announce your release.'
|
162
|
+
task :announce => [:post_news, :post_blog, :publish_on_announce ]
|
163
|
+
end
|
164
|
+
|
165
|
+
def generate_email full = nil
|
166
|
+
abort "No email 'to' entry. Run `rake config_hoe` to fix." unless
|
167
|
+
!full || email_to
|
168
|
+
|
169
|
+
from_name, from_email = author.first, email.first
|
170
|
+
subject, title, body, urls = announcement
|
171
|
+
|
172
|
+
[
|
173
|
+
full && "From: #{from_name} <#{from_email}>",
|
174
|
+
full && "To: #{email_to.join(", ")}",
|
175
|
+
full && "Date: #{Time.now.rfc2822}",
|
176
|
+
"Subject: [ANN] #{subject}",
|
177
|
+
"", title,
|
178
|
+
"", urls,
|
179
|
+
"", body,
|
180
|
+
].compact.join("\n")
|
158
181
|
end
|
159
182
|
|
160
183
|
def announcement # :nodoc:
|
data/lib/hoe/signing.rb
CHANGED
@@ -82,7 +82,13 @@ module Hoe::Signing
|
|
82
82
|
key_file = File.expand_path key_file
|
83
83
|
cert_file = File.expand_path cert_file
|
84
84
|
|
85
|
-
unless File.exist? key_file
|
85
|
+
unless File.exist? key_file then
|
86
|
+
puts "Generating certificate"
|
87
|
+
|
88
|
+
if File.exist? key_file then
|
89
|
+
abort "Have #{key_file} but no #{cert_file}, aborting as a precaution"
|
90
|
+
end
|
91
|
+
|
86
92
|
warn "NOTICE: using #{email.first} for certificate" if email.size > 1
|
87
93
|
|
88
94
|
sh "gem cert --build #{email.first}"
|
@@ -90,29 +96,25 @@ module Hoe::Signing
|
|
90
96
|
mv "gem-public_cert.pem", cert_file, :verbose => true
|
91
97
|
|
92
98
|
puts "Installed key and certificate."
|
99
|
+
end
|
93
100
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
cert_package = "#{rubyforge_name}-certificates"
|
101
|
+
rf = RubyForge.new.configure
|
102
|
+
rf.login
|
98
103
|
|
99
|
-
|
100
|
-
rf.lookup 'package', cert_package
|
101
|
-
rescue
|
102
|
-
rf.create_package rubyforge_name, cert_package
|
103
|
-
end
|
104
|
+
cert_package = "#{rubyforge_name}-certificates"
|
104
105
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
rf.add_release rubyforge_name, cert_package, 'certificates', cert_file
|
111
|
-
end
|
106
|
+
begin
|
107
|
+
rf.lookup 'package', cert_package
|
108
|
+
rescue
|
109
|
+
rf.create_package rubyforge_name, cert_package
|
110
|
+
end
|
112
111
|
|
113
|
-
|
112
|
+
unless rf.lookup('release', cert_package)['certificates'] then
|
113
|
+
rf.add_release rubyforge_name, cert_package, 'certificates', cert_file
|
114
|
+
puts "Uploaded certificates to release \"certificates\" in package #{cert_package}"
|
114
115
|
else
|
115
|
-
puts "
|
116
|
+
puts '"certificates" release exists, adding file anyway (will not overwrite)'
|
117
|
+
rf.add_file rubyforge_name, cert_package, 'certificates', cert_file
|
116
118
|
end
|
117
119
|
end
|
118
120
|
end
|
data/test/test_hoe.rb
CHANGED
@@ -8,61 +8,6 @@ class TestHoe < MiniTest::Unit::TestCase
|
|
8
8
|
Rake.application.clear
|
9
9
|
end
|
10
10
|
|
11
|
-
##
|
12
|
-
# Yes, these tests suck, but it is damn hard to test this since
|
13
|
-
# everything is forked out.
|
14
|
-
|
15
|
-
def test_basics
|
16
|
-
boring = %w(clobber_docs
|
17
|
-
clobber_package
|
18
|
-
clobber_rcov
|
19
|
-
gem
|
20
|
-
redocs
|
21
|
-
repackage)
|
22
|
-
expected = %w(audit
|
23
|
-
announce
|
24
|
-
check_extra_deps
|
25
|
-
check_manifest
|
26
|
-
clean
|
27
|
-
config_hoe
|
28
|
-
debug_gem
|
29
|
-
default
|
30
|
-
deps:email
|
31
|
-
deps:fetch
|
32
|
-
deps:list
|
33
|
-
docs
|
34
|
-
email
|
35
|
-
generate_key
|
36
|
-
install_gem
|
37
|
-
multi
|
38
|
-
package
|
39
|
-
post_blog
|
40
|
-
post_news
|
41
|
-
publish_docs
|
42
|
-
rcov
|
43
|
-
release
|
44
|
-
release_sanity
|
45
|
-
release_to_rubyforge
|
46
|
-
ridocs
|
47
|
-
test
|
48
|
-
test_deps)
|
49
|
-
expected += boring
|
50
|
-
|
51
|
-
spec = Hoe.spec('blah') do
|
52
|
-
self.version = '1.0.0'
|
53
|
-
developer("name", "email")
|
54
|
-
end
|
55
|
-
|
56
|
-
assert_equal ["name"], spec.author
|
57
|
-
assert_equal ["email"], spec.email
|
58
|
-
|
59
|
-
tasks = Rake.application.tasks
|
60
|
-
public_tasks = tasks.reject { |t| t.comment.nil? }.map { |t| t.name }.sort
|
61
|
-
public_tasks -= %w(flay flog)
|
62
|
-
|
63
|
-
assert_equal expected.sort, public_tasks
|
64
|
-
end
|
65
|
-
|
66
11
|
def test_possibly_better
|
67
12
|
t = Gem::Specification::TODAY
|
68
13
|
hoe = Hoe.spec("blah") do
|
@@ -108,6 +53,15 @@ class TestHoe < MiniTest::Unit::TestCase
|
|
108
53
|
assert_equal ">= #{Hoe::VERSION}", dep.version_requirements.to_s
|
109
54
|
end
|
110
55
|
|
56
|
+
def test_plugins
|
57
|
+
before = Hoe.plugins.dup
|
58
|
+
Hoe.plugin :first, :second
|
59
|
+
assert_equal before + [:first, :second], Hoe.plugins
|
60
|
+
ensure
|
61
|
+
# FIX: maybe add Hoe.reset
|
62
|
+
Hoe.plugins.replace before
|
63
|
+
end
|
64
|
+
|
111
65
|
def test_rename
|
112
66
|
# project, file_name, klass = Hoe.normalize_names 'project_name'
|
113
67
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hoe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
FBHgymkyj/AOSqKRIpXPhjC6
|
31
31
|
-----END CERTIFICATE-----
|
32
32
|
|
33
|
-
date: 2009-06-
|
33
|
+
date: 2009-06-17 00:00:00 -07:00
|
34
34
|
default_executable:
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
metadata.gz.sig
CHANGED
Binary file
|