class Rfix::CLI::Command::Base

Private Instance Methods

define(reference, args: Undefined, **params) click to toggle source
# File lib/rfix/cli/command/base.rb, line 29
def define(reference, args: Undefined, **params)
  handler = Rfix::Repository.new(
    current_path: Pathname.pwd.relative_path_from(reference.repository.workdir),
    repository: reference.repository,
    reference: reference
  )

  RuboCop::CommentConfig.class_eval do
    concerning :Repository do
      define_method(:repository, &handler.method(:itself))
    end
  end

  paths = handler.paths

  variadic_args = Undefined.default(args, EMPTY_ARRAY)
  RuboCop::Options.new.parse(variadic_args).then do |user_defined_options, user_defined_paths|
    params.merge!(user_defined_options)

    unless user_defined_paths.empty?
      paths.replace(user_defined_paths)
    end
  end

  config = RuboCop::ConfigStore.new.tap do |config_store|
    RuboCop::ConfigLoader.configuration_file_for(handler.workdir).then do |loader|
      config_store.options_config = loader
    rescue RuboCop::Cop::AmbiguousCopName => e
      abort e.message
    end
  end

  if params[:no_cache]
    RuboCop::ResultCache.cleanup(config, true)
    XDG::Config.new.home.then do |cache_path|
      cache_path.rmtree if cache_path.exist?
    end
  end

  params.merge!(repository: handler)

  env = RuboCop::CLI::Environment.new(params, config, paths)
  RuboCop::CLI::Command::ExecuteRunner.new(env).run
end