hoe 1.0.2 → 1.0.4

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.
Files changed (5) hide show
  1. data/History.txt +17 -0
  2. data/README.txt +32 -39
  3. data/lib/hoe.rb +113 -13
  4. data/test/test_hoe.rb +6 -2
  5. metadata +11 -2
@@ -1,3 +1,20 @@
1
+ = 1.0.4 2006-09-23
2
+
3
+ * Damnit... I messed up. There is no rubygems gem to be dependent upon. Duh.
4
+
5
+ = 1.0.3 2006-09-23
6
+
7
+ * Added debug_gem rule.
8
+ * Added lots of doco.
9
+ * Added proper deps to hoe for other's gems, and rake/rubyforge/rubygems for hoe.
10
+ * Added ridocs to generate ri locally for testing.
11
+ * Added support for multiple authors.
12
+ * Fixed include paths.
13
+ * Rdoc now includes any top level .txt files.
14
+ * Renamed deploy to release.
15
+ * Renamed upload to publish_docs.
16
+ * publish_docs is now smart about subprojects and missing subdirectories.
17
+
1
18
  = 1.0.2 2006-09-20
2
19
 
3
20
  * Wee little tests.
data/README.txt CHANGED
@@ -1,47 +1,39 @@
1
1
  Hoe
2
2
  http://rubyforge.org/projects/seattlerb/
3
+ http://seattlerb.rubyforge.org/hoe/
3
4
  ryand-ruby@zenspider.com
4
5
 
5
- ** DESCRIPTION:
6
+ == DESCRIPTION:
6
7
 
7
8
  Hoe is a simple rake/rubygems helper for project Rakefiles. It
8
9
  generates all the usual tasks for projects including rdoc generation,
9
10
  testing, packaging, and deployment.
10
11
 
11
- As an example:
12
-
13
- require './lib/hoe.rb'
14
-
15
- Hoe.new("Hoe", Hoe::VERSION) do |p|
16
- p.rubyforge_name = "seattlerb"
17
- p.summary = "Hoe is a way to write Rakefiles much easier and cleaner."
18
- end
19
-
20
- generates:
21
-
22
- % rake -T
23
- rake audit # Run ZenTest against the package
24
- rake clean # Clean up all the extras
25
- rake clobber_docs # Remove rdoc products
26
- rake clobber_package # Remove package products
27
- rake default # Run the default tasks
28
- rake docs # Build the docs HTML Files
29
- rake install # Install the package. Uses PREFIX and RUBYLIB
30
- rake multi # Run the test suite using multiruby
31
- rake package # Build all the packages
32
- rake redocs # Force a rebuild of the RDOC files
33
- rake repackage # Force a rebuild of the package files
34
- rake test # Run the test suite. Use FILTER to add to the command line.
35
- rake uninstall # Uninstall the package.
36
- rake upload # Upload RDoc to RubyForge
37
-
38
- ** FEATURES/PROBLEMS:
12
+ Tasks Provided:
13
+
14
+ * audit - Run ZenTest against the package
15
+ * clean - Clean up all the extras
16
+ * debug_gem - Show information about the gem
17
+ * default - Run the default tasks
18
+ * docs - Build the docs HTML Files
19
+ * install - Install the package. Uses PREFIX and RUBYLIB
20
+ * multi - Run the test suite using multiruby
21
+ * package - Build all the packages
22
+ * publish_docs - Publish RDoc to RubyForge
23
+ * release - Package and upload the release to RubyForge
24
+ * test - Run the test suite. Use FILTER to add to the command line.
25
+ * uninstall - Uninstall the package.
26
+ * upload - Upload RDoc to RubyForge
27
+
28
+ See class rdoc for help. Hint: ri Hoe
29
+
30
+ == FEATURES/PROBLEMS:
39
31
 
40
- + Really basic and rather specific to Seattle.rb/ZenSpider projects
41
- + Will become cleaner/better very quickly.
42
- + At some point it will have tests and stuff.
32
+ * Really basic and rather specific to Seattle.rb/ZenSpider projects
33
+ * Will become cleaner/better very quickly.
34
+ * At some point it will have real tests and stuff.
43
35
 
44
- ** SYNOPSYS:
36
+ == SYNOPSYS:
45
37
 
46
38
  require './lib/hoe.rb'
47
39
 
@@ -51,16 +43,17 @@ generates:
51
43
 
52
44
  # ... project specific tasks ...
53
45
 
54
- ** REQUIREMENTS:
46
+ == REQUIREMENTS:
55
47
 
56
- + rake
57
- + rubygems
48
+ * rake
49
+ * rubyforge
50
+ * rubygems
58
51
 
59
- ** INSTALL:
52
+ == INSTALL:
60
53
 
61
- + sudo gem install hoe
54
+ * sudo gem install hoe
62
55
 
63
- ** LICENSE:
56
+ == LICENSE:
64
57
 
65
58
  (The MIT License)
66
59
 
