class Leftovers::MergedConfig

Public Class Methods

new(load_defaults: false) click to toggle source
# File lib/leftovers/merged_config.rb, line 8
def initialize(load_defaults: false)
  @configs = []
  @loaded_configs = Set.new
  return unless load_defaults

  self << :ruby
  self << project_config
  self << project_todo
  load_bundled_gem_config
end

Public Instance Methods

<<(config) click to toggle source
# File lib/leftovers/merged_config.rb, line 19
def <<(config)
  config = Leftovers::Config.new(config) unless config.is_a?(Leftovers::Config)
  return if @loaded_configs.include?(config.name)

  unmemoize
  @configs << config
  @loaded_configs << config.name
  config.gems.each { |gem| self << gem }
  config.requires.each do |req|
    Leftovers.try_require(req, message: "cannot require '#{req}' from #{config.name}.yml")
  end
end
dynamic() click to toggle source
# File lib/leftovers/merged_config.rb, line 64
def dynamic
  @dynamic ||= ::Leftovers::ProcessorBuilders::EachDynamic.build(@configs.map(&:dynamic))
end
exclude_paths() click to toggle source
# File lib/leftovers/merged_config.rb, line 48
def exclude_paths
  @exclude_paths ||= @configs.flat_map(&:exclude_paths)
end
include_paths() click to toggle source
# File lib/leftovers/merged_config.rb, line 52
def include_paths
  @include_paths ||= @configs.flat_map(&:include_paths)
end
keep() click to toggle source
# File lib/leftovers/merged_config.rb, line 68
def keep
  @keep ||= ::Leftovers::MatcherBuilders::Or.build(@configs.map(&:keep))
end
project_config() click to toggle source
# File lib/leftovers/merged_config.rb, line 32
def project_config
  Leftovers::Config.new(:'.leftovers.yml', path: Leftovers.pwd + '.leftovers.yml')
end
project_todo() click to toggle source
# File lib/leftovers/merged_config.rb, line 36
def project_todo
  Leftovers::Config.new(:'.leftovers_todo.yml', path: Leftovers.pwd + '.leftovers_todo.yml')
end
test_only() click to toggle source
# File lib/leftovers/merged_config.rb, line 72
def test_only
  @test_only ||= ::Leftovers::MatcherBuilders::Or.build(@configs.map(&:test_only))
end
test_paths() click to toggle source
# File lib/leftovers/merged_config.rb, line 56
def test_paths
  @test_paths ||= FastIgnore.new(
    include_rules: @configs.flat_map(&:test_paths),
    gitignore: false,
    root: Leftovers.pwd
  )
end
unmemoize() click to toggle source
# File lib/leftovers/merged_config.rb, line 40
def unmemoize
  remove_instance_variable(:@exclude_paths) if defined?(@exclude_paths)
  remove_instance_variable(:@include_paths) if defined?(@include_paths)
  remove_instance_variable(:@test_paths) if defined?(@test_paths)
  remove_instance_variable(:@dynamic) if defined?(@dynamic)
  remove_instance_variable(:@keep) if defined?(@keep)
end

Private Instance Methods

load_bundled_gem_config() click to toggle source
# File lib/leftovers/merged_config.rb, line 78
def load_bundled_gem_config
  return unless Leftovers.try_require('bundler')

  Bundler.locked_gems.specs.each do |spec|
    self << spec.name
  end
end