README in reap-4.3.4 vs README in reap-4.4.0

- old
+ new

@@ -1,41 +1,50 @@ = Reap -User Friendly Project Assitant for Ruby +Project Assitant for Ruby == What's This Then? -Reap is a user friendly project assistant for Ruby developers. +Reap is an easy to use 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 +(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. +* Generate RDoc API documentation. +* Run unit tests (each in it's ruby process). +* Extract embedded tests from source code. +* Run embedded unit test directly. +* Create source tar and/or zip packages. +* Create Ruby Gem and/or Debian 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!). +* Release distributions on Rubyforge or other host. +* Even generate a DOAP project file. 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. +new tasks are farily easy to create. And I am always +happy to engage suggestions. == Installation +Note that Reap requires Ruby Facets. + === Gem Install Install the ruby gem as you would any other: <tt>gem install reap</tt> -Reap requires Ruby Facets. +Gems still suffers from the datadir problem, +so the template and scaffold commands +may report missing files if you use this +installation method. A fix is in the works, +but for the moment it is better to use the +manual install. === Manual Install To install manually follow the usual setup.eb steps: @@ -50,39 +59,64 @@ == 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. +Largely this is because it grabs common data from the +ProjectInfo file. Some tasks can operate automatically based +on reasonable defaults, others require section 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. +in the typical directories and makes compressed versions in the most +common formats. It will then place those in either dist/, pkg/, +../packages/, ../dist or ../pkg. Depending on which of these exists. +The reasonable assumtions exist for other tasks. Reap will do +it's best to extrapolate the needed information waht's avaialbe +in the ProjectInfo file. -Of course no matter the level of content, you will of course need to +Of course, no matter the level of content, you will 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: +and a command 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 +Then edit the ProjectInfo file creted. The fields are fairly self +explanitiory. Apart from Reap, such a file is nice to have just on it's own merits too. +Reap can also build an entire new project directory with all the +standard components. Try: + + > reap scaffold myproj + +A new directory will be created called 'myproj' with all the ususal +directories like lib/, bin/, etc. If you use subversion for +version management, you can create a subversion layout easily +as well. + + > reap scaffold svn + +For more help, use + + > reap help + +or + + > reap help [task] + +Supplying the task name provides specific help for that particular task. + + === Building a Reap Task -Building a Reap task I pretty easy, but is is quite differt -from building a Rake task. +Building a Reap task is pretty easy too, but is is quite different +from building a Rake task. You are just defining a method, but a +whole class. -Here's an, oh so simple, example: +Here's an "oh so simple" example: class OhSoSimple < Reap::Task task_desc 'This is a custom reap task' @@ -92,65 +126,63 @@ This is help information for a custom reap task. } - task_attr :ohso + alias_method :ohso, :task - def init + def run ohso.message ||= 'None Found!' ohso.another ||= 'Again!' - end - # run the target task - def run - puts ohso.message + "\n" + @another + puts ohso.message + "\n" + ohso.another end end The corresponding settings in the ProjectInfo file (master) will then be: - default: Default text, if any. + message: 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 +While Reap had used instance varaibles for task properties in the past, +But has changed as of version 4.3.3. Now it uses the 'task' object, +which can be referenced by any name you like is you alias it. +The nice thing about using this interface instead of instance +variables 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. +Sometimes you may need to override this inheritance behavor, though. +In that case just set the task property directly equal to the +section property in the run method. Eg. - def init + def run 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. +is always available. In the above, 'osho' is just being aliased +to 'task' 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. +Reap is currently "Usable Beta". Most of the tasks +work very well. Refinements are still common though. == Legal Reap Copyright(c)2004-2006 Thomas Sawyer Ruby License +