Merge branch 'master' of github.com:edgecase/ruby_koans
[ruby_koans.git] / Rakefile
old mode 100644 (file)
new mode 100755 (executable)
index 5fb5546..ab77d19
--- a/Rakefile
+++ b/Rakefile
@@ -2,7 +2,11 @@
 # -*- ruby -*-
 
 require 'rake/clean'
-require 'rdoc/task'
+begin
+  require 'rdoc/task'
+rescue LoadError => ex
+  # No rdoc task availble.
+end
 
 SRC_DIR      = 'src'
 PROB_DIR     = 'koans'
@@ -38,8 +42,6 @@ module Koans
   def Koans.make_koan_file(infile, outfile)
     if infile =~ /edgecase/
       cp infile, outfile
-    elsif infile =~ /autotest/
-      cp_r infile, outfile
     else
       open(infile) do |ins|
         open(outfile, "w") do |outs|
@@ -63,7 +65,7 @@ end
 module RubyImpls
   # Calculate the list of relevant Ruby implementations.
   def self.find_ruby_impls
-    rubys = `rvm list`.gsub(/=>/,'').split(/\n/).sort
+    rubys = `rvm list`.gsub(/=>/,'').split(/\n/).map { |x| x.strip }.reject { |x| x.empty? || x =~ /^rvm/ }.sort
     expected.map { |impl|
       last = rubys.grep(Regexp.new(Regexp.quote(impl))).last
       last ? last.split.first : nil
@@ -77,20 +79,22 @@ module RubyImpls
 
   # List of expected ruby implementations.
   def self.expected
-    %w(ruby-1.8.6 ruby-1.8.7 ruby-1.9.2 jruby ree)
+    %w(ruby-1.8.7 ruby-1.9.2 jruby ree)
   end
 end
 
 task :default => :walk_the_path
 
 task :walk_the_path do
-  cd 'koans'
+  cd PROB_DIR
   ruby 'path_to_enlightenment.rb'
 end
 
-Rake::RDocTask.new do |rd|
-  rd.main = "README.rdoc"
-  rd.rdoc_files.include("README.rdoc", "koans/*.rb")
+if defined?(Rake::RDocTask)
+  Rake::RDocTask.new do |rd|
+    rd.main = "README.rdoc"
+    rd.rdoc_files.include("README.rdoc", "${PROB_DIR}/*.rb")
+  end
 end
 
 directory DIST_DIR
@@ -134,7 +138,7 @@ end
 
 task :run do
   puts 'koans'
-  Dir.chdir("src") do
+  Dir.chdir("${SRC_DIR}") do
     puts "in #{Dir.pwd}"
     sh "ruby path_to_enlightenment.rb"
   end
@@ -150,7 +154,7 @@ task :run_all do
   RubyImpls.list.each do |impl|
     puts "=" * 40
     puts "On Ruby #{impl}"
-    sh "rvm #{impl} rake run"
+    sh ". rvm #{impl}; rake run"
     results << [impl, "RAN"]
     puts
   end