Farmer Ted came to me the other day with a problem. He has about 10 different packages he wants to work on and periodically release, but sometimes it seems to him that maintaining a threshing machine is easier than it is maintaining all his Rakefiles and gemspecs. Most of his rakefiles are duplicated in every project yet differ slightly everywhere. His deployment rules that enhanced in one place and go stale in another. So I showed him another tool to help: Hoe!
Hoe is a tool that covers all the usual stuff you have in a project: documentation, testing, version compatibility (through multiruby), packaging, deployment, cleanup, and more. In fact, this:
require 'rubygems'
require 'hoe'
Hoe.new("thingy", '1.0.0') do |p|
p.rubyforge_name = "myproject"
p.summary = "I'm so happy that I don't have to write this stuff anymore."
end
gets you all of this for free:
% rake -T
rake audit # Run ZenTest against the package
rake clean # Clean up all the extras
rake clobber_docs # Remove rdoc products
rake clobber_package # Remove package products
rake default # Run the default tasks
rake deploy # Deploy the package to rubyforge.
rake docs # Build the docs HTML Files
rake install # Install the package. Uses PREFIX and RUBYLIB
rake multi # Run the test suite using multiruby
rake package # Build all the packages
rake redocs # Force a rebuild of the RDOC files
rake repackage # Force a rebuild of the package files
rake test # Run the test suite. Use FILTER to add to the command line.
rake uninstall # Uninstall the package.
rake upload # Upload RDoc to RubyForge
Farmer Ted tried it out and he's much much happier now.
Hoe is real young right now. Rough around the edges. Undocumented. Etc. You've been warned. That said, please try it out and let me know what you think.