lib/license_finder/scanner.rb in license_finder-6.9.0 vs lib/license_finder/scanner.rb in license_finder-6.10.0

- old
+ new

@@ -10,10 +10,14 @@ class << self def remove_subprojects(paths) paths.reject { |path| subproject?(Pathname(path)) } end + def supported_package_manager_ids + PACKAGE_MANAGERS.map(&:id) + end + private def subproject?(path) subproject = true PACKAGE_MANAGERS.each do |package_manager_class| @@ -26,10 +30,11 @@ def initialize(config = { project_path: Pathname.new('') }) @config = config @project_path = @config[:project_path] @logger = @config[:logger] + @enabled_package_manager_ids = @config[:enabled_package_manager_ids] end def active_packages package_managers = active_package_managers installed_package_managers = package_managers.select { |pm| pm.installed?(@logger) } @@ -38,11 +43,11 @@ def active_package_managers return @package_managers if @package_managers active_pm_classes = [] - PACKAGE_MANAGERS.each do |pm_class| + enabled_package_managers.each do |pm_class| active = pm_class.new(@config).active? if active @logger.info pm_class, 'is active', color: :green active_pm_classes << pm_class @@ -53,8 +58,25 @@ @logger.info 'License Finder', 'No active and installed package managers found for project.', color: :red if active_pm_classes.empty? active_pm_classes -= active_pm_classes.map(&:takes_priority_over) @package_managers = active_pm_classes.map { |pm_class| pm_class.new(@config) } + end + + private + + def enabled_package_managers + enabled_pm_ids = @enabled_package_manager_ids + + return PACKAGE_MANAGERS unless enabled_pm_ids + + enabled_pm_classes = PACKAGE_MANAGERS.select { |pm_class| enabled_pm_ids.include?(pm_class.id) } + + if enabled_pm_classes.length != enabled_pm_ids.length + unsupported_pm_ids = enabled_pm_ids - self.class.supported_package_manager_ids + raise "Unsupported package manager: #{unsupported_pm_ids.join(', ')}" + end + + enabled_pm_classes end end end