# frozen_string_literal: true # NOTE: only doing this in development as some production environments (Heroku) # NOTE: are sensitive to local FS writes, and besides – it's just not proper # NOTE: to have a dev-mode tool do its thing in production. if Rails.env.development?

require "annotate"
task :set_annotation_options do # rubocop:disable Rails/RakeEnvironment
  # You can override any of these by setting an environment variable of the
  # same name.
  Annotate.set_defaults(
    "additional_file_patterns" => [],
    "routes" => "false",
    "models" => "true",
    "position_in_routes" => "before",
    "position_in_class" => "before",
    "position_in_test" => "before",
    "position_in_fixture" => "before",
    "position_in_factory" => "before",
    "position_in_serializer" => "before",
    "show_foreign_keys" => "true",
    "show_complete_foreign_keys" => "false",
    "show_indexes" => "true",
    "simple_indexes" => "false",
    "model_dir" => "app/models",
    "root_dir" => "",
    "include_version" => "false",
    "require" => "",
    "exclude_tests" => "false",
    "exclude_fixtures" => "false",
    "exclude_factories" => "false",
    "exclude_serializers" => "false",
    "exclude_scaffolds" => "true",
    "exclude_controllers" => "true",
    "exclude_helpers" => "true",
    "exclude_sti_subclasses" => "false",
    "ignore_model_sub_dir" => "false",
    "ignore_columns" => nil,
    "ignore_routes" => nil,
    "ignore_unknown_models" => "false",
    "hide_limit_column_types" => "integer,bigint,boolean",
    "hide_default_column_types" => "json,jsonb,hstore",
    "skip_on_db_migrate" => "false",
    "format_bare" => "true",
    "format_rdoc" => "false",
    "format_markdown" => "false",
    "sort" => "false",
    "force" => "false",
    "frozen" => "false",
    "classified_sort" => "true",
    "trace" => "false",
    "wrapper_open" => nil,
    "wrapper_close" => nil,
    "with_comment" => "true",
  )
end

Annotate.load_tasks

end

namespace :db do

desc "Truncate all existing data. Provided by the fixings gem"
task :truncate => "db:load_config" do
  ActiveRecord::Base.establish_connection
  ActiveRecord::Base.connection.tables.each do |table|
    next if table == "schema_migrations"
    ActiveRecord::Base.connection.execute("TRUNCATE #{table} CASCADE")
  end
end

end

# frozen_string_literal: true require “English” require “optparse”

namespace :job do

desc "Run a Que job inline. Used by other infrastructure components. Provided by the fixings gem"
task :run_inline => :environment do
  options = { args: [] }

  optparse = OptionParser.new do |opts|
    opts.on("-j", "--job-class ARG", "what job class to execute") do |klass|
      options[:job_class] = klass.constantize
    end

    opts.on("-a", "--args ARG", "JSON serialized array of arguments to pass to class") do |args|
      options[:args] = JSON.parse(args)
    end

    opts.on("-h", "--help", "Display this screen") do
      puts opts
      exit
    end
  end

  begin
    args = optparse.order!(ARGV) { }
    optparse.parse!(args)

    mandatory = [:job_class]
    missing = mandatory.select { |param| options[param].nil? }
    if !missing.empty?
      puts "Missing options: #{missing.join(", ")}"
      puts optparse
      exit
    end
  rescue OptionParser::InvalidOption, OptionParser::MissingArgument
    puts $ERROR_INFO.to_s
    puts optparse
    exit
  end

  Rails.logger.info "Running job inline", job_class: options[:job_class], args: options[:args]
  options[:job_class].run(*options[:args])
  true
end

end