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'
+