[ANN] 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:

<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

Zenspider keeps coming up with great stuff!

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

···

On Wed, 20 Sep 2006, Ryan Davis 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:

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

···

On 9/20/06, Ryan Davis <ryand-ruby@zenspider.com> 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 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...

···

--
       vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

Ryan Davis <ryand-ruby@zenspider.com> writes:

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

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.

···

--
Christian Neukirchen <chneukirchen@gmail.com> http://chneukirchen.org

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

http://zimbatm.oree.ch

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.

···

-----Original Message-----
From: khaines@enigo.com [mailto:khaines@enigo.com]
Sent: Wednesday, September 20, 2006 8:16 AM
To: ruby-talk ML
Subject: Re: [ANN] Hoe 1.0 released

On Wed, 20 Sep 2006, Ryan Davis 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?

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 Sep 20, 2006, at 7:15 AM, khaines@enigo.com wrote:

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 11:34 AM, Gregory Brown wrote:

On 9/20/06, Ryan Davis <ryand-ruby@zenspider.com> 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 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?

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?

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.

···

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

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:

Yeah, I thought about changing that but then I decided it'd be funny. :slight_smile:

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.

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.

···

On Sep 23, 2006, at 5:48 AM, Christian Neukirchen wrote:

touche teacher. touche.

-a

···

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

Apparently, you Reap what you Hoe.

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

- Dan

--
in order to be effective truth must penetrate like an arrow - and that is
likely to hurt. -- wei wu wei

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 Sep 20, 2006, at 6:20 AM, Jonas Pfenniger 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

a man after my own heart!

-a

···

On Thu, 21 Sep 2006, Ryan Davis wrote:

On Sep 20, 2006, at 7:15 AM, khaines@enigo.com 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

--
in order to be effective truth must penetrate like an arrow - and that is
likely to hurt. -- wei wu wei

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

···

On Thu, 21 Sep 2006, Ryan Davis wrote:

On Sep 20, 2006, at 7:15 AM, khaines@enigo.com 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.

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!

···

On 9/20/06, Berger, Daniel <Daniel.Berger@qwest.com> wrote:

Apparently, you Reap what you Hoe.

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.

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:26 AM, khaines@enigo.com wrote:

On Thu, 21 Sep 2006, Ryan Davis wrote:

On Sep 20, 2006, at 7:15 AM, khaines@enigo.com wrote:

Run, Ara! Ryan is after your heart!

Hal

···

ara.t.howard@noaa.gov wrote:

On Thu, 21 Sep 2006, Ryan Davis wrote:

On Sep 20, 2006, at 7:15 AM, khaines@enigo.com 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

a man after my own heart!

khaines@enigo.com 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!