<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/echoe/net.rb</filename>
    </added>
    <added>
      <filename>vendor/rake/MIT-LICENSE</filename>
    </added>
    <added>
      <filename>vendor/rake/lib/rake/contrib/compositepublisher.rb</filename>
    </added>
    <added>
      <filename>vendor/rake/lib/rake/contrib/ftptools.rb</filename>
    </added>
    <added>
      <filename>vendor/rake/lib/rake/contrib/publisher.rb</filename>
    </added>
    <added>
      <filename>vendor/rake/lib/rake/contrib/rubyforgepublisher.rb</filename>
    </added>
    <added>
      <filename>vendor/rake/lib/rake/contrib/sshpublisher.rb</filename>
    </added>
    <added>
      <filename>vendor/rake/lib/rake/contrib/sys.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -2,6 +2,7 @@ CHANGELOG
 echoe.gemspec
 lib/echoe/client.rb
 lib/echoe/extensions.rb
+lib/echoe/net.rb
 lib/echoe/platform.rb
 lib/echoe/rubygems.rb
 lib/echoe.rb
@@ -11,3 +12,10 @@ MIT-LICENSE
 Rakefile
 README
 TODO
+vendor/rake/lib/rake/contrib/compositepublisher.rb
+vendor/rake/lib/rake/contrib/ftptools.rb
+vendor/rake/lib/rake/contrib/publisher.rb
+vendor/rake/lib/rake/contrib/rubyforgepublisher.rb
+vendor/rake/lib/rake/contrib/sshpublisher.rb
+vendor/rake/lib/rake/contrib/sys.rb
+vendor/rake/MIT-LICENSE</diff>
      <filename>Manifest</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
-
-require 'lib/echoe'
+($:.unshift File.expand_path(File.join( File.dirname(__FILE__), 'lib' ))).uniq!
+require 'echoe'
 
 Echoe.new('echoe') do |p|
   p.project = 'fauna'
@@ -7,9 +7,8 @@ Echoe.new('echoe') do |p|
   p.summary = 'A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment.'
   p.url = 'http://blog.evanweaver.com/files/doc/fauna/echoe/'
   p.docs_host = 'blog.evanweaver.com:~/www/bax/public/files/doc/'
-  p.runtime_dependencies = ['rubyforge &gt;=1.0.0', 'highline']
+  p.runtime_dependencies = ['rubyforge &gt;=1.0.2', 'highline']
   p.development_dependencies = []
   p.retain_gemspec = true
-  p.require_signed = true
 end
 </diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -2,23 +2,21 @@
 
 Gem::Specification.new do |s|
   s.name = %q{echoe}
-  s.version = &quot;3.1&quot;
+  s.version = &quot;3.1.3&quot;
 
   s.required_rubygems_version = Gem::Requirement.new(&quot;&gt;= 1.2&quot;) if s.respond_to? :required_rubygems_version=
   s.authors = [&quot;Evan Weaver&quot;]
-  s.cert_chain = [&quot;/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-public_cert.pem&quot;]
-  s.date = %q{2009-02-03}
+  s.date = %q{2009-06-16}
   s.description = %q{A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment.}
   s.email = %q{}
