[ANN] Hoe 1.0 released

R

Ryan Davis

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:

<pre>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 <em>much</em> 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
 
J

Jonas Pfenniger

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
 
K

khaines

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 Haines
 
B

Berger, Daniel

-----Original Message-----
From: (e-mail address removed) [mailto:[email protected]]=20
Sent: Wednesday, September 20, 2006 8:16 AM
To: ruby-talk ML
Subject: Re: [ANN] Hoe 1.0 released
=20
=20
On Wed, 20 Sep 2006, Ryan Davis wrote:
=20
Farmer Ted came to me the other day with a problem. He has about 10=20
different
packages he wants to work on and periodically release, but=20 sometimes it seems=20
to him that maintaining a threshing machine is easier than=20 it is maintaining=20
all his Rakefiles and gemspecs. Most of his rakefiles are=20 duplicated in every=20
project yet differ slightly everywhere. His deployment=20 rules that enhanced in=20
one place and go stale in another. So I showed him another=20 tool to help: Hoe!

Hoe is a tool that covers all the usual stuff you have in a project:
documentation, testing, version compatibility (through=20 multiruby), packaging,=20
deployment, cleanup, and more. In fact, this:
=20
How does the use case for Hoe differ from REAP?
=20
http://reap.rubyforge.org/
=20
Since REAP tasks can be used as rake tasks, there seems to me=20
to be a lot=20
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=20
prohibited and may be unlawful. If you have received this communication =

in error, please immediately notify the sender by reply e-mail and =
destroy=20
all copies of the communication and any attachments.
 
R

Ryan Davis

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.
 
R

Ryan Davis

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??? :p

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:
 
A

ara.t.howard

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

a man after my own heart!

-a
 
K

khaines

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


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 Haines
 
G

Gregory Brown

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 Berger 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
 
L

Lyle Johnson

Apparently, you Reap what you Hoe.

Best post to ruby-talk, EVER. ;)

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!
 
J

Joel VanderWerf

Ryan Davis 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...
 
R

Ryan Davis

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.
 
R

Ryan Davis

Ryan, this sounds very cool. Daniel Berger 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).
 
R

Ryan Davis

Ryan Davis wrote:
...

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.
...

"upload" seems an odd name for a task that involves docs only...

Agreed.
 
T

Trans

Ryan said:
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.

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)

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.
 
T

Trans

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!
 
R

Ryan Davis

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. :p

Yeah, I thought about changing that but then I decided it'd be funny. :)
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.

Actually, I just took out the check. And the current version (soon to
be released) will actually declare its own dependencies on rubygems,
rake, and rubyforge properly (and only on hoe if used by anything
else). Politics and release philosophies aside, it is too easy and
benefits enough other people to build and deploy a gem using hoe, so
hoe users might as well install it.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,056
Latest member
GlycogenSupporthealth

Latest Threads

Top