Rakefile in mastodon-0.1.0 vs Rakefile in mastodon-0.3.1

- old
+ new

@@ -1,55 +1,83 @@ +require 'rubygems' +require 'rake' + +task :default => :test + begin require 'jeweler' + Jeweler::Tasks.new do |gem| + gem.name = "mastodon" + gem.summary = %Q{A Ruby parser for todo.txt files} + gem.description = %Q{A Ruby parser for todo.txt files} + gem.email = "colin@evaryont.me" + gem.homepage = "http://evaryont.me" + gem.authors = ["Colin Shea"] + gem.add_development_dependency "riot", ">= 0" + gem.add_development_dependency "yard", ">= 0" + end + Jeweler::GemcutterTasks.new rescue LoadError - puts "Jeweler not available, but is required. Install it with: sudo gem install jeweler" - exit 1 + puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler" end -@jtasks = Jeweler::Tasks.new do |gemspec| - gemspec.name = "mastodon" - gemspec.summary = "A ruby parser for todo.txt files" - gemspec.description = "Mastodon: A ruby parser for todo.txt files.\n\nAnd the mastodon, like plain text, isn't extinct! (Yet.)" - gemspec.email = "colin@evaryont.me" - gemspec.homepage = "http://github.com/evaryont/mastodon/" - gemspec.authors = ["Colin Shea"] +require 'rake/testtask' +Rake::TestTask.new(:test) do |test| + test.libs << 'lib' << 'test' + test.pattern = 'test/**/*_test.rb' + test.verbose = true end -Jeweler::GemcutterTasks.new -@jeweler = @jtasks.jeweler +task :test => :check_dependencies -namespace :version do - desc "DON'T CALL. Write the version to lib/#{@jeweler.gemspec_helper.spec.name}/version.rb" - task :ruby do - # TODO: This is hard coded but it should be dynamic, given - # the gem spec - file = File.open("lib/#{@jeweler.gemspec_helper.spec.name}/version.rb", "w") - # TODO: and so should this class template - file.write <<-CLASS -# Automatically generated by `rake version:ruby' - use version:bump to change -# this, do not edit this directly, as it will be overwritten! -class #{@jeweler.gemspec_helper.spec.name.capitalize} - VERSION = [#{@jeweler.major_version}, #{@jeweler.minor_version}, #{@jeweler.patch_version}] +begin + require 'rcov/rcovtask' + Rcov::RcovTask.new do |test| + test.libs << 'test' + test.pattern = 'test/**/*_test.rb' + test.verbose = true + end +rescue LoadError + task :rcov do + abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov" + end end -CLASS - system("git commit --file='.git/COMMIT_EDITMSG' --amend -q -o 'lib/#{@jeweler.gemspec_helper.spec.name}/version.rb'") - end - # Take advantage of Rake not overwriting tasks. - # - # After the 'real' task has been called, write version.rb as well. - namespace :bump do - task :major do - Rake::Task["version:ruby"].execute - end - task :minor do - Rake::Task["version:ruby"].execute - end - task :patch do - Rake::Task["version:ruby"].execute - end - end +begin + require 'reek/adapters/rake_task' + Reek::RakeTask.new do |t| + t.fail_on_error = true + t.verbose = false + t.source_files = 'lib/**/*.rb' + end +rescue LoadError + task :reek do + abort "Reek is not available. In order to run reek, you must: sudo gem install reek" + end end -desc "Run the nanotest suite" -task :test do - system("ruby -I'lib:test' test/run_tests.rb") +begin + require 'roodi' + require 'roodi_task' + RoodiTask.new do |t| + t.verbose = false + end +rescue LoadError + task :roodi do + abort "Roodi is not available. In order to run roodi, you must: sudo gem install roodi" + end +end + +begin + require 'yard' + YARD::Rake::YardocTask.new do |t| + t.files = ["lib/**/*.rb"] + end +rescue LoadError + task :yard do + abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard" + end +end + +namespace :release do + desc "Release to all locations: Git, GitHub and GemCutter" + task :all => ["git:release", "github:release", "gemcutter:release"] end