Index: /dotfiles/cutagem/templates/walf443-default/trunk/Rakefile
===================================================================
--- /dotfiles/cutagem/templates/walf443-default/trunk/Rakefile (revision 4512)
+++ /dotfiles/cutagem/templates/walf443-default/trunk/Rakefile (revision 4512)
@@ -0,0 +1,52 @@
+require 'rubygems'
+require 'rake'
+require 'rake/clean'
+require 'rake/testtask'
+require 'rake/packagetask'
+require 'rake/gempackagetask'
+require 'rake/rdoctask'
+require 'rake/contrib/rubyforgepublisher'
+require 'rake/contrib/sshpublisher'
+require 'fileutils'
+include FileUtils
+
+load File.join(File.dirname(__FILE__), 'tasks', 'basic_config.rake')
+
+NAME              = "<%=gemname%>"
+DESCRIPTION       = <<-"END_DESCRIPTION"
+<%=description%>
+END_DESCRIPTION
+BIN_FILES         = %w(  )
+VERS              = "0.0.1"
+
+EXTRA_RDOC_FILES = []
+HECKLE_ROOT_MODULES = ["<%= gemclass %>"]
+
+SPEC = Gem::Specification.new do |s|
+	s.name              = NAME
+	s.version           = VERS
+	s.platform          = Gem::Platform::RUBY
+	s.has_rdoc          = true
+	s.extra_rdoc_files  = DEFAULT_EXTRA_RDOC_FILES + EXTRA_RDOC_FILES
+	s.rdoc_options     += RDOC_OPTS + ['--title', "#{NAME} documentation"]
+	s.summary           = DESCRIPTION
+	s.description       = DESCRIPTION
+	s.author            = AUTHOR
+	s.email             = EMAIL
+	s.homepage          = HOMEPATH
+	s.executables       = BIN_FILES
+	s.rubyforge_project = RUBYFORGE_PROJECT
+	s.bindir            = "bin"
+	s.require_path      = "lib"
+	s.autorequire       = ""
+	s.test_files        = Dir["spec/*_spec.rb"]
+
+	#s.add_dependency('activesupport', '>=1.3.1')
+	#s.required_ruby_version = '>= 1.8.2'
+  s.add_dependency('date_time-duration', '>= 0.0.1')
+
+	s.files = PKG_FILES + EXTRA_RDOC_FILES
+	s.extensions = EXTENSIONS
+end
+
+import File.join(File.dirname(__FILE__), 'tasks', 'basic_tasks.rake')
Index: /dotfiles/cutagem/templates/walf443-default/trunk/tasks/basic_config.rake
===================================================================
--- /dotfiles/cutagem/templates/walf443-default/trunk/tasks/basic_config.rake (revision 4323)
+++ /dotfiles/cutagem/templates/walf443-default/trunk/tasks/basic_config.rake (revision 4323)
@@ -0,0 +1,22 @@
+AUTHOR            = "<%= author %>"
+EMAIL             = "<%= email %>"
+RUBYFORGE_PROJECT = "akasakarb"
+RUBYFORGE_PROJECT_ID = 4314
+HOMEPATH          = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
+RDOC_OPTS = [
+	"--charset", "utf-8",
+	"--opname", "index.html",
+	"--line-numbers",
+	"--main", "README",
+	"--inline-source",
+  '--exclude', '^(example|extras)/'
+]
+DEFAULT_EXTRA_RDOC_FILES = ['README', 'ChangeLog']
+PKG_FILES = [ 'Rakefile' ] + 
+  DEFAULT_EXTRA_RDOC_FILES +
+  Dir.glob('{bin,lib,test,spec,doc,tasks,script,generator,templates,extras,website}/**/*') + 
+  Dir.glob('ext/**/*.{h,c,rb}') +
+  Dir.glob('examples/**/*.rb') +
+  Dir.glob('tools/*.rb')
+
+EXTENSIONS = FileList['ext/**/extconf.rb'].to_a
Index: /dotfiles/cutagem/templates/walf443-default/trunk/tasks/basic_tasks.rake
===================================================================
--- /dotfiles/cutagem/templates/walf443-default/trunk/tasks/basic_tasks.rake (revision 4510)
+++ /dotfiles/cutagem/templates/walf443-default/trunk/tasks/basic_tasks.rake (revision 4510)
@@ -0,0 +1,139 @@
+
+REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
+CLEAN.include ['**/.*.sw?', '*.gem', '.config']
+
+Rake::GemPackageTask.new(SPEC) do |p|
+	p.need_tar = true
+	p.gem_spec = SPEC
+end
+
+task :default => [:spec]
+task :test    => [:spec]
+task :package => [:clean]
+
+require 'spec/rake/spectask'
+Spec::Rake::SpecTask.new(:spec) do |t|
+  t.spec_files = FileList['spec/**/*_spec.rb']
+  t.spec_opts = ['--options', 'spec/spec.opts']
+  t.warning = true
+  t.rcov = true
+  t.rcov_dir = 'doc/output/coverage'
+  t.rcov_opts = ['--exclude', 'spec,\.autotest']
+end
+
+desc "Heckle each module and class in turn"
+task :heckle => :spec do
+  root_modules = HECKLE_ROOT_MODULES
+  spec_files = FileList['spec/**/*_spec.rb']
+  
+  current_module, current_method = nil, nil
+  heckle_caught_modules = Hash.new { |hash, key| hash[key] = [] }
+  unhandled_mutations = 0
+  
+  root_modules.each do |root_module|
+    IO.popen("heckle #{root_module} -t #{spec_files}") do |pipe|
+      while line = pipe.gets
+        line = line.chomp
+        
+        if line =~ /^\*\*\*  ((?:\w+(?:::)?)+)#(\w+)/
+          current_module, current_method = $1, $2
+        elsif line == "The following mutations didn't cause test failures:"
+          heckle_caught_modules[current_module] << current_method
+        elsif line == "+++ mutation"
+          unhandled_mutations += 1 
+        end
+              
+        puts line
+      end
+    end
+  end
+  
+  if unhandled_mutations > 0
+    error_message_lines = ["*************\n"]
+    
+    error_message_lines << 
+      "Heckle found #{unhandled_mutations} " + 
+      "mutation#{"s" unless unhandled_mutations == 1} " +
+      "that didn't cause spec violations\n"
+
+    heckle_caught_modules.each do |mod, methods|
+      error_message_lines <<
+        "#{mod} contains the following poorly-specified methods:"
+      methods.each do |m| 
+        error_message_lines << " - #{m}"
+      end
+      error_message_lines << ""
+    end
+    
+    error_message_lines <<
+      "Get your act together and come back " +
+      "when your specs are doing their job!"
+    
+    puts "*************"
+    raise error_message_lines.join("\n")
+  else
+    puts "Well done! Your code withstood a heckling."
+  end
+end
+
+require 'spec/rake/verify_rcov'
+RCov::VerifyTask.new(:rcov => :spec) do |t|
+  t.index_html = "doc/output/coverage/index.html"
+  t.threshold = 100
+end
+
+task :install do
+	name = "#{NAME}-#{VERS}.gem"
+	sh %{rake package}
+	sh %{sudo gem install pkg/#{name}}
+end
+
+task :uninstall => [:clean] do
+	sh %{sudo gem uninstall #{NAME}}
+end
+
+
+Rake::RDocTask.new do |rdoc|
+	rdoc.rdoc_dir = 'html'
+	rdoc.options += RDOC_OPTS
+	rdoc.template = "resh"
+	#rdoc.template = "#{ENV['template']}.rb" if ENV['template']
+	if ENV['DOC_FILES']
+		rdoc.rdoc_files.include(ENV['DOC_FILES'].split(/,\s*/))
+	else
+		rdoc.rdoc_files.include('README', 'ChangeLog')
+		rdoc.rdoc_files.include('lib/**/*.rb')
+		rdoc.rdoc_files.include('ext/**/*.c')
+	end
+end
+
+desc "Publish to RubyForge"
+task :rubyforge => [:rdoc, :package] do
+	require 'rubyforge'
+	Rake::RubyForgePublisher.new(RUBYFORGE_PROJECT, 'yoshimi').upload
+end
+
+desc 'Package and upload the release to rubyforge.'
+task :release => [:clean, :package] do |t|
+	require 'rubyforge'
+	v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"
+	abort "Versions don't match #{v} vs #{VERS}" unless v == VERS
+	pkg = "pkg/#{NAME}-#{VERS}"
+
+	rf = RubyForge.new
+	puts "Logging in"
+	rf.login
+
+	c = rf.userconfig
+#	c["release_notes"] = description if description
+#	c["release_changes"] = changes if changes
+	c["preformatted"] = true
+
+	files = [
+		"#{pkg}.tgz",
+		"#{pkg}.gem"
+	].compact
+
+	puts "Releasing #{NAME} v. #{VERS}"
+	rf.add_release RUBYFORGE_PROJECT_ID, RUBYFORGE_PACKAGE_ID, VERS, *files
+end
Index: /dotfiles/cutagem/templates/walf443-default/trunk/lib/gempath.rb
===================================================================
--- /dotfiles/cutagem/templates/walf443-default/trunk/lib/gempath.rb (revision 4323)
+++ /dotfiles/cutagem/templates/walf443-default/trunk/lib/gempath.rb (revision 4323)
@@ -0,0 +1,4 @@
+
+class <%=gemclass%>
+
+end
Index: /dotfiles/cutagem/templates/walf443-default/trunk/ChangeLog
===================================================================
--- /dotfiles/cutagem/templates/walf443-default/trunk/ChangeLog (revision 4512)
+++ /dotfiles/cutagem/templates/walf443-default/trunk/ChangeLog (revision 4512)
@@ -0,0 +1,4 @@
+== 0.0.1 / <%=Time.now.strftime("%Y-%m-%d")%>
+
+* initial release
+
Index: /dotfiles/cutagem/templates/walf443-default/trunk/spec/gemname_spec.rb
===================================================================
--- /dotfiles/cutagem/templates/walf443-default/trunk/spec/gemname_spec.rb (revision 4323)
+++ /dotfiles/cutagem/templates/walf443-default/trunk/spec/gemname_spec.rb (revision 4323)
@@ -0,0 +1,5 @@
+require File.join(File.dirname(__FILE__), 'spec_helper')
+require '<%= gempath %>'
+
+describe <%= gemclass %> do
+end
Index: /dotfiles/cutagem/templates/walf443-default/trunk/spec/spec_helper.rb
===================================================================
--- /dotfiles/cutagem/templates/walf443-default/trunk/spec/spec_helper.rb (revision 4323)
+++ /dotfiles/cutagem/templates/walf443-default/trunk/spec/spec_helper.rb (revision 4323)
@@ -0,0 +1,4 @@
+require 'rubygems'
+require 'spec'
+$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib/'))
+
Index: /dotfiles/cutagem/templates/walf443-default/trunk/spec/spec.opts
===================================================================
--- /dotfiles/cutagem/templates/walf443-default/trunk/spec/spec.opts (revision 4510)
+++ /dotfiles/cutagem/templates/walf443-default/trunk/spec/spec.opts (revision 4510)
@@ -0,0 +1,1 @@
+-Du -c -fs
Index: /dotfiles/cutagem/templates/walf443-default/trunk/README
===================================================================
--- /dotfiles/cutagem/templates/walf443-default/trunk/README (revision 4512)
+++ /dotfiles/cutagem/templates/walf443-default/trunk/README (revision 4512)
@@ -0,0 +1,24 @@
+
+= <%=gemname%>
+
+== Synopsis
+
+== Description
+
+== Installation
+
+=== Archive Installation
+
+	rake install
+
+=== Gem Installation
+
+	gem install <%=gemid%>
+
+== Features/Problems
+
+== Copyright
+
+Author::    <%=author%> <<%=email%>>
+Copyright:: Copyright (c) <%=Time.now.strftime("%Y")%> <%=author%>
+License:: you can redistribute it and/or modify it under the same terms as Ruby itself.
Index: /tfiles/cutagem/templates/walf443-default/Rakefile
===================================================================
--- /dotfiles/cutagem/templates/walf443-default/Rakefile (revision 4510)
+++  (revision )
@@ -1,52 +1,0 @@
-require 'rubygems'
-require 'rake'
-require 'rake/clean'
-require 'rake/testtask'
-require 'rake/packagetask'
-require 'rake/gempackagetask'
-require 'rake/rdoctask'
-require 'rake/contrib/rubyforgepublisher'
-require 'rake/contrib/sshpublisher'
-require 'fileutils'
-include FileUtils
-
-load File.join(File.dirname(__FILE__), 'tasks', 'basic_config.rake')
-
-NAME              = "<%=gemname%>"
-DESCRIPTION       = <<-"END_DESCRIPTION"
-<%=description%>
-END_DESCRIPTION
-BIN_FILES         = %w(  )
-VERS              = "0.0.1"
-
-EXTRA_RDOC_FILES = []
-HECKLE_ROOT_MODULES = ["<%= gemclass %>"]
-
-SPEC = Gem::Specification.new do |s|
-	s.name              = NAME
-	s.version           = VERS
-	s.platform          = Gem::Platform::RUBY
-	s.has_rdoc          = true
-	s.extra_rdoc_files  = DEFAULT_EXTRA_RDOC_FILES + EXTRA_RDOC_FILES
-	s.rdoc_options     += RDOC_OPTS + ['--title', "#{NAME} documentation"]
-	s.summary           = DESCRIPTION
-	s.description       = DESCRIPTION
-	s.author            = AUTHOR
-	s.email             = EMAIL
-	s.homepage          = HOMEPATH
-	s.executables       = BIN_FILES
-	s.rubyforge_project = RUBYFORGE_PROJECT
-	s.bindir            = "bin"
-	s.require_path      = "lib"
-	s.autorequire       = ""
-	s.test_files        = Dir["spec/*_spec.rb"]
-
-	#s.add_dependency('activesupport', '>=1.3.1')
-	#s.required_ruby_version = '>= 1.8.2'
-  s.add_dependency('date_time-duration', '>= 0.0.1')
-
-	s.files = PKG_FILES + EXTRA_RDOC_FILES
-	s.extensions = EXTENSIONS
-end
-
-import File.join(File.dirname(__FILE__), 'tasks', 'basic_tasks.rake')
Index: /tfiles/cutagem/templates/walf443-default/ChangeLog
===================================================================
--- /dotfiles/cutagem/templates/walf443-default/ChangeLog (revision 4323)
+++  (revision )
@@ -1,4 +1,0 @@
-== 0.0.1 / <%=Time.now.strftime("%Y-%m-%d")%>
-
-* initial release
-
Index: /tfiles/cutagem/templates/walf443-default/README
===================================================================
--- /dotfiles/cutagem/templates/walf443-default/README (revision 4323)
+++  (revision )
@@ -1,24 +1,0 @@
-
-= <%=gemname%>
-
-== Synopsis
-
-== Description
-
-== Installation
-
-=== Archive Installation
-
-	rake install
-
-=== Gem Installation
-
-	gem install <%=gemid%>
-
-== Features/Problems
-
-== Copyright
-
-Author::    <%=author%> <<%=email%>>
-Copyright:: Copyright (c) <%=Time.now.strftime("%Y")%> <%=author%>
-License:: you can redistribute it and/or modify it under the same terms as Ruby itself.
