hoe 1.2.2 → 1.3.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/History.txt +28 -17
- data/lib/hoe.rb +118 -34
- data/test/test_hoe.rb +1 -0
- metadata +3 -3
data/History.txt
CHANGED
@@ -1,4 +1,15 @@
|
|
1
|
-
|
1
|
+
=== 1.3.0 / 2007-08-13
|
2
|
+
|
3
|
+
* 1 major enhancement:
|
4
|
+
* Hoe now builds signed gems automatically. Run the generate_key task to
|
5
|
+
automatically create a signing key.
|
6
|
+
* 4 minor enhancements:
|
7
|
+
* Extended rdoc pattern to include ext dirs.
|
8
|
+
* Fixed dependency adding for versionless dependencies.
|
9
|
+
* Added NODOT env var to disable RDoc diagram generation.
|
10
|
+
* The config_hoe task automatically merges in new config entries.
|
11
|
+
|
12
|
+
=== 1.2.2 / 2007-07-23
|
2
13
|
|
3
14
|
* 2 minor enhancement:
|
4
15
|
* Added exclude parameter for check_manifest filtering to .hoerc.
|
@@ -6,7 +17,7 @@
|
|
6
17
|
* 1 bug fix:
|
7
18
|
* Various (untested) fixes for windows compatibility.
|
8
19
|
|
9
|
-
|
20
|
+
=== 1.2.1 / 2007-05-21
|
10
21
|
|
11
22
|
* 8 minor enhancements:
|
12
23
|
* Allow for spaces in filenames in manifest. Thanks to Aaron Patterson.
|
@@ -20,14 +31,14 @@
|
|
20
31
|
* 1 bug fixes:
|
21
32
|
* Fixed executables regexp to /^bin/.
|
22
33
|
|
23
|
-
|
34
|
+
=== 1.2.0 / 2007-02-13
|
24
35
|
|
25
36
|
* Added more support for ext dirs.
|
26
37
|
* Added a simple config file (yaml). Use 'rake config_hoe' to edit.
|
27
38
|
* Added post_blog task (thanks Aaron!), configured via config_hoe.
|
28
39
|
* Announce task now posts to your blogs and/or publishes API depending on config.
|
29
40
|
|
30
|
-
|
41
|
+
=== 1.1.7 / 2007-01-10
|
31
42
|
|
32
43
|
* extra_deps is now self-healing, and ensures no (direct) cycles.
|
33
44
|
* cleans check_manifest for CVS projects.
|
@@ -35,22 +46,22 @@
|
|
35
46
|
* Now uses rsync for publish_docs. YAY for fast!
|
36
47
|
* Bug #7193 fix spelling of 'synopsys'. Submitted by Jacob Atzen.
|
37
48
|
|
38
|
-
|
49
|
+
=== 1.1.6 / 2006-11-29
|
39
50
|
|
40
51
|
* Fix release to work correctly with need_zip and need_tar.
|
41
52
|
|
42
|
-
|
53
|
+
=== 1.1.5 / 2006-11-29
|
43
54
|
|
44
55
|
* Reduced check_manifest dependencies to just diff for windows.
|
45
56
|
* Don't use default author in summary, description or changes.
|
46
57
|
|
47
|
-
|
58
|
+
=== 1.1.4 / 2006-11-12
|
48
59
|
|
49
60
|
* Added need_tar and need_zip to customize package requirements. Stupid windoze.
|
50
61
|
* Extended spec_extras to take procs as values. Passes in named parameter.
|
51
62
|
* Removed test from require_paths. I thought I already parameterized this. :/
|
52
63
|
|
53
|
-
|
64
|
+
=== 1.1.3 / 2006-11-09
|
54
65
|
|
55
66
|
* Added test_deps, now you can automatically discover test dependency ommisions.
|
56
67
|
* Added ext support! Build C extensions with hoe!
|
@@ -59,7 +70,7 @@
|
|
59
70
|
* Fixed doco and automated updating of it.
|
60
71
|
* Added rdoc_pattern. Go doco go!
|
61
72
|
|
62
|
-
|
73
|
+
=== 1.1.2 / 2006-10-22
|
63
74
|
|
64
75
|
* Added -d and -t flags to sow to make dev or trunk subdirs for p4 and svn projects.
|
65
76
|
* Added install_gem to further test gem builds.
|
@@ -67,17 +78,17 @@
|
|
67
78
|
* Removed demo.rb from clean_globs. I'm torn on this one.
|
68
79
|
* Fixed bug in install rule.
|
69
80
|
|
70
|
-
|
81
|
+
=== 1.1.1 / 2006-10-11
|
71
82
|
|
72
83
|
* Fixed minor problem with subject of email.
|
73
84
|
* Fixed problem in test.
|
74
85
|
|
75
|
-
|
86
|
+
=== 1.1.0 / 2006-10-04
|
76
87
|
|
77
88
|
* Added sow, a command-line tool for quickly creating new projects.
|
78
89
|
* Added check_manifest task
|
79
90
|
|
80
|
-
|
91
|
+
=== 1.0.5 / 2006-10-03
|
81
92
|
|
82
93
|
* Doco cleanup.
|
83
94
|
* Removed Manifest.txt from rdoc and added title.
|
@@ -88,11 +99,11 @@
|
|
88
99
|
* Added email and rubyforge news announcement tasks.
|
89
100
|
* Url attribute may now be an array of urls.
|
90
101
|
|
91
|
-
|
102
|
+
=== 1.0.4 / 2006-09-23
|
92
103
|
|
93
104
|
* Damnit... I messed up. There is no rubygems gem to be dependent upon. Duh.
|
94
105
|
|
95
|
-
|
106
|
+
=== 1.0.3 / 2006-09-23
|
96
107
|
|
97
108
|
* Added debug_gem rule.
|
98
109
|
* Added lots of doco.
|
@@ -105,12 +116,12 @@
|
|
105
116
|
* Renamed upload to publish_docs.
|
106
117
|
* publish_docs is now smart about subprojects and missing subdirectories.
|
107
118
|
|
108
|
-
|
119
|
+
=== 1.0.2 / 2006-09-20
|
109
120
|
|
110
121
|
* Wee little tests.
|
111
122
|
* Fixed up gemspec's require_paths.
|
112
123
|
|
113
|
-
|
124
|
+
=== 1.0.1 / 2006-09-20
|
114
125
|
|
115
126
|
* Finally got deployment straightened out. Maybe. Some might be on rubyforge.org.
|
116
127
|
* Added default description and summary.
|
@@ -118,6 +129,6 @@
|
|
118
129
|
* Improved gemspec debugging.
|
119
130
|
* Swapped gem with tgz in deploy... we'd rather screw up on tgz
|
120
131
|
|
121
|
-
|
132
|
+
=== 1.0.0 / 2006-09-19
|
122
133
|
|
123
134
|
* Birthday!
|
data/lib/hoe.rb
CHANGED
@@ -8,6 +8,7 @@ require 'rake/rdoctask'
|
|
8
8
|
require 'rake/testtask'
|
9
9
|
require 'rbconfig'
|
10
10
|
require 'rubyforge'
|
11
|
+
require 'yaml'
|
11
12
|
|
12
13
|
##
|
13
14
|
# hoe - a tool to help rake
|
@@ -64,12 +65,39 @@ require 'rubyforge'
|
|
64
65
|
# exclude:: A regular expression of files to exclude from
|
65
66
|
# +check_manifest+.
|
66
67
|
# publish_on_announce:: Run +publish_docs+ when you run +release+.
|
68
|
+
# signing_key_file:: Signs your gems with this private key.
|
69
|
+
# signing_cert_file:: Signs your gem with this certificate.
|
67
70
|
# blogs:: An array of hashes of blog settings.
|
68
71
|
#
|
69
72
|
# Run +config_hoe+ and see ~/.hoerc for examples.
|
70
73
|
#
|
74
|
+
# === Signing Gems:
|
75
|
+
#
|
76
|
+
# Run the 'generate_key' task. This will:
|
77
|
+
#
|
78
|
+
# 1. Configure your ~/.hoerc.
|
79
|
+
# 2. Generate a signing key and certificate.
|
80
|
+
# 3. Install the private key and public certificate files into ~/.gem.
|
81
|
+
# 4. Upload the certificate to RubyForge.
|
82
|
+
#
|
83
|
+
# Hoe will now generate signed gems when the package task is run. If you have
|
84
|
+
# multiple machines you build gems on, be sure to install your key and
|
85
|
+
# certificate on each machine.
|
86
|
+
#
|
87
|
+
# Keep your private key secret! Keep your private key safe!
|
88
|
+
#
|
89
|
+
# To make sure your gems are signed run:
|
90
|
+
#
|
91
|
+
# rake package; tar tf pkg/yourproject-1.2.3.gem
|
92
|
+
#
|
93
|
+
# If your gem is signed you will see:
|
94
|
+
#
|
95
|
+
# data.tar.gz
|
96
|
+
# data.tar.gz.sig
|
97
|
+
# metadata.gz
|
98
|
+
# metadata.gz.sig
|
71
99
|
class Hoe
|
72
|
-
VERSION = '1.
|
100
|
+
VERSION = '1.3.0'
|
73
101
|
|
74
102
|
ruby_prefix = Config::CONFIG['prefix']
|
75
103
|
sitelibdir = Config::CONFIG['sitelibdir']
|
@@ -243,7 +271,7 @@ class Hoe
|
|
243
271
|
self.extra_deps = []
|
244
272
|
self.need_tar = true
|
245
273
|
self.need_zip = false
|
246
|
-
self.rdoc_pattern = /^(lib|bin)|txt$/
|
274
|
+
self.rdoc_pattern = /^(lib|bin|ext)|txt$/
|
247
275
|
self.remote_rdoc_dir = name
|
248
276
|
self.rsync_args = '-av --delete'
|
249
277
|
self.rubyforge_name = name.downcase
|
@@ -259,9 +287,8 @@ class Hoe
|
|
259
287
|
'rubyforge' => ">= #{::RubyForge::VERSION}",
|
260
288
|
}
|
261
289
|
|
262
|
-
self.extra_deps = Array(extra_deps)
|
263
|
-
|
264
|
-
extra_deps.empty? or Array === extra_deps.first
|
290
|
+
self.extra_deps = Array(extra_deps).map { |o| String === o ? [o] : o }
|
291
|
+
|
265
292
|
if name == 'hoe' then
|
266
293
|
hoe_deps.each do |pkg, version|
|
267
294
|
extra_deps << [pkg, version]
|
@@ -274,6 +301,13 @@ class Hoe
|
|
274
301
|
end
|
275
302
|
|
276
303
|
def define_tasks # :nodoc:
|
304
|
+
def with_config # :nodoc:
|
305
|
+
rc = File.expand_path("~/.hoerc")
|
306
|
+
exists = File.exist? rc
|
307
|
+
config = exists ? YAML.load_file(rc) : {}
|
308
|
+
yield(config, rc)
|
309
|
+
end
|
310
|
+
|
277
311
|
desc 'Run the default tasks'
|
278
312
|
task :default => :test
|
279
313
|
|
@@ -301,6 +335,18 @@ class Hoe
|
|
301
335
|
############################################################
|
302
336
|
# Packaging and Installing
|
303
337
|
|
338
|
+
signing_key = nil
|
339
|
+
cert_chain = []
|
340
|
+
|
341
|
+
with_config do |config, path|
|
342
|
+
break unless config['signing_key_file'] and config['signing_cert_file']
|
343
|
+
key_file = File.expand_path config['signing_key_file'].to_s
|
344
|
+
signing_key = key_file if File.exist? key_file
|
345
|
+
|
346
|
+
cert_file = File.expand_path config['signing_cert_file'].to_s
|
347
|
+
cert_chain << cert_file if File.exist? cert_file
|
348
|
+
end
|
349
|
+
|
304
350
|
self.spec = Gem::Specification.new do |s|
|
305
351
|
s.name = name
|
306
352
|
s.version = version
|
@@ -338,6 +384,11 @@ class Hoe
|
|
338
384
|
s.test_files = Dir[*test_globs]
|
339
385
|
end
|
340
386
|
|
387
|
+
if signing_key and cert_chain then
|
388
|
+
s.signing_key = signing_key
|
389
|
+
s.cert_chain = cert_chain
|
390
|
+
end
|
391
|
+
|
341
392
|
# Do any extra stuff the user wants
|
342
393
|
spec_extras.each do |msg, val|
|
343
394
|
case val
|
@@ -424,7 +475,7 @@ class Hoe
|
|
424
475
|
|
425
476
|
Rake::RDocTask.new(:docs) do |rd|
|
426
477
|
rd.main = "README.txt"
|
427
|
-
rd.options << '-d' if RUBY_PLATFORM !~ /win32/ and `which dot` =~ /\/dot/
|
478
|
+
rd.options << '-d' if RUBY_PLATFORM !~ /win32/ and `which dot` =~ /\/dot/ and not ENV['NODOT']
|
428
479
|
rd.rdoc_dir = 'doc'
|
429
480
|
files = spec.files.grep(rdoc_pattern)
|
430
481
|
files -= ['Manifest.txt']
|
@@ -454,32 +505,14 @@ class Hoe
|
|
454
505
|
|
455
506
|
# no doco for this one
|
456
507
|
task :publish_on_announce do
|
457
|
-
with_config do |
|
458
|
-
if
|
459
|
-
Rake::Task['publish_docs'].invoke
|
460
|
-
end
|
508
|
+
with_config do |config, _|
|
509
|
+
Rake::Task['publish_docs'].invoke if config["publish_on_announce"]
|
461
510
|
end
|
462
511
|
end
|
463
512
|
|
464
513
|
############################################################
|
465
514
|
# Misc/Maintenance:
|
466
515
|
|
467
|
-
def with_config(create=false) # :nodoc:
|
468
|
-
require 'yaml'
|
469
|
-
rc = File.expand_path("~/.hoerc")
|
470
|
-
|
471
|
-
unless create then
|
472
|
-
if test ?f, rc then
|
473
|
-
config = YAML.load_file(rc)
|
474
|
-
yield(config, rc)
|
475
|
-
end
|
476
|
-
else
|
477
|
-
unless test ?f, rc then
|
478
|
-
yield(rc)
|
479
|
-
end
|
480
|
-
end
|
481
|
-
end
|
482
|
-
|
483
516
|
desc 'Run ZenTest against the package'
|
484
517
|
task :audit do
|
485
518
|
libs = %w(lib test ext).join(File::PATH_SEPARATOR)
|
@@ -496,10 +529,12 @@ class Hoe
|
|
496
529
|
|
497
530
|
desc 'Create a fresh ~/.hoerc file'
|
498
531
|
task :config_hoe do
|
499
|
-
with_config
|
500
|
-
|
532
|
+
with_config do |config, path|
|
533
|
+
default_config = {
|
501
534
|
"exclude" => /tmp$|CVS|\.svn/,
|
502
535
|
"publish_on_announce" => false,
|
536
|
+
"signing_key_file" => "~/.gem/gem-private_key.pem",
|
537
|
+
"signing_cert_file" => "~/.gem/gem-public_cert.pem",
|
503
538
|
"blogs" => [ {
|
504
539
|
"user" => "user",
|
505
540
|
"url" => "url",
|
@@ -510,14 +545,12 @@ class Hoe
|
|
510
545
|
"password"=>"password",
|
511
546
|
} ],
|
512
547
|
}
|
513
|
-
File.open(
|
514
|
-
YAML.dump(
|
548
|
+
File.open(path, "w") do |f|
|
549
|
+
YAML.dump(default_config.merge(config), f)
|
515
550
|
end
|
516
|
-
end
|
517
551
|
|
518
|
-
with_config do |rc, path|
|
519
552
|
editor = ENV['EDITOR'] || 'vi'
|
520
|
-
system "#{editor} #{path}"
|
553
|
+
system "#{editor} #{path}" if ENV['SHOW_EDITOR'] != 'no'
|
521
554
|
end
|
522
555
|
end
|
523
556
|
|
@@ -545,8 +578,9 @@ class Hoe
|
|
545
578
|
require 'xmlrpc/client'
|
546
579
|
|
547
580
|
with_config do |config, path|
|
548
|
-
|
581
|
+
break unless config['blogs']
|
549
582
|
|
583
|
+
subject, title, body, urls = announcement
|
550
584
|
body += "\n\n#{urls}"
|
551
585
|
|
552
586
|
config['blogs'].each do |site|
|
@@ -596,6 +630,56 @@ class Hoe
|
|
596
630
|
end
|
597
631
|
end
|
598
632
|
|
633
|
+
desc 'Generate a key for signing your gems.'
|
634
|
+
task :generate_key do
|
635
|
+
email = spec.email
|
636
|
+
abort "No email in your gemspec" if email.nil? or email.empty?
|
637
|
+
|
638
|
+
key_file = with_config { |config, _| config['signing_key_file'] }
|
639
|
+
cert_file = with_config { |config, _| config['signing_cert_file'] }
|
640
|
+
|
641
|
+
if key_file.nil? or cert_file.nil? then
|
642
|
+
ENV['SHOW_EDITOR'] ||= 'no'
|
643
|
+
Rake::Task['config_hoe'].invoke
|
644
|
+
|
645
|
+
key_file = with_config { |config, _| config['signing_key_file'] }
|
646
|
+
cert_file = with_config { |config, _| config['signing_cert_file'] }
|
647
|
+
end
|
648
|
+
|
649
|
+
key_file = File.expand_path key_file
|
650
|
+
cert_file = File.expand_path cert_file
|
651
|
+
|
652
|
+
unless File.exist? key_file or File.exist? cert_file then
|
653
|
+
sh "gem cert --build #{email}"
|
654
|
+
mv "gem-private_key.pem", key_file, :verbose => true
|
655
|
+
mv "gem-public_cert.pem", cert_file, :verbose => true
|
656
|
+
|
657
|
+
puts "Installed key and certificate."
|
658
|
+
|
659
|
+
rf = RubyForge.new
|
660
|
+
rf.login
|
661
|
+
|
662
|
+
cert_package = "#{rubyforge_name}-certificates"
|
663
|
+
|
664
|
+
begin
|
665
|
+
rf.lookup 'package', cert_package
|
666
|
+
rescue
|
667
|
+
rf.create_package rubyforge_name, cert_package
|
668
|
+
end
|
669
|
+
|
670
|
+
begin
|
671
|
+
rf.lookup('release', cert_package)['certificates']
|
672
|
+
rf.add_file rubyforge_name, cert_package, 'certificates', cert_file
|
673
|
+
rescue
|
674
|
+
rf.add_release rubyforge_name, cert_package, 'certificates', cert_file
|
675
|
+
end
|
676
|
+
|
677
|
+
puts "Uploaded certificate to release \"certificates\" in package #{cert_package}"
|
678
|
+
else
|
679
|
+
puts "Keys already exist."
|
680
|
+
end
|
681
|
+
end
|
682
|
+
|
599
683
|
end # end define
|
600
684
|
|
601
685
|
def announcement # :nodoc:
|
data/test/test_hoe.rb
CHANGED
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: hoe
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.
|
7
|
-
date: 2007-
|
6
|
+
version: 1.3.0
|
7
|
+
date: 2007-08-13 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
|
@@ -59,7 +59,7 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 0.4.
|
62
|
+
version: 0.4.4
|
63
63
|
version:
|
64
64
|
- !ruby/object:Gem::Dependency
|
65
65
|
name: rake
|