-  s.extra_rdoc_files = [&quot;CHANGELOG&quot;, &quot;lib/echoe/client.rb&quot;, &quot;lib/echoe/extensions.rb&quot;, &quot;lib/echoe/platform.rb&quot;, &quot;lib/echoe/rubygems.rb&quot;, &quot;lib/echoe.rb&quot;, &quot;LICENSE&quot;, &quot;README&quot;, &quot;TODO&quot;]
-  s.files = [&quot;CHANGELOG&quot;, &quot;echoe.gemspec&quot;, &quot;lib/echoe/client.rb&quot;, &quot;lib/echoe/extensions.rb&quot;, &quot;lib/echoe/platform.rb&quot;, &quot;lib/echoe/rubygems.rb&quot;, &quot;lib/echoe.rb&quot;, &quot;LICENSE&quot;, &quot;Manifest&quot;, &quot;MIT-LICENSE&quot;, &quot;Rakefile&quot;, &quot;README&quot;, &quot;TODO&quot;]
+  s.extra_rdoc_files = [&quot;CHANGELOG&quot;, &quot;lib/echoe/client.rb&quot;, &quot;lib/echoe/extensions.rb&quot;, &quot;lib/echoe/net.rb&quot;, &quot;lib/echoe/platform.rb&quot;, &quot;lib/echoe/rubygems.rb&quot;, &quot;lib/echoe.rb&quot;, &quot;LICENSE&quot;, &quot;README&quot;, &quot;TODO&quot;]
+  s.files = [&quot;CHANGELOG&quot;, &quot;echoe.gemspec&quot;, &quot;lib/echoe/client.rb&quot;, &quot;lib/echoe/extensions.rb&quot;, &quot;lib/echoe/net.rb&quot;, &quot;lib/echoe/platform.rb&quot;, &quot;lib/echoe/rubygems.rb&quot;, &quot;lib/echoe.rb&quot;, &quot;LICENSE&quot;, &quot;Manifest&quot;, &quot;MIT-LICENSE&quot;, &quot;Rakefile&quot;, &quot;README&quot;, &quot;TODO&quot;, &quot;vendor/rake/lib/rake/contrib/compositepublisher.rb&quot;, &quot;vendor/rake/lib/rake/contrib/ftptools.rb&quot;, &quot;vendor/rake/lib/rake/contrib/publisher.rb&quot;, &quot;vendor/rake/lib/rake/contrib/rubyforgepublisher.rb&quot;, &quot;vendor/rake/lib/rake/contrib/sshpublisher.rb&quot;, &quot;vendor/rake/lib/rake/contrib/sys.rb&quot;, &quot;vendor/rake/MIT-LICENSE&quot;]
   s.has_rdoc = true
   s.homepage = %q{http://blog.evanweaver.com/files/doc/fauna/echoe/}
   s.rdoc_options = [&quot;--line-numbers&quot;, &quot;--inline-source&quot;, &quot;--title&quot;, &quot;Echoe&quot;, &quot;--main&quot;, &quot;README&quot;]
   s.require_paths = [&quot;lib&quot;]
   s.rubyforge_project = %q{fauna}
   s.rubygems_version = %q{1.3.1}
-  s.signing_key = %q{/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-private_key.pem}
   s.summary = %q{A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment.}
 
   if s.respond_to? :specification_version then
@@ -26,14 +24,14 @@ Gem::Specification.new do |s|
     s.specification_version = 2
 
     if Gem::Version.new(Gem::RubyGemsVersion) &gt;= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q&lt;rubyforge&gt;, [&quot;&gt;= 1.0.0&quot;])
+      s.add_runtime_dependency(%q&lt;rubyforge&gt;, [&quot;&gt;= 1.0.2&quot;])
       s.add_runtime_dependency(%q&lt;highline&gt;, [&quot;&gt;= 0&quot;])
     else
-      s.add_dependency(%q&lt;rubyforge&gt;, [&quot;&gt;= 1.0.0&quot;])
+      s.add_dependency(%q&lt;rubyforge&gt;, [&quot;&gt;= 1.0.2&quot;])
       s.add_dependency(%q&lt;highline&gt;, [&quot;&gt;= 0&quot;])
     end
   else
-    s.add_dependency(%q&lt;rubyforge&gt;, [&quot;&gt;= 1.0.0&quot;])
+    s.add_dependency(%q&lt;rubyforge&gt;, [&quot;&gt;= 1.0.2&quot;])
     s.add_dependency(%q&lt;highline&gt;, [&quot;&gt;= 0&quot;])
   end
 end</diff>
      <filename>echoe.gemspec</filename>
    </modified>
    <modified>
      <diff>@@ -1,21 +1,29 @@
 
 $HERE = File.dirname(__FILE__)
 require &quot;#{$HERE}/echoe/platform&quot;
-require &quot;#{$HERE}/echoe/extensions&quot;
 
 require 'rake'
 require 'rake/clean'
