Rakefile in knife-solo-0.1.0.pre1 vs Rakefile in knife-solo-0.1.0

- old
+ new

@@ -1,29 +1,77 @@ require 'bundler/gem_tasks' require 'rake/testtask' +MANIFEST_IGNORES = %w[ + .travis.yml + .gitignore + Gemfile + Gemfile.lock + Manifest.txt + README.md + knife-solo.gemspec + script/newb + script/test + ] + desc 'Updates Manifest.txt with a list of files from git' task :manifest do git_files = `git ls-files`.split("\n") - ignored = %w(.gitignore Gemfile Gemfile.lock Manifest.txt knife-solo.gemspec script/newb script/test) File.open('Manifest.txt', 'w') do |f| - f.puts (git_files - ignored).join("\n") + f.puts (git_files - MANIFEST_IGNORES).join("\n") end end - task :release => :manifest +# Returns the parsed RDoc for a single file as HTML +# Somewhat gnarly, but does the job. +def parsed_rdoc file + options = RDoc::Options.new + options.template_dir = options.template_dir_for 'darkfish' + + rdoc = RDoc::RDoc.current = RDoc::RDoc.new + rdoc.options = options + rdoc.generator = RDoc::Generator::Darkfish.new(options) + parsed = rdoc.parse_files([file]) + parsed.first.description +end + +desc 'Renerates gh-pages from project' +task 'gh-pages' do + require 'tmpdir' + gem 'rdoc'; require 'rdoc/rdoc' + + Dir.mktmpdir do |clone| + sh "git clone -b gh-pages git@github.com:matschaffer/knife-solo.git #{clone}" + File.open(clone + "/index.html", 'w') do |f| + f.puts '---' + f.puts 'layout: default' + f.puts '---' + f.puts parsed_rdoc("README.rdoc") + end + rev = `git rev-parse HEAD`[0..7] + Dir.chdir(clone) do + sh "git commit --allow-empty -m 'Updated index from README.rdoc rev #{rev}' index.html" + sh "git push origin gh-pages" + end + end +end +task :release => 'gh-pages' + namespace :test do Rake::TestTask.new(:integration) do |t| t.libs << "test" t.test_files = FileList['test/integration/*_test.rb'] end Rake::TestTask.new(:units) do |t| t.libs << "test" t.test_files = FileList['test/*_test.rb'] end + + desc 'Run both unit and integration tests' + task :all => [:units, :integration] end desc "Alias for test:units" task :test => ['test:units'] task :default => :test