Rakefile.rb in cxxproject-0.4.6 vs Rakefile.rb in cxxproject-0.5.47

- old
+ new

@@ -1,69 +1,116 @@ -require 'rake/gempackagetask' -begin - require 'roodi' - require 'roodi_task' -rescue LoadError # don't bail out when people do not have roodi installed! - warn "roodi not installed...will not be checked!" -end +require 'rake/clean' +require './rake_helper/spec.rb' -begin - require 'spec/rake/spectask' # old rspec -rescue LoadError - begin - require 'rspec/core/rake_task' # rspec 2.5.x - rescue LoadError - warn "spec not installed...will not be checked!" - end -end - - - desc "Default Task" task :default => [:install] -PKG_FILES = FileList[ - 'lib/**/*.rb', - 'lib/tools/**/*.template', - 'Rakefile.rb', - 'spec/**/*.rb' -] -task :gem -spec = Gem::Specification.load('cxx.gemspec') -Rake::GemPackageTask.new(spec) +begin + require 'rubygems/package_task' + spec = Gem::Specification.load('cxx.gemspec') + Gem::PackageTask.new(spec){|pkg|} -if self.class.const_defined?(:RoodiTask) then - RoodiTask.new 'roodi', PKG_FILES, 'roodi.yml' - task :gem => [:roodi] -end + desc "install gem globally" + task :install => [:gem] do + sh "gem install pkg/#{spec.name}-#{spec.version}.gem" + end -# old rspec -if self.class.const_defined?(:SpecTask) then - desc "Run all examples" - Spec::Rake::SpecTask.new() do |t| - t.spec_files = FileList['spec/**/*_spec.rb'] + + begin + require 'rdoc' + require 'rdoc/task' + RDoc::Task.new do |rd| + rd.rdoc_files.include(spec.files) + end + rescue LoadError => e + task :rdoc do + puts 'please gem install rdoc' + end end -# task :gem => [:spec] + begin + require 'roodi' + require 'roodi_task' + class RoodiTask + def define + # copied from roodi_task.rb + desc "Check for design issues in: #{patterns.join(', ')}" + task name do + runner = Roodi::Core::Runner.new + runner.config = config if config + patterns.each do |pattern| + Dir.glob(pattern).each { |file| runner.check_file(file) } + end + runner.errors.each {|error| puts error} + # raise "Found #{runner.errors.size} errors." unless runner.errors.empty? + end + self + end + end + RoodiTask.new('roodi', spec.files) + task :gem => [:roodi] + rescue LoadError # don't bail out when people do not have roodi installed! + puts 'please gem install roodi' + end +rescue LoadError => e + puts "please missing gems #{e}" end -# new rspec -begin # const_defined? did not work? - desc "Run all examples" - RSpec::Core::RakeTask.new() do |t| - puts Dir.glob 'spec/**/*_spec.rb' - t.pattern = 'spec/**/*_spec.rb' +def two_digits(x) + if x.length > 1 + x + else + "0#{x}" end -# task :gem => [:spec] -rescue end -desc 'build gem only' -task :gem_only do - sh "gem build cxx.gemspec" - mv FileList["*.gem"], "pkg" -end +begin + require 'grit' + include Grit -desc "install gem globally" -task :install => [:gem] do - sh "gem install pkg/#{spec.name}-#{spec.version}.gem" + def git_history + repo = Repo.new('.') + tag_names = repo.tags.collect {|t| t.name } + relevant_tags = repo.tags.reject {|t| !t.name.start_with?("v_")} + sorted_tags = relevant_tags.sort_by.each do |t| + /v_(?<x>\d+)\.(?<y>\d+)\.(?<z>\d+)/ =~ t.name + "#{two_digits(x)}-#{two_digits(y)}-#{two_digits(z)}" + end + + change_text = [] + zipped = sorted_tags[0..-2].zip(sorted_tags[1..-1]) + zipped.reverse.each do |a,b| + change_text << "" + change_text << "#{a.name} => #{b.name}" + change_text << "" + cs = repo.commits_between(a.commit, b.commit) + cm = cs.each do |c| + change_lines = c.message.lines.to_a + first = change_lines.first + change_text << " * " + first + "#{change_lines[1..-1].collect {|l| " #{l}"}.join("")}" + end + end + change_text + end + + desc 'generate version history' + task :generate_history do + puts git_history + end + + desc 'generate and update version history' + task :update_version_history do + change_line = "## Change History:" + readme = 'README.md' + content = File.read(readme) + File.open(readme, 'w') do |f| + f.puts content.gsub(/^#{change_line}.*/m, ([change_line] << git_history).join("\n")) + end + end + +rescue LoadError => e + puts 'to build the version history please gem install grit' end + + +require './rake_helper/perftools' +