Sha256: b0f9f195f4f3f67948b91857eff3ffde818846235d78025d9869d43f8d8570d3
Contents?: true
Size: 1.66 KB
Versions: 5
Compression:
Stored size: 1.66 KB
Contents
# frozen_string_literal: true require 'set' require_relative 'config' require 'fast_ignore' module Leftovers class MergedConfig def initialize @configs = [] @loaded_configs = Set.new self.<< Leftovers::Config.new(:ruby) self.<< project_config load_bundled_gem_config end def <<(config) return if @loaded_configs.include?(config.name) unmemoize @configs << config @loaded_configs << config.name config.gems.each { |gem| self.<< Leftovers::Config.new(gem) } end def project_config Leftovers::Config.new(:'.leftovers.yml', path: Leftovers.pwd + '.leftovers.yml') end 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(:@rules) if defined?(@rules) end def exclude_paths @exclude_paths ||= @configs.flat_map(&:exclude_paths) end def include_paths @include_paths ||= @configs.flat_map(&:include_paths) end def test_paths @test_paths ||= FastIgnore.new( include_rules: @configs.flat_map(&:test_paths), gitignore: false ) end def skip_rules @skip_rules ||= rules.select(&:skip?) end def rules @rules ||= @configs.flat_map(&:rules) end private def load_bundled_gem_config Leftovers.try_require('bundler') return unless defined?(Bundler) Bundler.locked_gems.specs.each do |spec| self.<< Leftovers::Config.new(spec.name.to_sym) end end end end
Version data entries
5 entries across 5 versions & 1 rubygems