<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>MIT-LICENSE</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,7 +1,8 @@
-./CHANGELOG
-./LICENSE
-./Manifest
-./README
-./Rakefile
-./lib/echoe.rb
-./test/test_echoe.rb
+test/test_echoe.rb
+lib/echoe.rb
+Rakefile
+README
+Manifest
+MIT-LICENSE
+LICENSE
+CHANGELOG</diff>
      <filename>Manifest</filename>
    </modified>
    <modified>
      <diff>@@ -1,98 +1,83 @@
+
 echoe
-    http://rubyforge.org/projects/fauna/
-    Evan Weaver
-
-== DESCRIPTION:
-
-Echoe is a simple packaging tool for working with rubygems. It
-generates all the usual tasks for projects including rdoc generation,
-testing, packaging, and deployment.
-
-Tasks Provided:
-
-* announce         - Generate email announcement file and post to rubyforge.
-* audit            - Run ZenTest against the package
-* check_manifest   - Verify the manifest
-* clean            - Clean up all the extras
-* debug_gem        - Show information about the gem.
-* default          - Run the default tasks
-* docs             - Build the docs HTML Files
-* email            - Generate email announcement file.
-* install          - Install the package. Uses PREFIX and RUBYLIB
-* install_gem      - Install the package as a gem
-* multi            - Run the test suite using multiruby
-* package          - Build all the packages
-* post_news        - Post announcement to rubyforge.
-* publish_docs     - Publish RDoc to RubyForge
-* release          - Package and upload the release to rubyforge.
-* ridocs           - Generate ri locally for testing
-* test             - Run the test suite. Use FILTER to add to the command line.
-* test_deps        - Show which test files fail when run alone.
-* uninstall        - Uninstall the package.
-
-First, see the Rakefile used to distribute Echoe itself. Also see the class rdoc for 
-help.
-
-== DIFFERENCES FROM HOE:
-
-* Removes unnecessary meta-dependency on self in created gems
-* Better error reporting
-* Can auto-generate the Manifest
-
-== FEATURES/PROBLEMS:
-  
-* Provides 'echoe' command line tool for quick project directory creation.
-* Make making and maintaining Rakefiles fun and easy.
 
-== SYNOPSYS:
+Echoe is a simple tool for working with rubygems. 
 
-  % sow [group] project
+== License
 
-or
+Copyright 2007 Cloudburst, LLC. See included LICENSE file. 
 
-  require 'echoe'
-  
-  Echoe.new(projectname, version) do |p|
-    # ... project specific data ...
-  end
+Portions copyright 2006 Ryan Davis, Zen Spider Software, and used with permission. See included MIT-LICENSE file.
 
-  # ... project specific tasks ...
+== Description
 
-== REQUIREMENTS:
+Echoe is a simple tool for working with rubygems. It generates rake tasks for rdoc generation, testing, packaging, and deployment.
+
+== Requirements
 
 * rake
-* rubyforge
-* rubygems
+* &lt;tt&gt;rubyforge&lt;/tt&gt; gem
+* &lt;tt&gt;highline&lt;/tt&gt; gem
+
+== Installation
+
+  sudo gem install echoe
+
+== Usage
+
+Organize your gem according to the usual package structure:
+
+  lib/
+  bin/  
+  ext/
+  README
+  LICENSE
+  CHANGELOG
+  Rakefile
+
+Your &lt;tt&gt;CHANGELOG&lt;/tt&gt; should be formatted as follows:
+
+  v2.1. newest change
+  
+  v2. older change
+  
+  v1.9. oldest change
+  
+etc.  
+
+Your &lt;tt&gt;Rakefile&lt;/tt&gt; needs the following minimal contents:
+
+  require &quot;rubygems&quot;
+  require &quot;echoe&quot;
+  
+  Echoe.new(&quot;gem_name&quot;)
+  
+Not kidding.
+
+== Available Rake tasks
+
+Once you have your &lt;tt&gt;Rakefile&lt;/tt&gt; set up, you can run the following Rake tasks.
 
-== INSTALL:
+Packaging tasks:
 
-* sudo gem install echoe
+* &lt;tt&gt;build_manifest&lt;/tt&gt; -  Build a Manifest list.
+* &lt;tt&gt;docs&lt;/tt&gt; -  Build the documentation.
+* &lt;tt&gt;package&lt;/tt&gt; -  Build all the packages.
 
-== LICENSE:
+Testing tasks:
 
