= Reap
User Friendly Project Assitant for Ruby
== What's This?
Reap is a user friendly project assistant for Ruby developers.
By organizing your project in a conventional manner,
as promoted by setup.rb, Reap makes it easy to do the
following tasks:
* Generate RDocs.
* Run unit tests.
* Extract tests for scripts.
* Create Ruby Gem packages.
* Create standard .tgz, tbz (bzip2) and/or .zip packages.
* Publish documents to Rubyforge or other web sites.
* Announce a release to Ruby-talk or other mailing list.
* Prepare files for distribution (i.e. chmod, tag, etc.).
* Upload packages (coming soon!).
If you have special needs that Reap doesn't accomodate,
new task are farily easy to create. And I am always
happy to hear suggestions.
== Installation
=== Gem Install
Install the ruby gem as you would any other:
gem install reap
Reap requires Ruby Facets.
=== Manual Install
To install manually follow the usual setup.eb steps:
1. Download the compressed package.
2. Unpack it.
3. Change into the unpacked directory.
4. run sudo ruby setup.rb
You should be good to go.
== Usage
=== Using a Reap Task
Reap makes it pretty easy to use it's built-in tasks.
Largely this is because it grabs common data from a ProjectInfo
(or Reapfile) as available. Some Reap tasks are
automatic b/c there are reasonable defaults, others
_require_ entries in the ProjectInfo file.
For instance, to create a "package" target you generally do not need
an entry in the ProjectInfo file. Reap will package up everything
in the typical directories and makes compressed versions in the
common formats. It will then place those in either ../leaf/
(for those or you using trunk/ branches/ layouts) or pkg/ otherwise.
The same holds for other tasks. Reap will do it's best to extrapolate
the needed information from the ProjectInfo file.
Of course no matter the level of content, you will of course need to
create this file in you projects main directory. A template is provided
and a command line tool to copy it to your current directory. Simply type:
> reap template
Then edit the ProjectInfo file. The fields are fairly self
explanitiory. Apart from Reap such a file is nice to have just on
it's own merits too.
=== Building a Reap Task
Building a Reap task differs from building a Rake task
by two important factors. First there is only one target
per task (this may change) Second, task blocks are yeilded
_prior_ to the #init routine being exectuted. So your #init
routine should expect data to already be present in
the tasks attribute and take that into account (usually that
means using ++||=++)
Here's an, oh so simple, example:
class OhSoSimple < Reap::Task
task_desc 'This is a custom reap task'
attr_accessor :message
def init
@message ||= master['default'] || 'None Found!'
@another ||= section['another'] || 'Again!'
end
# run the target task
def run
puts @message + "\n" + @another
end
end
The corresponding settings in the ProjectInfo file (master) will then be:
default: Default text, if any.
ohsosimple:
another: Your other message here.
And to use it
> reap ohsosimple
== Status
Reap is currently Usable Beta. Most of the tasks
work very well. Refinements are still common though,
and a few important tasks are still being planned.
== Legal
Reap
Copyright(c)2004-2005 Thomas Sawyer
Ruby License