-require 'rake/contrib/sshpublisher'
+require &quot;#{$HERE}/../vendor/rake/lib/rake/contrib/compositepublisher&quot;
+require &quot;#{$HERE}/../vendor/rake/lib/rake/contrib/sshpublisher&quot;
 require 'rake/gempackagetask'
 require 'rake/rdoctask'
 require 'rake/testtask'
+begin
+require 'spec/rake/spectask'
+rescue LoadError
+end
 require 'rbconfig'
 require 'open-uri'
 
+require &quot;#{$HERE}/echoe/extensions&quot;
+
 require 'rubygems'
+require 'rubygems/specification'
 require &quot;#{$HERE}/echoe/rubygems&quot;
 
 require 'rubyforge'
+require &quot;#{$HERE}/echoe/net&quot;
 require &quot;#{$HERE}/echoe/client&quot;
 
 require 'highline/import'
@@ -65,8 +73,6 @@ Note that you can also set the key and certificate locations in the Rakefile its
 
 Echoe does not force packages to depend on Echoe itself. Instead, it generates a &lt;tt&gt;gemspec&lt;/tt&gt; from your &lt;tt&gt;Rakefile&lt;/tt&gt; and includes that. Downstream repackagers can use the &lt;tt&gt;gemspec&lt;/tt&gt; as-is to build new versions of your gem even without Echoe.
 
-However, Echoe is added to the &lt;tt&gt;development_dependencies&lt;/tt&gt; array so that users can automatically install it via &lt;tt&gt;gem install --development&lt;/tt&gt; if they prefer. You can override this behavior by setting &lt;tt&gt;p.development_dependencies = []&lt;/tt&gt;.
-
 == Cross-packaging
 
 Echoe supports platform Rake targets to allow you to cross-package your gems. Just write the spec assuming &lt;tt&gt;RUBY_PLATFORM&lt;/tt&gt; will be what you need it to be for each architecture, and then invoke Rake with the platform name when you're cross-packaging.
@@ -107,6 +113,8 @@ Testing options:
 
 * &lt;tt&gt;clean_pattern&lt;/tt&gt; - A filename array, glob array, or regex for files that should be removed when &lt;tt&gt;rake clean&lt;/tt&gt; is run.
 * &lt;tt&gt;test_pattern&lt;/tt&gt; - A filename array, glob array, or regex for test runners. Overridden by &lt;tt&gt;&quot;test/test_all.rb&quot;&lt;/tt&gt;, if it exists.
+
+* &lt;tt&gt;spec_pattern&lt;/tt&gt; - A filename array, glob array, or regex for test runners.
 * &lt;tt&gt;rcov_options&lt;/tt&gt; - Any extra flags to pass to RCov when coverage reports are run.
 
 Uncommon packaging options:
@@ -144,7 +152,7 @@ Documentation options:
 class Echoe
 
   # user-configurable
-  attr_accessor :author, :changes, :clean_pattern, :description, :email, :runtime_dependencies, :development_dependencies, :need_tgz, :need_tar_gz, :need_gem, :need_zip, :rdoc_pattern, :project, :summary, :test_pattern, :url, :version, :docs_host, :rdoc_template, :manifest_name, :install_message, :extension_pattern, :private_key, :certificate_chain, :require_signed, :ruby_version, :platform, :ignore_pattern, :executable_pattern, :changelog, :rcov_options, :gemspec_format
+  attr_accessor :author, :changes, :clean_pattern, :description, :email, :runtime_dependencies, :development_dependencies, :need_tgz, :need_tar_gz, :need_gem, :need_zip, :rdoc_pattern, :project, :summary, :test_pattern, :spec_pattern, :url, :version, :docs_host, :rdoc_template, :manifest_name, :install_message, :extension_pattern, :private_key, :certificate_chain, :require_signed, :ruby_version, :platform, :ignore_pattern, :executable_pattern, :changelog, :rcov_options, :gemspec_format
 
   # best left alone
   attr_accessor :name, :lib_files, :test_files, :bin_files, :spec, :rdoc_options, :rubyforge_name, :has_rdoc, :include_gemspec, :include_rakefile, :gemspec_name, :retain_gemspec, :rakefile_name, :eval, :files, :changelog_patterns, :rubygems_version, :use_sudo, :gem_bin
