lib/rake_tasks/decko.rake in decko-0.14.2 vs lib/rake_tasks/decko.rake in decko-0.15.0
- old
+ new
@@ -1,147 +1,12 @@
require "decko/application"
require_relative "alias"
-CARD_TASKS =
- [
- :migrate,
- { migrate: %i[cards structure core_cards deck_cards redo stamp] },
- :reset_cache
- ].freeze
+CARD_TASKS = (
+ %i[eat migrate reset_cache reset_tmp seed setup sow update] +
+ [{ assets: %i[refresh code wipe] },
+ { migrate: %i[cards structure core_cards deck_cards redo stamp] },
+ { mod: %i[list symlink missing uninstall install] },
+ { seed: %i[build clean dump plow polish replant update] }]
+).freeze
link_task CARD_TASKS, from: :decko, to: :card
-
-decko_namespace = namespace :decko do
- desc "create a decko database from scratch, load initial data"
- task :seed do
- failing_loudly "decko seed" do
- seed
- end
- end
-
- desc "create a decko database from scratch, load initial data, don't reset the cache"
- task :seed_without_reset do
- # This variant is needed to generate test databases for decks
- # with custom codenames.
- # The cache reset loads the environment. That tends to fail
- # because of missing codenames that are added after the intial decko seed.
- seed with_cache_reset: false
- end
-
- desc "clear and load fixtures with existing tables"
- task reseed: :environment do
- ENV["SCHEMA"] ||= "#{Cardio.gem_root}/db/schema.rb"
-
- decko_namespace["clear"].invoke
- decko_namespace["load"].invoke
- end
-
- desc "empty the card tables"
- task :clear do
- conn = ActiveRecord::Base.connection
-
- puts "delete all data in bootstrap tables"
- Cardio::Seed::TABLES.each do |table|
- conn.delete "delete from #{table}"
- end
- end
-
- desc "Load seed data into database"
- task :load do
- decko_namespace["load_without_reset"].invoke
- puts "reset cache"
- system "bundle exec rake decko:reset_cache" # needs loaded environment
- end
-
- desc "Load seed data into database but don't reset cache"
- task :load_without_reset do
- require "decko/engine"
- # puts "update card_migrations"
- # decko_namespace["assume_card_migrations"].invoke
-
- if Rails.env == "test" && !ENV["GENERATE_FIXTURES"]
- puts "loading test fixtures"
- Rake::Task["db:fixtures:load"].invoke
- else
- puts "loading seed data"
- # db:seed checks for pending migrations. We don't want that because
- # as part of the seeding process we update the migration table
- ActiveRecord::Tasks::DatabaseTasks.load_seed
- # :Rake::Task["db:seed"].invoke
- end
-
- puts "set symlink for assets"
- decko_namespace["card:mod:symlink"].invoke
- end
-
- desc "reset with an empty tmp directory"
- task :reset_tmp do
- tmp_dir = Decko.paths["tmp"].first
- if Decko.paths["tmp"].existent
- Dir.foreach(tmp_dir) do |filename|
- next if filename.starts_with? "."
-
- FileUtils.rm_rf File.join(tmp_dir, filename), secure: true
- end
- else
- Dir.mkdir tmp_dir
- end
- end
-
- desc "update decko gems and database"
- task :update do
- failing_loudly "decko update" do
- ENV["NO_RAILS_CACHE"] = "true"
- decko_namespace["migrate"].invoke
- decko_namespace["reset_tmp"].invoke
- Card::Cache.reset_all
- Rake::Task["card:mod:uninstall"].invoke
- Rake::Task["card:mod:install"].invoke
- Rake::Task["card:mod:symlink"].invoke
- end
- end
-
- %i[list symlink missing uninstall install].each do |task|
- alias_task "mod:#{task}", "card:mod:#{task}"
- end
- alias_task :migrate, "card:migrate"
-
- desc "insert existing card migrations into schema_migrations_cards " \
- "to avoid re-migrating"
- task :assume_card_migrations do
- require "decko/engine"
- Cardio::Schema.assume_migrated_upto_version :core_cards
- end
-
- def seed with_cache_reset: true
- ENV["SCHEMA"] ||= "#{Cardio.gem_root}/db/schema.rb"
- # FIXME: this should be an option, but should not happen on standard creates!
- begin
- Rake::Task["db:drop"].invoke
- rescue StandardError
- puts "not dropped"
- end
-
- puts "creating"
- Rake::Task["db:create"].invoke
-
- puts "loading schema"
- Rake::Task["db:schema:load"].invoke
-
- load_task = "decko:load"
- load_task << "_without_reset" unless with_cache_reset
- Rake::Task[load_task].invoke
- end
-end
-
-def failing_loudly task
- yield
-rescue StandardError
- # TODO: fix this so that message appears *after* the errors.
- # Solution should ensure that rake still exits with error code 1!
- raise "\n>>>>>> FAILURE! #{task} did not complete successfully." \
- "\n>>>>>> Please address errors and re-run:\n\n\n"
-end
-
-def version
- ENV["VERSION"] ? ENV["VERSION"].to_i : nil
-end