Rakefile in mongoid-8.1.7 vs Rakefile in mongoid-9.0.0

- old
+ new

@@ -1,63 +1,37 @@ # frozen_string_literal: true +# rubocop:todo all require "bundler" +require "bundler/gem_tasks" Bundler.setup ROOT = File.expand_path(File.join(File.dirname(__FILE__))) $: << File.join(ROOT, 'spec/shared/lib') require "rake" require "rspec/core/rake_task" +require 'mrss/spec_organizer' -# stands in for the Bundler-provided `build` task, which builds the -# gem for this project. Our release process builds the gems in a -# particular way, in a GitHub action. This task is just to help remind -# developers of that fact. +$LOAD_PATH.unshift File.expand_path("../lib", __FILE__) +require "mongoid/version" + +tasks = Rake.application.instance_variable_get('@tasks') +tasks['release:do'] = tasks.delete('release') + +task :gem => :build task :build do - abort <<~WARNING - `rake build` does nothing in this project. The gem must be built via - the `Mongoid Release` action on GitHub, which is triggered manually when - a new release is ready. - WARNING + system "gem build mongoid.gemspec" end -# `rake version` is used by the deployment system so get the release version -# of the product beng deployed. It must do nothing more than just print the -# product version number. -# -# See the mongodb-labs/driver-github-tools/ruby/publish Github action. -desc "Print the current value of Mongoid::VERSION" -task :version do - require 'mongoid/version' - - puts Mongoid::VERSION +task :install => :build do + system "sudo gem install mongoid-#{Mongoid::VERSION}.gem" end -# overrides the default Bundler-provided `release` task, which also -# builds the gem. Our release process assumes the gem has already -# been built (and signed via GPG), so we just need `rake release` to -# push the gem to rubygems. task :release do - require 'mongoid/version' - - if ENV['GITHUB_ACTION'].nil? - abort <<~WARNING - `rake release` must be invoked from the `Mongoid Release` GitHub action, - and must not be invoked locally. This ensures the gem is properly signed - and distributed by the appropriate user. - - Note that it is the `rubygems/release-gem@v1` step in the `Mongoid Release` - action that invokes this task. Do not rename or remove this task, or the - release-gem step will fail. Reimplement this task with caution. - - mongoid-#{Mongoid::VERSION}.gem was NOT pushed to RubyGems. - WARNING - end - - system 'gem', 'push', "mongoid-#{Mongoid::VERSION}.gem" + raise "Please use ./release.sh to release" end RSpec::Core::RakeTask.new("spec") do |spec| spec.pattern = "spec/**/*_spec.rb" end @@ -65,10 +39,50 @@ RSpec::Core::RakeTask.new('spec:progress') do |spec| spec.rspec_opts = %w(--format progress) spec.pattern = "spec/**/*_spec.rb" end +desc 'Build and validate the evergreen config' +task eg: %w[ eg:build eg:validate ] + +# 'eg' == 'evergreen', but evergreen is too many letters for convenience +namespace :eg do + desc 'Builds the .evergreen/config.yml file from the templates' + task :build do + ruby '.evergreen/update-evergreen-configs' + end + + desc 'Validates the .evergreen/config.yml file' + task :validate do + system 'evergreen validate --project mongoid .evergreen/config.yml' + end + + desc 'Updates the evergreen executable to the latest available version' + task :update do + system 'evergreen get-update --install' + end + + desc 'Runs the current branch as an evergreen patch' + task :patch do + system 'evergreen patch --uncommitted --project mongoid --browse --auto-description --yes' + end +end + +namespace :generate do + desc 'Generates a mongoid.yml from the template' + task :config do + require 'mongoid' + require 'erb' + + template_path = 'lib/rails/generators/mongoid/config/templates/mongoid.yml' + database_name = ENV['DATABASE_NAME'] || 'my_db' + + config = ERB.new(File.read(template_path), trim_mode: '-').result(binding) + File.write('mongoid.yml', config) + end +end + CLASSIFIERS = [ [%r,^mongoid/attribute,, :attributes], [%r,^mongoid/association/[or],, :associations_referenced], [%r,^mongoid/association,, :associations], [%r,^mongoid,, :unit], @@ -80,12 +94,10 @@ unit attributes associations_referenced associations integration rails ) def spec_organizer - require 'mrss/spec_organizer' - Mrss::SpecOrganizer.new( root: ROOT, classifiers: CLASSIFIERS, priority_order: RUN_PRIORITY, ) @@ -115,14 +127,20 @@ desc "Generate all documentation" task :docs => 'docs:yard' namespace :docs do - desc "Generate yard documention" + desc "Generate yard documentation" task :yard do - require "mongoid/version" - out = File.join('yard-docs', Mongoid::VERSION) FileUtils.rm_rf(out) system "yardoc -o #{out} --title mongoid-#{Mongoid::VERSION}" + end +end + +namespace :release do + task :check_private_key do + unless File.exist?('gem-private_key.pem') + raise "No private key present, cannot release" + end end end