@@ -163,6 +171,7 @@ class Echoe
     self.email = &quot;&quot;
     self.clean_pattern = [&quot;pkg&quot;, &quot;doc&quot;, 'build/*', '**/coverage', '**/*.o', '**/*.so', '**/*.a', '**/*.log', &quot;{ext,lib}/*.{bundle,so,obj,pdb,lib,def,exp}&quot;, &quot;ext/Makefile&quot;, &quot;{ext,lib}/**/*.{bundle,so,obj,pdb,lib,def,exp}&quot;, &quot;ext/**/Makefile&quot;, &quot;pkg&quot;, &quot;*.gem&quot;, &quot;.config&quot;]
     self.test_pattern = File.exist?(&quot;test/test_all.rb&quot;) ? &quot;test/test_all.rb&quot; : ['test/**/test_*.rb', 'test/**/*_test.rb']
+    self.spec_pattern = &quot;spec/**/*_spec.rb&quot;
     self.ignore_pattern = /^(pkg|doc)|\.svn|CVS|\.bzr|\.DS|\.git/
 
     self.changelog_patterns = {
@@ -226,7 +235,7 @@ class Echoe
 
     # read manifest
     begin
-      self.files = File.read(manifest_name).split +
+      self.files = File.readlines(manifest_name).map { |x| x.strip } +
         [(gemspec_name if include_gemspec)] +
         [(rakefile_name if include_rakefile)]
       self.files = files.compact.uniq
@@ -255,14 +264,16 @@ class Echoe
       end
     end
 
-    self.changes = if File.exist? changelog
-      Array(changelog_patterns[:changes]).map do |pattern|
-        open(changelog) do |log|
-          log.read[pattern, 1]
-        end
-      end.compact.first or &quot;&quot;
-    else
-      &quot;&quot;
+    unless self.changes
+      self.changes = if File.exist? changelog
+        Array(changelog_patterns[:changes]).map do |pattern|
+          open(changelog) do |log|
+            log.read[pattern, 1]
+          end
+        end.compact.first or &quot;&quot;
+      else
+        &quot;&quot;
+      end
     end
 
     # set some post-defaults
@@ -276,6 +287,7 @@ class Echoe
     self.rdoc_pattern = apply_pattern(rdoc_pattern, files) - [manifest_name]
     self.executable_pattern = apply_pattern(executable_pattern, files)
     self.test_pattern = apply_pattern(test_pattern)
+    self.spec_pattern = apply_pattern(spec_pattern)
 
     define_tasks
   end
@@ -385,7 +397,8 @@ class Echoe
         puts &quot;#{var}: #{instance_variable_get(var).inspect}&quot;
       end
     end
-
+    
+    desc &quot;Builds the .gemspec&quot;
     task :build_gemspec do
       # Construct the gemspec file, if needed.
       if include_gemspec
@@ -403,11 +416,15 @@ class Echoe
           end
         end
       end
+      puts &quot;Gemspec generated&quot;
     end
 
     # Chain it to the gemspec task prerequisite
     task gemspec_name.to_sym =&gt; [:build_gemspec]
 
+    desc &quot;Generates manifest &amp; gemspec in one go&quot;
+    task :build =&gt; [:manifest, :build_gemspec]
+
     task :package do
       # Chain some cleanup tasks to the default :package task.
       # Remove the gemfile if it wasn't actually requested.
@@ -506,7 +523,8 @@ class Echoe
         end
       end
 
-      task :test =&gt; [:compile]
+      task :test =&gt; [:compile] if test_pattern.any?
+      task :spec =&gt; :compile if spec_pattern.any?
 
     end
 
@@ -586,7 +604,15 @@ class Echoe
         File.open(filename, 'w') do |f|
           f.write &quot;Subject: #{name.capitalize} #{version}\n\n&quot;
           f.write &quot;#{name.capitalize} has been updated to #{version}. #{name.capitalize} is #{summary.uncapitalize}\n\n&quot;
-          f.write &quot;Changes in this version: #{changes.sub(/^\s*[\w\d\.]+\s+/, '').uncapitalize}\n\n&quot; unless changes.empty?
+          unless changes.empty?
+            f.write &quot;Changes in this version: &quot;
+            if changes.include?(&quot;\n&quot;)
+              f.write(changes)
+            else
+              f.write(changes.sub(/^\s*[\w\d\.]+\s+/, '').uncapitalize)
+            end
+            f.write(&quot;\n\n&quot;)
+          end
           f.write &quot;More information is available at #{url} .\n\n&quot; unless url.empty?
         end
       end
@@ -694,9 +720,17 @@ class Echoe
         end
       end
 
+      task :default =&gt; :test
     end
 
-    task :default =&gt; :test
+    if spec_pattern.any?
+      desc &quot;Run the spec suite&quot;
+      Spec::Rake::SpecTask.new('spec') do |t|
+        t.spec_files = spec_pattern
+      end
+
+      task :default =&gt; :spec
+    end
 
     if defined? Rcov
       Rcov::RcovTask.new(:coverage) do |t|</diff>
      <filename>lib/echoe.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,36 +1,38 @@
 
 ### Platform check regexes
 
-module Platform
-  def self.windows?
-    @windows ||= RUBY_PLATFORM =~ /djgpp|(cyg|ms|bcc)win|mingw/
-    !@windows.nil?
-  end
+class Echoe
+  module Platform
+    def self.windows?
+      @windows ||= RUBY_PLATFORM =~ /djgpp|(cyg|ms|bcc)win|mingw/
+      !@windows.nil?
+    end
 
-  def self.gcc?
-    @gcc ||= RUBY_PLATFORM =~ /mingw/
-    !@gcc.nil?
-  end
+    def self.gcc?
+      @gcc ||= RUBY_PLATFORM =~ /mingw/
+      !@gcc.nil?
+    end
 
-  def self.msvc?
-    @msvc ||= RUBY_PLATFORM =~ /mswin/
-    !@msvc.nil?
-  end
+    def self.msvc?
+      @msvc ||= RUBY_PLATFORM =~ /mswin/
+      !@msvc.nil?
+    end
   
-  def self.java?
-    @java ||= RUBY_PLATFORM =~ /java/
-    !@java.nil?
-  end
+    def self.java?
+      @java ||= RUBY_PLATFORM =~ /java/
+      !@java.nil?
+    end
   
-  def self.suffix
-    @suffix ||= Gem.default_exec_format[2..-1]
-  end
+    def self.suffix
+      @suffix ||= Gem.default_exec_format[2..-1]
+    end
   
-  def self.rake
-    windows? ? &quot;rake#{suffix}.bat&quot; : &quot;rake#{suffix}&quot;
-  end
+    def self.rake
+      windows? ? &quot;rake#{suffix}.bat&quot; : &quot;rake#{suffix}&quot;
+    end
   
-  def self.make
-    msvc? ? 'nmake' : 'make'
+    def self.make
+      msvc? ? 'nmake' : 'make'
+    end
   end
 end</diff>
      <filename>lib/echoe/platform.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>bdf15a4174ddfdf6954df5c8caa5b0b1369bbdaa</id>
    </parent>
    <parent>
      <id>6a3b91137498612121c08690eda6986609f9bc74</id>
    </parent>
  </parents>
  <author>
    <name>Evan Weaver</name>
    <email>eweaver@twitter.com</email>
  </author>
  <url>http://github.com/fauna/echoe/commit/ca5d41af856099e72ba72af8a5ec63568a9ecfb0</url>
  <id>ca5d41af856099e72ba72af8a5ec63568a9ecfb0</id>
  <committed-date>2009-08-27T17:01:52-07:00</committed-date>
  <authored-date>2009-08-27T17:01:52-07:00</authored-date>
  <message>Merge branch 'master' of git@github.com:fauna/echoe

Conflicts:
	CHANGELOG
	echoe.gemspec</message>
  <tree>2c41336fbdd0da9564b4f2d4fcd79c39f17a7ee1</tree>
  <committer>
    <name>Evan Weaver</name>
    <email>eweaver@twitter.com</email>
  </committer>
</commit>
