= Reap
User Friendly Project Assitant for Ruby
== What's This Then?
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 I pretty easy, but is is quite differt
from building a Rake task.
Here's an, oh so simple, example:
class OhSoSimple < Reap::Task
task_desc 'This is a custom reap task'
task_help %{
reap ohsosimple
This is help information for a custom reap task.
}
task_attr :ohso
def init
ohso.message ||= 'None Found!'
ohso.another ||= 'Again!'
end
# run the target task
def run
puts ohso.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
Reap used to use standard attributes for task properties.
But this has changed as of v4.3.3. Now it uses 'task', which
you can also reference by any name you like usng the #task_arr
class method. The nice thing about using this interface instead
of attributes is that reap will automatically search the
ProjectInfo's root if the property is not found in the task
specific section. This allows for a nice form of inheritance
within the document.
Sometimes you may need to override this behavor. In that case
just set the task property directly equal to the section property
in the init method. Eg.
def init
task.message = section.message
...
end
Notice we used 'task' here rather than 'osho'. This task object
is always available. In the above, 'osho' is just being referenced
to 'task' via the #task_attr class method for readability convenience.
Both refer to the same underlying object.
== 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-2006 Thomas Sawyer
Ruby License