Hoe 1.0 released

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.

sudo gem install hoe

Zenspider keeps coming up with great stuff!

Cool. You could also add the todo task :

desc “Look for TODO and FIXME tags in the code”
task :todo do
FileList['**/.rb’].exclude(‘pkg’).egrep
/#.
(FIXME|TODO|TBD|DEPRECATED)/
end


Cheers,
zimbatm

different

to be a lot
of overlap between the two projects. Yes? No?

Apparently, you Reap what you Hoe.

I’M SORRY I COULDN’T HELP IT!!!

  • Dan

This communication is the property of Qwest and may contain confidential
or
privileged information. Unauthorized use of this communication is
strictly
prohibited and may be unlawful. If you have received this communication
in error, please immediately notify the sender by reply e-mail and
destroy
all copies of the communication and any attachments.

On Wed, 20 Sep 2006, Ryan D. wrote:

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:

How does the use case for Hoe differ from REAP?

http://reap.rubyforge.org/

Since REAP tasks can be used as rake tasks, there seems to me to be a
lot
of overlap between the two projects. Yes? No?

Kirk H.

On Wed, 20 Sep 2006, Berger, Daniel wrote:

Apparently, you Reap what you Hoe.

I’M SORRY I COULDN’T HELP IT!!!

  • Dan

touche teacher. touche.

-a

On Sep 20, 2006, at 7:15 AM, [email protected] wrote:

How does the use case for Hoe differ from REAP?
http://reap.rubyforge.org/

Farmer Ted likes simplicity and clarity, not obfuscation and bulk:

% find hoe -type f | grep -v svn | xargs wc -l | tail -1
345 total

% find reap-6.0.2 -type f | xargs wc -l | tail -1
16301 total
% find facets-1.7.46 -type f | xargs wc -l | tail -1
67091 total

Since REAP tasks can be used as rake tasks, there seems to me to be
a lot of overlap between the two projects. Yes? No?

no, there is very little overlap, because my project is so small.

On Thu, 21 Sep 2006, Ryan D. wrote:

% find reap-6.0.2 -type f | xargs wc -l | tail -1
16301 total
% find facets-1.7.46 -type f | xargs wc -l | tail -1
67091 total

a man after my own heart!

-a

On Sep 20, 2006, at 6:20 AM, Jonas P. wrote:

Cool. You could also add the todo task :

desc “Look for TODO and FIXME tags in the code”
task :todo do
FileList[’**/.rb’].exclude(‘pkg’).egrep /#.(FIXME|TODO|TBD|
DEPRECATED)/
end

Actually, I have a script called progress for stuff like this. See
how perfect hoe must be??? :stuck_out_tongue:

Summary:

Number of files checked : 6
Number of files marked : 0 (0.00%)
Number of tags found : 0

Occurances:

Detail:

Summary:

Number of files checked : 6
Number of files marked : 0 (0.00%)
Number of tags found : 0

Occurances:

On Thu, 21 Sep 2006, Ryan D. wrote:

% find reap-6.0.2 -type f | xargs wc -l | tail -1
16301 total
% find facets-1.7.46 -type f | xargs wc -l | tail -1
67091 total

Since REAP tasks can be used as rake tasks, there seems to me to be a lot
of overlap between the two projects. Yes? No?

no, there is very little overlap, because my project is so small.

At least compare apples to apples there.

% find reap-6.0.2/lib/ -type f -name “.rb" | xargs wc -l | tail -1
3191 total
% find rake-0.7.1/lib/ -type f -name "
.rb” | xargs wc -l | tail -1
3201 total

The discussion of what the actual line counts of the projects are,
though,
seems to be a diversion away from my question.

I am actually interested in where capabilities between reap and rake+hoe
overlap and differ, and I figured that you must have looked at reap
before
writing your own set of tools and would have some constructive thoughts
on
the differences.

Thanks,

Kirk H.

On 9/20/06, Ryan D. [email protected] wrote:

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:

