hoe 1.7.0 → 1.8.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 +11 -0
- data/README.txt +25 -21
- data/bin/sow +1 -4
- data/lib/hoe.rb +179 -25
- data/test/test_hoe.rb +3 -0
- metadata +5 -5
data/History.txt
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
=== 1.8.0 / 2008-10-09
|
2
|
+
|
3
|
+
* 5 minor enhancements:
|
4
|
+
|
5
|
+
* Added Hoe.add_include_dirs to make setting up rake deps easier.
|
6
|
+
* Removed unused optional group arg in sow.
|
7
|
+
* Added testlib variable so you can specify what test library to use.
|
8
|
+
* Added deps:list to help you review dependent projects.
|
9
|
+
* Added deps:email to help you communicate with dependent projects.
|
10
|
+
* Added deps:fetch to help you search through dependent projects.
|
11
|
+
|
1
12
|
=== 1.7.0 / 2008-06-30
|
2
13
|
|
3
14
|
* 3 minor enhancements:
|
data/README.txt
CHANGED
@@ -12,27 +12,31 @@ testing, packaging, and deployment.
|
|
12
12
|
|
13
13
|
Tasks Provided:
|
14
14
|
|
15
|
-
* announce
|
16
|
-
* audit
|
17
|
-
* check_manifest
|
18
|
-
* clean
|
19
|
-
* config_hoe
|
20
|
-
* debug_gem
|
21
|
-
* default
|
22
|
-
*
|
23
|
-
*
|
24
|
-
*
|
25
|
-
*
|
26
|
-
*
|
27
|
-
*
|
28
|
-
*
|
29
|
-
*
|
30
|
-
*
|
31
|
-
*
|
32
|
-
*
|
33
|
-
*
|
34
|
-
*
|
35
|
-
*
|
15
|
+
* announce - Create news email file and post to rubyforge.
|
16
|
+
* audit - Run ZenTest against the package.
|
17
|
+
* check_manifest - Verify the manifest.
|
18
|
+
* clean - Clean up all the extras.
|
19
|
+
* config_hoe - Create a fresh ~/.hoerc file.
|
20
|
+
* debug_gem - Show information about the gem.
|
21
|
+
* default - Run the default tasks.
|
22
|
+
* deps:email - Print a contact list for gems dependent on this gem
|
23
|
+
* deps:fetch - Fetch all the dependent gems of this gem into tarballs
|
24
|
+
* deps:list - List all the dependent gems of this gem
|
25
|
+
* docs - Build the docs HTML Files
|
26
|
+
* email - Generate email announcement file.
|
27
|
+
* gem - Build the gem file hoe-1.8.0.gem
|
28
|
+
* generate_key - Generate a key for signing your gems.
|
29
|
+
* install_gem - Install the package as a gem.
|
30
|
+
* multi - Run the test suite using multiruby.
|
31
|
+
* package - Build all the packages
|
32
|
+
* post_blog - Post announcement to blog.
|
33
|
+
* post_news - Post announcement to rubyforge.
|
34
|
+
* publish_docs - Publish RDoc to RubyForge.
|
35
|
+
* release - Package and upload the release to rubyforge.
|
36
|
+
* ridocs - Generate ri locally for testing.
|
37
|
+
* tasks - Generate a list of tasks for doco.
|
38
|
+
* test - Run the test suite.
|
39
|
+
* test_deps - Show which test files fail when run alone.
|
36
40
|
|
37
41
|
See class rdoc for help. Hint: ri Hoe
|
38
42
|
|
data/bin/sow
CHANGED
@@ -4,18 +4,15 @@ $t ||= false
|
|
4
4
|
$d ||= false
|
5
5
|
|
6
6
|
if defined? $h then
|
7
|
-
puts "usage: #{File.dirname($0)} [-d|-t]
|
7
|
+
puts "usage: #{File.dirname($0)} [-d|-t] project"
|
8
8
|
puts " -t = add project to subdir under 'trunk'"
|
9
9
|
puts " -d = add project to subdir under 'dev'"
|
10
10
|
end
|
11
11
|
|
12
12
|
abort "You must specify only one of -t or -d" if $t and $d
|
13
13
|
|
14
|
-
group = ARGV.shift
|
15
14
|
project = ARGV.shift
|
16
15
|
|
17
|
-
project ||= group
|
18
|
-
|
19
16
|
# prevents false positives on my tag reporter
|
20
17
|
X = 'FI' + 'X'
|
21
18
|
|
data/lib/hoe.rb
CHANGED
@@ -38,27 +38,31 @@ end
|
|
38
38
|
#
|
39
39
|
# === Tasks Provided:
|
40
40
|
#
|
41
|
-
# announce::
|
42
|
-
# audit::
|
43
|
-
# check_manifest::
|
44
|
-
# clean::
|
45
|
-
# config_hoe::
|
46
|
-
# debug_gem::
|
47
|
-
# default::
|
48
|
-
#
|
49
|
-
#
|
50
|
-
#
|
51
|
-
#
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
60
|
-
#
|
61
|
-
#
|
41
|
+
# announce:: Create news email file and post to rubyforge.
|
42
|
+
# audit:: Run ZenTest against the package.
|
43
|
+
# check_manifest:: Verify the manifest.
|
44
|
+
# clean:: Clean up all the extras.
|
45
|
+
# config_hoe:: Create a fresh ~/.hoerc file.
|
46
|
+
# debug_gem:: Show information about the gem.
|
47
|
+
# default:: Run the default tasks.
|
48
|
+
# deps:email:: Print a contact list for gems dependent on this gem
|
49
|
+
# deps:fetch:: Fetch all the dependent gems of this gem into tarballs
|
50
|
+
# deps:list:: List all the dependent gems of this gem
|
51
|
+
# docs:: Build the docs HTML Files
|
52
|
+
# email:: Generate email announcement file.
|
53
|
+
# gem:: Build the gem file hoe-1.8.0.gem
|
54
|
+
# generate_key:: Generate a key for signing your gems.
|
55
|
+
# install_gem:: Install the package as a gem.
|
56
|
+
# multi:: Run the test suite using multiruby.
|
57
|
+
# package:: Build all the packages
|
58
|
+
# post_blog:: Post announcement to blog.
|
59
|
+
# post_news:: Post announcement to rubyforge.
|
60
|
+
# publish_docs:: Publish RDoc to RubyForge.
|
61
|
+
# release:: Package and upload the release to rubyforge.
|
62
|
+
# ridocs:: Generate ri locally for testing.
|
63
|
+
# tasks:: Generate a list of tasks for doco.
|
64
|
+
# test:: Run the test suite.
|
65
|
+
# test_deps:: Show which test files fail when run alone.
|
62
66
|
#
|
63
67
|
# === Extra Configuration Options:
|
64
68
|
#
|
@@ -120,7 +124,8 @@ end
|
|
120
124
|
#
|
121
125
|
|
122
126
|
class Hoe
|
123
|
-
VERSION = '1.
|
127
|
+
VERSION = '1.8.0'
|
128
|
+
GEMURL = URI.parse 'http://gems.rubyforge.org' # for namespace :deps below
|
124
129
|
|
125
130
|
ruby_prefix = Config::CONFIG['prefix']
|
126
131
|
sitelibdir = Config::CONFIG['sitelibdir']
|
@@ -303,6 +308,11 @@ class Hoe
|
|
303
308
|
|
304
309
|
attr_accessor :test_globs
|
305
310
|
|
311
|
+
##
|
312
|
+
# Optional: What test library to require [default: test/unit]
|
313
|
+
|
314
|
+
attr_accessor :testlib
|
315
|
+
|
306
316
|
##
|
307
317
|
# Optional: The url(s) of the project. (can be array). Auto-populates.
|
308
318
|
|
@@ -313,6 +323,15 @@ class Hoe
|
|
313
323
|
|
314
324
|
attr_accessor :version
|
315
325
|
|
326
|
+
##
|
327
|
+
# Add extra dirs to both $: and RUBY_FLAGS (for test runs)
|
328
|
+
|
329
|
+
def self.add_include_dirs(*dirs)
|
330
|
+
dirs = dirs.flatten
|
331
|
+
$:.unshift(*dirs)
|
332
|
+
Hoe::RUBY_FLAGS.sub!(/-I/, "-I#{dirs.join(":")}:")
|
333
|
+
end
|
334
|
+
|
316
335
|
def normalize_deps deps
|
317
336
|
Array(deps).map { |o| String === o ? [o] : o }
|
318
337
|
end
|
@@ -328,7 +347,7 @@ class Hoe
|
|
328
347
|
|
329
348
|
# Defaults
|
330
349
|
self.author = []
|
331
|
-
self.clean_globs = %w(diff diff.txt email.txt ri
|
350
|
+
self.clean_globs = %w(diff diff.txt email.txt ri deps .source_index
|
332
351
|
*.gem *~ **/*~ *.rbc **/*.rbc)
|
333
352
|
self.description_sections = %w(description)
|
334
353
|
self.blog_categories = [name]
|
@@ -345,6 +364,7 @@ class Hoe
|
|
345
364
|
self.spec_extras = {}
|
346
365
|
self.summary_sentences = 1
|
347
366
|
self.test_globs = ['test/**/test_*.rb']
|
367
|
+
self.testlib = 'test/unit'
|
348
368
|
self.post_install_message = nil
|
349
369
|
|
350
370
|
yield self if block_given?
|
@@ -635,6 +655,133 @@ class Hoe
|
|
635
655
|
end
|
636
656
|
end
|
637
657
|
|
658
|
+
############################################################
|
659
|
+
# Dependencies:
|
660
|
+
|
661
|
+
namespace :deps do
|
662
|
+
require 'zlib' # HACK for rubygems 1.3.0
|
663
|
+
require 'rubygems/remote_fetcher'
|
664
|
+
|
665
|
+
@@index = nil
|
666
|
+
|
667
|
+
def self.get_source_index
|
668
|
+
return @@index if @@index
|
669
|
+
|
670
|
+
dump = unless File.exist? '.source_index' then
|
671
|
+
url = GEMURL + "Marshal.#{Gem.marshal_version}.Z"
|
672
|
+
dump = Gem::RemoteFetcher.fetcher.fetch_path url
|
673
|
+
dump = Gem.inflate dump
|
674
|
+
open '.source_index', 'wb' do |io| io.write dump end
|
675
|
+
dump
|
676
|
+
else
|
677
|
+
open '.source_index', 'rb' do |io| io.read end
|
678
|
+
end
|
679
|
+
|
680
|
+
@@index = Marshal.load dump
|
681
|
+
end
|
682
|
+
|
683
|
+
def self.get_latest_gems
|
684
|
+
@@cache ||= get_source_index.latest_specs
|
685
|
+
end
|
686
|
+
|
687
|
+
def self.get_gems_by_name
|
688
|
+
@@by_name ||= Hash[*get_latest_gems.map { |gem|
|
689
|
+
[gem.name, gem, gem.full_name, gem]
|
690
|
+
}.flatten]
|
691
|
+
end
|
692
|
+
|
693
|
+
def self.dependent_upon name
|
694
|
+
get_latest_gems.find_all { |gem|
|
695
|
+
gem.dependencies.any? { |dep| dep.name == name }
|
696
|
+
}
|
697
|
+
end
|
698
|
+
|
699
|
+
|
700
|
+
desc "List all the dependent gems of this gem"
|
701
|
+
task :list do
|
702
|
+
gems = self.get_gems_by_name
|
703
|
+
gem = gems[self.name]
|
704
|
+
|
705
|
+
abort "Couldn't find gem: #{self.name}" unless gem
|
706
|
+
|
707
|
+
deps = self.dependent_upon self.name
|
708
|
+
max = deps.map { |s| s.full_name.size }.max
|
709
|
+
|
710
|
+
puts " dependents:"
|
711
|
+
unless deps.empty? then
|
712
|
+
deps.sort_by { |spec| spec.full_name }.each do |spec|
|
713
|
+
vers = spec.dependencies.find {|s| s.name == name }.requirement_list
|
714
|
+
puts " %-*s - %s" % [max, spec.full_name, vers.join(", ")]
|
715
|
+
end
|
716
|
+
else
|
717
|
+
puts " none"
|
718
|
+
end
|
719
|
+
end
|
720
|
+
|
721
|
+
desc "Print a contact list for gems dependent on this gem"
|
722
|
+
task :email do
|
723
|
+
gems = self.get_gems_by_name
|
724
|
+
gem = gems[self.name]
|
725
|
+
|
726
|
+
abort "Couldn't find gem: #{self.name}" unless gem
|
727
|
+
|
728
|
+
deps = self.dependent_upon self.name
|
729
|
+
|
730
|
+
email = deps.map { |s| s.email }.flatten.sort.uniq
|
731
|
+
email = email.map { |s| s.split(/,\s*/) }.flatten.sort.uniq
|
732
|
+
|
733
|
+
email.map! { |s| # don't you people realize how easy this is?
|
734
|
+
s.gsub(/ at | _at_ |\s*(atmark|@nospam@|-at?-|@at?@|<at?>|\[at?\]|\(at?\))\s*/i, '@').gsub(/\s*(dot|\[d(ot)?\]|\.dot\.)\s*/i, '.').gsub(/\s+com$/, '.com')
|
735
|
+
}
|
736
|
+
|
737
|
+
bad, good = email.partition { |e| e !~ /^[\w.+-]+\@[\w.+-]+$/ }
|
738
|
+
|
739
|
+
warn "Rejecting #{bad.size} email. I couldn't unmunge them." unless
|
740
|
+
bad.empty?
|
741
|
+
|
742
|
+
puts good.join(", ")
|
743
|
+
end
|
744
|
+
|
745
|
+
desc "Fetch all the dependent gems of this gem into tarballs"
|
746
|
+
task :fetch do
|
747
|
+
gems = self.get_gems_by_name
|
748
|
+
gem = gems[self.name]
|
749
|
+
deps = self.dependent_upon self.name
|
750
|
+
|
751
|
+
mkdir "deps" unless File.directory? "deps"
|
752
|
+
Dir.chdir "deps" do
|
753
|
+
begin
|
754
|
+
deps.sort_by { |spec| spec.full_name }.each do |spec|
|
755
|
+
full_name = spec.full_name
|
756
|
+
tgz_name = "#{full_name}.tgz"
|
757
|
+
gem_name = "#{full_name}.gem"
|
758
|
+
|
759
|
+
next if File.exist? tgz_name
|
760
|
+
FileUtils.rm_rf [full_name, gem_name]
|
761
|
+
|
762
|
+
begin
|
763
|
+
warn "downloading #{full_name}"
|
764
|
+
Gem::RemoteFetcher.fetcher.download(spec, GEMURL, Dir.pwd)
|
765
|
+
FileUtils.mv "cache/#{gem_name}", '.'
|
766
|
+
rescue Gem::RemoteFetcher::FetchError
|
767
|
+
warn " failed"
|
768
|
+
next
|
769
|
+
end
|
770
|
+
|
771
|
+
warn "converting #{gem_name} to tarball"
|
772
|
+
|
773
|
+
system "gem unpack #{gem_name} 2> /dev/null"
|
774
|
+
system "gem spec -l #{gem_name} > #{full_name}/gemspec.rb"
|
775
|
+
system "tar zmcf #{tgz_name} #{full_name}"
|
776
|
+
FileUtils.rm_rf [full_name, gem_name, "cache"]
|
777
|
+
end
|
778
|
+
ensure
|
779
|
+
FileUtils.rm_rf "cache"
|
780
|
+
end
|
781
|
+
end
|
782
|
+
end
|
783
|
+
end
|
784
|
+
|
638
785
|
############################################################
|
639
786
|
# Misc/Maintenance:
|
640
787
|
|
@@ -825,7 +972,8 @@ class Hoe
|
|
825
972
|
cmd = if test ?f, 'test/test_all.rb' then
|
826
973
|
"#{RUBY_FLAGS} test/test_all.rb #{FILTER}"
|
827
974
|
else
|
828
|
-
tests = [
|
975
|
+
tests = ["rubygems", self.testlib] +
|
976
|
+
test_globs.map { |g| Dir.glob(g) }.flatten
|
829
977
|
tests.map! {|f| %Q(require "#{f}")}
|
830
978
|
"#{RUBY_FLAGS} -e '#{tests.join("; ")}' #{FILTER}"
|
831
979
|
end
|
@@ -862,5 +1010,11 @@ end
|
|
862
1010
|
|
863
1011
|
if $0 == __FILE__ then
|
864
1012
|
out = `rake -T | egrep -v "redocs|repackage|clobber|trunk"`
|
865
|
-
|
1013
|
+
if ARGV.empty? then
|
1014
|
+
# # default:: Run the default tasks.
|
1015
|
+
puts out.gsub(/(\s*)\#/, '::\1').gsub(/^rake /, '# ')
|
1016
|
+
else
|
1017
|
+
# * default - Run the default tasks.
|
1018
|
+
puts out.gsub(/\#/, '-').gsub(/^rake /, '* ')
|
1019
|
+
end
|
866
1020
|
end
|
data/test/test_hoe.rb
CHANGED
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: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-10-09 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -30,9 +30,9 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.8.
|
33
|
+
version: 0.8.3
|
34
34
|
version:
|
35
|
-
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: * announce
|
35
|
+
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: * announce - Create news email file and post to rubyforge. * audit - Run ZenTest against the package. * check_manifest - Verify the manifest. * clean - Clean up all the extras. * config_hoe - Create a fresh ~/.hoerc file. * debug_gem - Show information about the gem. * default - Run the default tasks. * deps:email - Print a contact list for gems dependent on this gem * deps:fetch - Fetch all the dependent gems of this gem into tarballs * deps:list - List all the dependent gems of this gem * docs - Build the docs HTML Files * email - Generate email announcement file. * gem - Build the gem file hoe-1.8.0.gem * generate_key - Generate a key for signing your gems. * install_gem - Install the package as a gem. * multi - Run the test suite using multiruby. * package - Build all the packages * post_blog - Post announcement to blog. * post_news - Post announcement to rubyforge. * publish_docs - Publish RDoc to RubyForge. * release - Package and upload the release to rubyforge. * ridocs - Generate ri locally for testing. * tasks - Generate a list of tasks for doco. * test - Run the test suite. * test_deps - Show which test files fail when run alone. See class rdoc for help. Hint: ri Hoe"
|
36
36
|
email:
|
37
37
|
- ryand-ruby@zenspider.com
|
38
38
|
executables:
|
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
74
|
requirements: []
|
75
75
|
|
76
76
|
rubyforge_project: seattlerb
|
77
|
-
rubygems_version: 1.
|
77
|
+
rubygems_version: 1.3.0
|
78
78
|
signing_key:
|
79
79
|
specification_version: 2
|
80
80
|
summary: Hoe is a simple rake/rubygems helper for project Rakefiles
|