-Copyright 2007 Evan Weaver.
-Licensed under the Academic Free License 3.0. See LICENSE.txt, included. 
-The following license also applies to portions of the software:
+* &lt;tt&gt;test&lt;/tt&gt; -  Run the test suite.
+* &lt;tt&gt;install&lt;/tt&gt; -  Install the gem locally.
+* &lt;tt&gt;uninstall&lt;/tt&gt; -  Uninstall the gem.
 
-(The MIT License)
+Upload tasks:
 
-Copyright (c) 2006 Ryan Davis, Zen Spider Software
+* &lt;tt&gt;publish_docs&lt;/tt&gt; -  Publish documentation to the web.
+* &lt;tt&gt;release&lt;/tt&gt; -  Package and upload the release to Rubyforge.
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-&quot;Software&quot;), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+Cleaning tasks:
 
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
+* &lt;tt&gt;clean&lt;/tt&gt; -  Delete all the generated documentation and packages.
+* &lt;tt&gt;redocs&lt;/tt&gt; -  Force a rebuild of the Rdoc files.
+* &lt;tt&gt;repackage&lt;/tt&gt; -  Force a rebuild of the package files.
 
-THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</diff>
      <filename>README</filename>
    </modified>
    <modified>
      <diff>@@ -10,6 +10,8 @@ require 'highline/import'
 gem 'rubyforge', '&gt;= 0.4.0'
 require 'rubyforge'
 
+
+
 class Echoe
 
   rubyprefix = Config::CONFIG['prefix']
@@ -28,13 +30,21 @@ class Echoe
   FILTER = ENV['FILTER'] # for tests (eg FILTER=&quot;-n test_blah&quot;)
   
   # user-configurable
-  attr_accessor :author, :changes, :clean_pattern, :description, :email, :extra_deps, :name, :need_tar, :need_tar_gz, :need_zip, :rdoc_pattern, :rubyforge_name, :summary, :test_patterns, :url, :version, :docs_host, :rdoc_template
+  attr_accessor :author, :changes, :clean_pattern, :description, :email, :extra_deps, :name, :need_tar, :need_tar_gz, :need_zip, :rdoc_pattern, :rubyforge_name, :summary, :test_patterns, :url, :version, :docs_host, :rdoc_template, :manifest_name
   
   # best left alone
   attr_accessor :lib_files, :test_files, :bin_files, :spec
   
   def initialize(name, version = nil)
+    # Defaults
+
     self.name = name