Ryan, this sounds very cool. Daniel B. and I wrote a tool for
interfacing with RAA a while ago and I haven’t gotten around to
releasing it. Maybe I can donate this to Hoe so it can do RAA entry
updates too?

Here is example usage:
http://stonecode.svnrepository.com/www-raa/trac.cgi/browser/example/example.rb

And here is the tiny lib:
http://stonecode.svnrepository.com/www-raa/trac.cgi/browser/lib/www/raa.rb

On 9/20/06, Berger, Daniel [email protected] wrote:

Apparently, you Reap what you Hoe.

Best post to ruby-talk, EVER. :wink:

This is kinda weird because I had a dream the other night that I’d
written a piece of software called “Hoe”. But I don’t remember what
this dream software did. Now I know!

Ryan D. wrote:

rake deploy # Deploy the package to rubyforge.

Does this do what the rubyforge gem does, or do you need both? Does the
latter give you finer control over release files?

rake upload # Upload RDoc to RubyForge

“upload” seems an odd name for a task that involves docs only…

Looking forward to checking this out…

On Sep 20, 2006, at 11:26 AM, [email protected] wrote:

% find hoe -type f | grep -v svn | xargs wc -l | tail -1
no, there is very little overlap, because my project is so small.

At least compare apples to apples there.

% find reap-6.0.2/lib/ -type f -name “.rb" | xargs wc -l | tail -1
3191 total
% find rake-0.7.1/lib/ -type f -name "
.rb” | xargs wc -l | tail -1
3201 total

You need to learn your fruits! It just so happens Farmer Ted is a
fruit farmer these days and even he agrees your rebuke is without
merit. You yourself asked “How does the use case for Hoe differ from
REAP” and that is what I compared. Besides, by just comparing .rb
files you’re hiding plenty of complexity:

% find reap-6.0.2 -type f | xargs wc -l | tail -1
16301 total
% find rake-0.7.1 -type f | xargs wc -l | tail -1
8694 total

I don’t write rake. I don’t maintain rake. I get it for free so it
isn’t my problem and isn’t part of the comparison. If you want to ask
someone to compare/contrast how reap and rake differ, ask trans and
jim, not me.

The discussion of what the actual line counts of the projects are,
though, seems to be a diversion away from my question.

I am actually interested in where capabilities between reap and rake
+hoe overlap and differ, and I figured that you must have looked at
reap before writing your own set of tools and would have some
constructive thoughts on the differences.

No, I never looked at reap. I wouldn’t touch it or facets with
someone else’s ten foot pole.

On Sep 20, 2006, at 11:34 AM, Gregory B. wrote:

On 9/20/06, Ryan D. [email protected] wrote:

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:

Ryan, this sounds very cool. Daniel B. and I wrote a tool for
interfacing with RAA a while ago and I haven’t gotten around to
releasing it. Maybe I can donate this to Hoe so it can do RAA entry
updates too?

Sounds like your tool is more akin to codeforpeople’s rubyforge
project than it is hoe. It’d probably be better to merge into that
(although it is purposefully a one trick pony, so maybe they should
just be friends).

On Sep 20, 2006, at 12:33 PM, Joel VanderWerf wrote:

Ryan D. wrote:

rake deploy # Deploy the package to rubyforge.

Does this do what the rubyforge gem does, or do you need both? Does
the latter give you finer control over release files?

Yes, it plugs into and uses the rubyforge gem.

rake upload # Upload RDoc to RubyForge

“upload” seems an odd name for a task that involves docs only…

Agreed.

[email protected] wrote:

% find hoe -type f | grep -v svn | xargs wc -l | tail -1
345 total

% find reap-6.0.2 -type f | xargs wc -l | tail -1
16301 total
% find facets-1.7.46 -type f | xargs wc -l | tail -1
67091 total

a man after my own heart!

Run, Ara! Ryan is after your heart!

Hal

[email protected] wrote:

I am actually interested in where capabilities between reap and rake+hoe
overlap and differ, and I figured that you must have looked at reap before
writing your own set of tools and would have some constructive thoughts on
the differences.

