= 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