data/lib/hoe.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # -*- ruby -*-
2
2
 
3
- begin require 'rubygems'; rescue LoadError; end
3
+ require 'rubygems'
4
4
  require 'rake'
5
5
  require 'rake/contrib/sshpublisher'
6
6
  require 'rake/gempackagetask'
@@ -8,8 +8,73 @@ require 'rake/rdoctask'
8
8
  require 'rake/testtask'
9
9
  require 'rbconfig'
10
10
 
11
+ ##
12
+ # hoe - a tool to help rake
13
+ #
14
+ # Hoe is a simple rake/rubygems helper for project Rakefiles. It
15
+ # generates all the usual tasks for projects including rdoc generation,
16
+ # testing, packaging, and deployment.
17
+ #
18
+ # == Using Hoe
19
+ #
20
+ # === Basics
21
+ #
22
+ # Use this as a minimal starting point:
23
+ #
24
+ # require 'hoe'
25
+ #
26
+ # Hoe.new("project_name", '1.0.0') do |p|
27
+ # p.rubyforge_name = "rf_project"
28
+ # # add other details here
29
+ # end
30
+ #
31
+ # # add other tasks here
32
+ #
33
+ # === Tasks Provided:
34
+ #
35
+ # * audit - Run ZenTest against the package
36
+ # * clean - Clean up all the extras
37
+ # * debug_gem - Show information about the gem
38
+ # * default - Run the default tasks
39
+ # * docs - Build the docs HTML Files
40
+ # * install - Install the package. Uses PREFIX and RUBYLIB
41
+ # * multi - Run the test suite using multiruby
42
+ # * package - Build all the packages
43
+ # * publish_docs - Publish RDoc to RubyForge
44
+ # * release - Package and upload the release to RubyForge
45
+ # * test - Run the test suite. Use FILTER to add to the command line.
46
+ # * uninstall - Uninstall the package.
47
+ # * upload - Upload RDoc to RubyForge
48
+ #
49
+ # === Attributes
50
+ #
51
+ # The attributes that you can provide inside the new block above are:
52
+ #
53
+ # ==== Mandatory (or damn good to set)
54
+ #
55
+ # * author - The author of the package. (can be array of authors)
56
+ # * description - A description of the project.
57
+ # * email - The author's email address.
58
+ # * name - The name of the release.
59
+ # * summary - A short summary of the project.
60
+ # * url - The url of the project.
61
+ # * version - The version. Don't hardcode! use a constant in the project.
62
+ #
63
+ # ==== Optional
64
+ #
65
+ # * clean_globs - An array of file patterns to delete on clean.
66
+ # * extra_deps - An array of rubygem dependencies.
67
+ # * rubyforge_name - The name of the rubyforge project. [default: name.downcase]
68
+ #
69
+ # === Environment Variables
70
+ #
71
+ # * PREFIX - Used to specify a custom install location (for rake install).
72
+ # * RUBY_FLAGS - Used to specify flags to ruby [has smart default].
73
+ # * RUBY_DEBUG - Used to add extra flags to RUBY_FLAGS.
74
+ # * FILTER - Used to add flags to test_unit (e.g., -n test_borked)
75
+
11
76
  class Hoe
12
- VERSION = '1.0.2'
77
+ VERSION = '1.0.4'
13
78
 
14
79
  rubyprefix = Config::CONFIG['prefix']
15
80
  sitelibdir = Config::CONFIG['sitelibdir']
@@ -22,7 +87,7 @@ class Hoe
22
87
  end
23
88
  RUBY_DEBUG = ENV['RUBY_DEBUG']
24
89
  RUBY_FLAGS = ENV['RUBY_FLAGS'] ||
25
- "-w -I#{%w(lib bin ../../RubyInline/dev).join(File::PATH_SEPARATOR)}" +
90
+ "-w -I#{%w(lib bin test).join(File::PATH_SEPARATOR)}" +
26
91
  (RUBY_DEBUG ? " #{RUBY_DEBUG}" : '')
27
92
  FILTER = ENV['FILTER'] # for tests (eg FILTER="-n test_blah")
28
93
 
@@ -37,10 +102,17 @@ class Hoe
37
102
  self.url = "http://www.zenspider.com/ZSS/Products/#{name}/"
38
103
  self.author = "Ryan Davis"
39
104
  self.email = "ryand-ruby@zenspider.com"
40
- self.clean_globs = %w(diff diff.txt demo.rb *.gem **/*~)
105
+ self.clean_globs = %w(diff diff.txt demo.rb ri *.gem **/*~)
41
106
  self.description = "#{author} is too lazy to write a description"
42
107
  self.summary = "#{author} is too lazy to write a summary"
43
- self.extra_deps = [name == 'hoe' ? 'rake' : 'hoe']
108
+ self.extra_deps = []
109
+
110
+ if name == 'hoe' then
111
+ extra_deps << ['rake']
112
+ extra_deps << ['rubyforge']
113
+ else
114
+ extra_deps << ['hoe']
115
+ end
44
116
 
