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