From first apperances clearly they cover many of the same needs: rdoc,
test, gem creation, uploading to Rubyforge, etc. Of course there are
some non-overlaps in functionality too and in that regard Reap has a
slight advantage. But capabilites aside. Reap is much more its own
entity. Hoe is really an extension to Rake that ties in a some other
tools as well (multiruby, rubyforge script). So Reap has one dependency
(Facets) while Hoe has many. Reap can handle odd cases as it is a
general system. Hoe is basically a used in one specific way. There are
of course trade offs to either approach. And certainly I can see Hoe
being a great little tool. After all, Hoe is basically what Reap used
to be. But while Hoe is essentially all that it will ever be (less a
few more tasks). Reap is still largely coming into it’s own.Utlimately
it will be a bed rock of build scripts that can do just about any
general tak one can expect, even cross-language. In other words Reap
has a much larger vision. It’s really the same inspiration behind
Facets. Offer a LOT of capability and make it as easy as possible to
use.

HTH,
T.

P.S. It’s a bit ironic for this comes up now. I’ve just spent the last
two months taking Reap to the “next level”. I had hoped to release by
now, but I think I still have a week or so to go before an initial
release is reasonable. It’s looking very nice. The extra time has been
well worth it!

Ryan D. [email protected] writes:

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

I’m already excited to see how many gems will appear to be published
by you, just because people forget to change the default values. :stuck_out_tongue:

sudo gem install hoe

Thank you for also providing a tar.gz and making hoe.rb even check if
rubygems exists. define_tasks still tries to access
Gem::Specification which won’t be there in that case, though.

Ryan D. wrote:

Farmer Ted likes simplicity and clarity, not obfuscation and bulk:

I value simplicity and calrity too. Reap is certainly not perfect but
it is far from obfuscated or bulky. Wherein it is more complex it is
also more capable. In fact, the first day I wrote Reap it was almost
exactly what Hoe is now, the only significant exception being that I
used a YAML file for the project information rather than a Ruby block.

% find reap-6.0.2 -type f | xargs wc -l | tail -1
16301 total
% find facets-1.7.46 -type f | xargs wc -l | tail -1
67091 total

That’s very misleading. First you should include Rake in Hoe’s counts.
Plus if you knew anything at all about Facets, you would know that
while it offers LOTS of capability, but you only need to load the
particular “facets” your project needs. Making a rough estimate, Reap
probably loads less than 300 LOC of Facets.

You need to learn your fruits! It just so happens Farmer Ted is a
fruit farmer these days and even he agrees your rebuke is without
merit. You yourself asked “How does the use case for Hoe differ from
REAP” and that is what I compared. Besides, by just comparing .rb
files you’re hiding plenty of complexity:

% find reap-6.0.2 -type f | xargs wc -l | tail -1
16301 total
% find rake-0.7.1 -type f | xargs wc -l | tail -1
8694 total

Rather I think your simplistic inspection is hiding it’s own
complexity. Since I make an effort to write a fair amount of
documentation and include that in the package plus provide “in progess
work” for others to peak at, you are indeed counting apples and
oranges. To be sure we can ask Reap:

% reap count
FILES: 23, LINES: 3667 (CODE: 2058, DOC: 823, SPACE: 786)

Since REAP tasks can be used as rake tasks, there seems to me to
be a lot of overlap between the two projects. Yes? No?

no, there is very little overlap, because my project is so small.

Indeed Hoe is really just an add on to Rake. And it’s simplicity is
commendable. Perhaps I should have been content to leave Reap as such a
project. But simplicity can also lead to limitations. I ran into those
and decided to take Reap further. And I continue to do so…

No, I never looked at reap. I wouldn’t touch it or facets with
someone else’s ten foot pole.

Interesting. You’ve never looked at it, but you wouldn’t go near it? On
what basis are you making a judgement then? Moreover, I really do not
see any reason for you to be denegrating about it.

T.