begin require "bundler/setup" rescue LoadError puts "You must `gem install bundler` and `bundle install` to run rake tasks" end require "rdoc/task" RDoc::Task.new(:rdoc) do |rdoc| rdoc.rdoc_dir = "rdoc" rdoc.title = "ProductDocuments" rdoc.options << "--line-numbers" rdoc.rdoc_files.include("README.md") rdoc.rdoc_files.include("lib/**/*.rb") end APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__) load "rails/tasks/engine.rake" load "rails/tasks/statistics.rake" require "rake/testtask" Rake::TestTask.new(:test) do |t| t.libs << "lib" t.libs << "test" t.pattern = "test/**/*_test.rb" t.verbose = false end task default: :test $LOAD_PATH.unshift File.expand_path("lib", __dir__) require "workarea/product_documents/version" desc "Generate the changelog based on git history" task :changelog, :from, :to do |_t, args| require "date" from = if args[:from].present? args[:from] elsif `git tag`.empty? `git rev-list --max-parents=0 HEAD` else `git describe --tags --abbrev=0`.strip end to = args[:to] || "HEAD" log = `git log #{from}..#{to} --pretty=format:'%an|%B___'` puts "Workarea ProductDocuments #{Workarea::ProductDocuments::VERSION} (#{Date.today})" puts "-" * 80 puts log.split(/___/).each do |commit| pieces = commit.split("|").reverse author = pieces.pop.strip message = pieces.join.strip next if message =~ /^\s*Merge pull request/ next if message =~ /No changelog/i project_key = "DOCUMENTS" # TODO: Replace with your Project's Jira key if project_key.blank? puts "To clean up your release notes, add your project's Jira key to the Changelog Rake task!" else ticket = message.scan(/#{project_key}-\d+/)[0] next if ticket.nil? next if message =~ /^\s*Merge branch/ && ticket.nil? end first_line = false message.each_line do |line| if !first_line first_line = true puts "* #{line}" elsif line.strip.empty? puts else puts " #{line}" end end puts " #{author}" puts end end desc "Release version #{Workarea::ProductDocuments::VERSION} of the gem" task :release do host = "https://#{ENV['BUNDLE_GEMS__WEBLINC__COM']}@gems.weblinc.com" system "touch CHANGELOG.md" system 'echo "$(rake changelog) $(cat CHANGELOG.md)" > CHANGELOG.md' system 'git add CHANGELOG.md && git commit -m "Update changelog" && git push origin HEAD' system "git tag -a v#{Workarea::ProductDocuments::VERSION} -m 'Tagging #{Workarea::ProductDocuments::VERSION}'" system "git push --tags" system "gem build workarea-product_documents.gemspec" system "gem push workarea-product_documents-#{Workarea::ProductDocuments::VERSION}.gem" system "gem push workarea-product_documents-#{Workarea::ProductDocuments::VERSION}.gem --host #{host}" system "rm workarea-product_documents-#{Workarea::ProductDocuments::VERSION}.gem" end desc "Run the JavaScript tests" ENV["TEASPOON_RAILS_ENV"] = File.expand_path("test/dummy/config/environment", __dir__) task teaspoon: "app:teaspoon" desc "Start a server at http://localhost:3000/teaspoon for JavaScript tests" task :teaspoon_server do Dir.chdir("test/dummy") teaspoon_env = File.expand_path("test/teaspoon_env.rb", __dir__) system "RAILS_ENV=test TEASPOON_ENV=#{teaspoon_env} rails s" end