
Echoe

A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment.

== License

Copyright 2007, 2008 Cloudburst, LLC. Licensed under the AFL 3. See the included LICENSE file. Portions copyright 2006 Ryan Davis/Zen Spider Software and used with permission. See the included MIT-LICENSE file.

The public certificate for the gem is here[http://rubyforge.org/frs/download.php/25331/evan_weaver-original-public_cert.pem]. 

If you use this software, please {make a donation}[http://blog.evanweaver.com/donate/], or {recommend Evan}[http://www.workingwithrails.com/person/7739-evan-weaver] at Working with Rails.

== Features

* simple configuration
* comprehensive gem deployment
* cross-packaging
* signed gem support
* automatic changeset parsing
* documentation upload to any host

= Usage

== Installation

Install the gem:
  sudo gem install echoe
  
If you haven't already, make sure Rubyforge is configured locally and your password is correctly set:
  rubyforge setup
  rubyforge config

== Project configuration

Organize your gem according to the usual structure:

  lib/
  README
  LICENSE
  CHANGELOG
  Rakefile

You can add the <tt>bin/</tt> or <tt>ext/</tt> folders if you have executables or extensions, respectively.

Your <tt>CHANGELOG</tt> should be formatted as follows (including newlines):

  v2.1. newest change
  
  v2. older change
  
  v1.9. oldest change
  
This way Echoe can parse the latest version and changeset message automatically.

Your <tt>Rakefile</tt> needs the following minimal contents:

  require 'echoe'  
  Echoe.new('gem_name')
  
More advanced configuration is described in the Echoe class.

== Deploying your gem

To deploy the gem and documentation:

  rake manifest
  rake release
  rake publish_docs

Once you've built your manifest, you only need to rebuild it if you add or remove files from the package structure.

= Extras

== All Rake tasks

The following tasks are made available to your gem.

Packaging:

* <tt>manifest</tt> -  Build a manifest list. Shows added and removed files.
* <tt>docs</tt> -  Build the documentation.
* <tt>package</tt> -  Build all the packages.

Testing:

* <tt>test</tt> -  Run the test suite.
* <tt>coverage</tt> -  Generate a coverage report.
* <tt>compile</tt> - Compile C extensions, if available.
* <tt>clean</tt> - Clean up generated documentation, packaging, and build files.
* <tt>install</tt> -  Install the gem locally.
* <tt>uninstall</tt> -  Uninstall the gem.

Upload:

* <tt>publish_docs</tt> -  Publish documentation to the web.
* <tt>release</tt> -  Package and upload the latest release to Rubyforge.
* <tt>announce</tt> - Generate a release announcement, edit it, and post it to Rubyforge.

Cleaning:

* <tt>clean</tt> -  Delete all the generated documentation and packages.
* <tt>redocs</tt> -  Force a rebuild of the Rdoc files.
* <tt>repackage</tt> -  Force a rebuild of the package files.

== Reporting problems

The support forum is here[http://rubyforge.org/forum/forum.php?forum_id=13986].

Patches and contributions are very welcome. Please note that contributors are required to assign copyright for their additions to Cloudburst, LLC.

== Further resources

* http://blog.evanweaver.com/articles/2007/01/10/if-you-dont-want-to-hoe-echoe