+    self.rubyforge_name = name.downcase
+    self.url = &quot;&quot;
+    self.author = &quot;&quot;
+    self.email = &quot;&quot;
+    self.clean_pattern = %w(diff diff.txt email.txt ri *.gem **/*~)
+    self.test_patterns = ['test/**/test_*.rb']
     
     self.version = if version
       version
@@ -44,25 +54,19 @@ class Echoe
       raise &quot;No version supplied in Rakefile&quot;
     end
 
-    # Defaults
-    self.rubyforge_name = name.downcase
-    self.url = &quot;&quot;
-    self.author = &quot;&quot;
-    self.email = &quot;&quot;
-    self.clean_pattern = %w(diff diff.txt email.txt ri *.gem **/*~)
-    self.test_patterns = ['test/**/test_*.rb']
-    
     self.changes = if File.exist? &quot;CHANGELOG&quot;
       open(&quot;CHANGELOG&quot;).read[/^v([\d\.]+\. .*)/, 1]
     else
       &quot;&quot;
     end
-    
+        
     self.description = &quot;&quot;
     self.summary = &quot;&quot;
-    self.rdoc_pattern = /^(\.\/|)(lib|bin|tasks)|README|CHANGELOG|LICENSE|txt$/
+    self.rdoc_pattern = /^(lib|bin|tasks)|README|CHANGELOG|LICENSE|txt$/
     self.extra_deps = []
-    self.need_tar = false
+    self.manifest_name = &quot;Manifest&quot;
+
+    self.need_tar = false    
     self.need_tar_gz = true
     self.need_zip = false
 
@@ -72,10 +76,9 @@ class Echoe
   end
 
   def define_tasks
-    desc 'Run the default tasks'
     task :default =&gt; :test
 
-    desc 'Run the test suite. Use FILTER to add to the command line.'
+    desc 'Run the test suite'
     task :test do
       run_tests
     end
@@ -99,11 +102,10 @@ class Echoe
         s.add_dependency(*dep)
       end
 
-      manifest = File.exist?('Manifest.txt') ? 'Manifest.txt' : 'Manifest'
       begin
-        s.files = File.read(manifest).split
+        s.files = File.read(manifest_name).split
       rescue Errno::ENOENT
-        $stderr.puts &quot;Missing Manifest. You can build one with\n$ rake build_manifest&quot;
+        $stderr.puts &quot;Missing Manifest. You can build one with\n$ rake build_manifest.&quot;
       end
       s.executables = s.files.grep(/bin/) { |f| File.basename(f) }
 
@@ -120,11 +122,6 @@ class Echoe
 
     end
 
-    desc 'Show information about the gem.'
-    task :debug_gem do
-      puts spec.to_ruby
-    end
-
     self.lib_files = spec.files.grep(/^lib/)
     self.bin_files = spec.files.grep(/^bin/)
     self.test_files = spec.files.grep(/^test/)
@@ -135,22 +132,17 @@ class Echoe
       pkg.need_zip = @need_zip
     end
 
-    desc 'Install the package as a gem'
+    desc 'Install the gem'
     task :install =&gt; [:clean, :package] do
       sh &quot;sudo gem install pkg/*.gem&quot;
     end
 
-    desc 'Uninstall the package.'
+    desc 'Uninstall the gem'
     task :uninstall do
-      Dir.chdir RUBYLIB do
-        rm_f((lib_files + test_files).map { |f| File.basename f })
-      end
-      Dir.chdir File.join(PREFIX, 'bin') do
-        rm_f bin_files.map { |f| File.basename f }
-      end
+      sh &quot;sudo gem uninstall #{name}&quot;
     end
 
-    desc 'Package and upload the release to Rubyforge.'
+    desc 'Package and upload the release to Rubyforge'
     task :release =&gt; [:clean, :package] do |t|      
       
       say &quot;\n&quot;
@@ -180,27 +172,18 @@ class Echoe
   
         begin
           rf.add_release rubyforge_name, name, version, *files
-        rescue NoMethodError =&gt; boom
-         # be silent
+        rescue NoMethodError
         end
       end
       
     end
 
-    ############################################################
-    # Doco
-
     Rake::RDocTask.new(:docs) do |rd|      
       rd.main = Dir['*'].detect {|f| f =~ /^readme/i}
-      rd.options &lt;&lt; '-d' if RUBY_PLATFORM !~ /win32/ and `which dot` =~ /\/dot/
       rd.options &lt;&lt; '--line-numbers' &lt;&lt; '--inline-source'
       rd.rdoc_dir = 'doc'
-      files = spec.files.grep(rdoc_pattern)
-      files -= ['Manifest.txt', 'Manifest']
-      files.uniq!
-      
-      #puts &quot;Rdoc files are:\n#{files.map{|s| '  ' + s + &quot;\n&quot;}}&quot;
-      
+
+      files = (spec.files.grep(rdoc_pattern) - [manifest_name]).uniq
       rd.rdoc_files.push *files
 
       if rdoc_template
@@ -209,16 +192,11 @@ class Echoe
         rd.template = ENV['RDOC_TEMPLATE']
       end      
 
-      title = name.capitalize if name.downcase == name
+      title = name.downcase == name ? name.capitalize : name
       rd.options &lt;&lt; &quot;-t #{title}&quot;
     end
 
-    desc &quot;Generate ri locally for testing&quot;
-    task :ridocs =&gt; :clean do
-      sh %q{ rdoc --ri -o ri . }
-    end
-
-    desc 'Publish RDoc to RubyForge'
+    desc &quot;Publish documentation to #{docs_host ? &quot;'#{docs_host}'&quot; : &quot;rubyforge&quot;}&quot;
     task :publish_docs =&gt; [:clean, :docs] do
 
       local_dir = 'doc'
@@ -245,18 +223,14 @@ class Echoe
         # you may need ssh keys configured for this to work
         host, dir = docs_host.split(&quot;:&quot;)
         dir.chomp!(&quot;/&quot;)
-        sh(&quot;ssh #{host} 'rm -rf #{dir}/#{remote_dir_name}'&quot;) # XXX too dangerous
+        sh(&quot;ssh #{host} 'rm -rf #{dir}/#{remote_dir_name}'&quot;) # XXX too dangerous?
         sh(&quot;scp -qr #{local_dir} #{host}:#{dir}/#{remote_dir_name}&quot;)
       end      
     end
-    
-    
+        
     task :doc =&gt; [:docs]
 
-    ############################################################
-    # Misc/Maintenance:
- 
-    desc 'Clean up all the extras'
+    desc 'Delete the generated documentation and packages'
     task :clean =&gt; [ :clobber_docs, :clobber_package ] do
       clean_pattern.each do |pattern|
         files = Dir[pattern]
@@ -264,54 +238,29 @@ class Echoe
       end
     end
 
-    desc &quot;Verify the manifest&quot;
-    task :check_manifest =&gt; :clean do
-      f = &quot;Manifest.tmp&quot;
-      require 'find'
-      files = []
-      Find.find '.' do |path|
-        next unless File.file? path
-        next if path =~ /svn|tmp$/
-        files &lt;&lt; path[2..-1]
-      end
-      files = files.sort.join &quot;\n&quot;
-      File.open f, 'w' do |fp| fp.puts files end
-
-      manifest = &quot;Manifest&quot;
-      manifest += &quot;.txt&quot; if File.exist? &quot;Manifest.txt&quot;
-
-      system &quot;diff -du #{manifest}.txt #{f}&quot;
-      rm f
-    end
-
-    desc &quot;Build a Manifest from your current tree&quot;
+    desc &quot;Build a Manifest list&quot;
     task :build_manifest do
       files = []
-      find_files = proc { |dir| 
-        Dir[&quot;#{dir}/**&quot;].each do |file|
-          next if [&quot;#{dir}/pkg&quot;, &quot;#{dir}/doc&quot;].include? file
-          File.directory?(file) ? find_files[file] : files &lt;&lt; file
+      Find.find '.' do |file|
+        file = file[2..-1]
+        unless !file or file =~ /^(pkg|doc)|\.svn|CVS|\.bzr/ or File.directory? file
+          files &lt;&lt; file
         end
-      }
-      manifest = File.exist?(&quot;./Manifest.txt&quot;) ? &quot;./Manifest.txt&quot; : &quot;./Manifest&quot;
-      find_files['.'] 
-      files = (files &lt;&lt; manifest).uniq
-      File.open(manifest, 'w').puts files
+      end
+      files = (files &lt;&lt; manifest_name).uniq
+      File.open(manifest_name, 'w').puts files
       puts files
     end
-  end # end define
-
-  def run_tests(multi=false) # :nodoc:
-    msg = multi ? :sh : :ruby
-    cmd = if test ?f, 'test/test_all.rb' then
-            &quot;#{RUBY_FLAGS} test/test_all.rb #{FILTER}&quot;
-          else
-            tests = test_patterns.map { |g| Dir.glob(g) }.flatten &lt;&lt; 'test/unit'
-            tests.map! {|f| %Q(require &quot;#{f}&quot;)}
-            &quot;#{RUBY_FLAGS} -e '#{tests.join(&quot;; &quot;)}' #{FILTER}&quot;
-          end
-    cmd = &quot;multiruby #{cmd}&quot; if multi
-    send msg, cmd
+  end
+
+  def run_tests # :nodoc:
+    ruby(if File.exist? 'test/test_all.rb'
+      &quot;#{RUBY_FLAGS} test/test_all.rb #{FILTER}&quot;
+    else
+      tests = test_patterns.map { |g| Dir.glob(g) }.flatten &lt;&lt; 'test/unit'
+      tests.map! {|f| %Q(require &quot;#{f}&quot;)}
+      &quot;#{RUBY_FLAGS} -e '#{tests.join(&quot;; &quot;)}' #{FILTER}&quot;
+    end)
   end
 
 end
@@ -319,8 +268,3 @@ end
 class ::Rake::SshDirPublisher # :nodoc:
   attr_reader :host, :remote_dir, :local_dir
 end
-
-if $0 == __FILE__ then
-  out = `rake -T | egrep -v &quot;redocs|repackage|clobber|trunk&quot;`
-  puts out.gsub(/\#/, '-').gsub(/^rake /, '# * ')
-end</diff>
      <filename>lib/echoe.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>0b2ca4c525b0ba39fc8efe9b6a14eba0e5f374a3</id>
    </parent>
  </parents>
  <author>
    <name>Evan Weaver</name>
    <email>evan@cloudbur.st</email>
  </author>
  <url>http://github.com/fauna/echoe/commit/477de61fbe42e1a70c04b61df47a63bc399daf83</url>
  <id>477de61fbe42e1a70c04b61df47a63bc399daf83</id>
  <committed-date>2007-08-02T21:33:24-07:00</committed-date>
  <authored-date>2007-08-02T21:33:24-07:00</authored-date>
  <message>readme</message>
  <tree>77e601a877a265cef3e8a8190a5a2c377dd9738c</tree>
  <committer>
    <name>Evan Weaver</name>
    <email>evan@cloudbur.st</email>
  </committer>
</commit>