45
117
  yield self if block_given?
46
118
 
@@ -68,7 +140,12 @@ class Hoe
68
140
  s.name = name
69
141
  s.version = version
70
142
  s.summary = summary
71
- s.author = author
143
+ case author
144
+ when Array
145
+ s.authors = author
146
+ else
147
+ s.author = author
148
+ end
72
149
  s.email = email
73
150
  s.homepage = url
74
151
  s.rubyforge_project = rubyforge_name
@@ -86,8 +163,11 @@ class Hoe
86
163
  s.require_paths = Dir['{lib,test}']
87
164
  s.has_rdoc = true
88
165
  s.test_suite_file = "test/test_all.rb" if test ?f, "test/test_all.rb"
166
+ end
89
167
 
90
- puts s.to_ruby if $DEBUG
168
+ desc 'Show information about the gem.'
169
+ task :debug_gem do
170
+ puts spec.to_ruby
91
171
  end
92
172
 
93
173
  self.lib_files = spec.files.grep(/^lib/)
@@ -121,8 +201,8 @@ class Hoe
121
201
  end
122
202
  end
123
203
 
124
- desc 'Deploy the package to rubyforge.'
125
- task :deploy => [:clean, :package] do |t|
204
+ desc 'Package and upload the release to rubyforge.'
205
+ task :release => [:clean, :package] do |t|
126
206
  v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"
127
207
  abort "Versions don't match #{v} vs #{version}" if v != version
128
208
  require 'rubyforge'
@@ -154,16 +234,32 @@ class Hoe
154
234
  rd.main = "README.txt"
155
235
  rd.options << '-d' if `which dot` =~ /\/dot/ and RUBY_PLATFORM !~ /win32/
156
236
  rd.rdoc_dir = 'doc'
157
- rd.rdoc_files.push(*spec.files.grep(/^(lib|bin|READ|Hist)/))
237
+ rd.rdoc_files.push(*spec.files.grep(/^(lib|bin)|txt$/))
158
238
  end
159
239
 
160
- desc 'Upload RDoc to RubyForge'
161
- task :upload => [:clean, :docs] do
240
+ desc "Generate ri locally for testing"
241
+ task :ridocs => :clean do
242
+ sh %q{ rdoc --ri -o ri . }
243
+ end
244
+
245
+ desc 'Publish RDoc to RubyForge'
246
+ task :publish_docs => [:clean, :docs] do
162
247
  config = YAML.load(File.read(File.expand_path("~/.rubyforge/config.yml")))
163
- user = "#{config["username"]}rubyforge.org"
248
+ user = "#{config["username"]}@rubyforge.org"
164
249
  project = "/var/www/gforge-projects/#{rubyforge_name}"
250
+ project += "/#{name}" if rubyforge_name != name
165
251
  local_dir = 'doc'
166
252
  pub = Rake::SshDirPublisher.new user, project, local_dir
253
+ if rubyforge_name != name then
254
+ def pub.upload
255
+ begin
256
+ super
257
+ rescue
258
+ # project directory probably doesn't exist, transfer as a whole
259
+ sh %{scp -qr #{local_dir} #{host}:#{remote_dir}}
260
+ end
261
+ end
262
+ end
167
263
  pub.upload
168
264
  end
169
265
 
@@ -199,3 +295,7 @@ class Hoe
199
295
  send msg, cmd
200
296
  end
201
297
  end
298
+
299
+ class ::Rake::SshDirPublisher # :nodoc:
300
+ attr_reader :host, :remote_dir, :local_dir
301
+ end
@@ -10,9 +10,13 @@ class TestHoe < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_basics
13
+ 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)
15
+ expected += boring
16
+
13
17
  Hoe.new('blah', '1.0.0')
14
18
  tasks = Rake.application.tasks.map { |t| t.name }.sort
15
- expected = ["audit", "clean", "clobber", "clobber_docs", "clobber_package", "default", "deploy", "doc", "doc/index.html", "docs", "gem", "install", "multi", "package", "pkg", "pkg/blah-1.0.0", "pkg/blah-1.0.0.gem", "pkg/blah-1.0.0.tgz", "redocs", "repackage", "test", "uninstall", "upload"]
16
- assert_equal expected, tasks
19
+
20
+ assert_equal expected.sort, tasks
17
21
  end
18
22
  end
metadata CHANGED
@@ -3,8 +3,8 @@ 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.2
7
- date: 2006-09-20 00:00:00 -07:00
6
+ version: 1.0.4
7
+ date: 2006-09-23 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
@@ -58,3 +58,12 @@ dependencies:
58
58
  - !ruby/object:Gem::Version
59
59
  version: 0.0.0
60
60
  version:
61
+ - !ruby/object:Gem::Dependency
62
+ name: rubyforge
63
+ version_requirement:
64
+ version_requirements: !ruby/object:Gem::Version::Requirement
65
+ requirements:
66
+ - - ">"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.0.0
69
+ version: