public
Description: A framework for creating configurable, distributable tasks and workflows.
Homepage: http://tap.rubyforge.org
Clone URL: git://github.com/bahuvrihi/tap.git
tap /
README
= {Tap (Task Application)}[http://tap.rubyforge.org]

A framework for creating configurable, distributable tasks and workflows.

== Description

Tap tasks are designed to be easy to test, subclass, use in scripts, and run 
from the command line.  Tap provides methods to generate and utilize config 
files, join tasks into workflows, as well as dump and reuse results.  Task 
libraries are readily shared as gems.  Check out the links for tutorials, 
development, and bug tracking.

* {Tutorial}[link:files/doc/Tutorial.html], {Class}[link:files/doc/Class%20Reference.html] and 
{Command}[link:files/doc/Command%20Reference.html] Reference
* Website[http://tap.rubyforge.org]
* Lighthouse[http://bahuvrihi.lighthouseapp.com/projects/9908-tap-task-application/overview]
* Github[http://github.com/bahuvrihi/tap/tree/master]
* Google Group[http://groups.google.com/group/ruby-on-tap]

=== Additional Notes:

- Tap and Rake[http://rake.rubyforge.org/] are targeted at different problems, 
  but play well together. See Tap::Tasks::Rake to use rake tasks in tap.
- Tap is tested on MRI (the standard Ruby interpreter, versions 1.8.6 and 
  1.9.0) and JRuby[http://jruby.codehaus.org/].

=== Usage

A simple task illustrates the usage of tap:

  # Goodnight::manifest your basic goodnight moon task
  # Says goodnight with a configurable message.
  class Goodnight < Tap::Task

    config :message, 'goodnight'           # a goodnight message

    def process(name)
      log(message, name)
      "#{message} #{name}"
    end
  end

Tap pulls documentation out of task classes to generate manifests:

  % tap run -T
    sample:
      goodnight   # your basic goodnight moon task
    tap:
      dump        # the default dump task
      rake        # run rake tasks  

And help:

  % tap run -- goodnight --help
  Goodnight -- your basic goodnight moon task
  --------------------------------------------------------------------------------
    Says goodnight with a configurable message.
  --------------------------------------------------------------------------------
  usage: tap run -- goodnight NAME

  configurations:
          --message MESSAGE            a goodnight message

  options:
      -h, --help                       Print this help
          --name NAME                  Specify a name
          --use FILE                   Loads inputs from file


Tasks are immediately available to run:

  % tap run -- goodnight moon
    I[00:09:55]          goodnight moon
  

  % tap run -- goodnight moon --message hello
    I[00:10:01]              hello moon
  
Tap comes with generators and allows distribution of task libraries as gems.  
This can be illustrated by installing the 
{sample_tasks}[http://tap.rubyforge.org/sample_tasks] gem:

  % gem install sample_tasks
  % tap run -T
  sample:
    goodnight   # your basic goodnight moon task
  sample_tasks:
    concat      # concatenate files with formatting
    copy        # copies files
    grep        # search for lines matching a pattern
    print_tree  # print a directory tree
  tap:
    dump        # the default dump task
    rake        # run rake tasks

=== Bugs/Known Issues

- Some inconsequential tests on JRuby fail due to bugs in JRuby itself.
- Several patches are required so that Tap runs properly on MRI 1.9.0.  These   
  will likely resolve themselves as 1.9.0 becomes stable.
- Despite the talk of workflows, the Workflow class should still be considered
  in progress.  Tasks themselves are stable.

== Installation

Tap is available as a gem on RubyForge[http://rubyforge.org/projects/tap].  Use:

  % gem install tap

Tap requires an updated version of RubyGems[http://docs.rubygems.org/] (>= 1.2.0).  To check the version and update 
RubyGems:

  % gem --version
  % gem --update system

== Info 

Copyright (c) 2006-2008, Regents of the University of Colorado.
Developer:: {Simon Chiang}[http://bahuvrihi.wordpress.com], {Biomolecular Structure Program}[http://biomol.uchsc.edu/], 
{Hansen Lab}[http://hsc-proteomics.uchsc.edu/hansenlab/] 
Support:: CU Denver School of Medicine Deans Academic Enrichment Fund
Licence:: {MIT-Style}[link:files/MIT-LICENSE.html]