Class: LicenseFinder::Scanner

Inherits:
Object
  • Object
show all
Defined in:
lib/license_finder/scanner.rb

Constant Summary collapse

PACKAGE_MANAGERS =
[
  GoModules, GoDep, GoWorkspace, Go15VendorExperiment, Glide, Gvt, Govendor, Trash, Dep, Bundler, NPM, Pip,
  Yarn, Bower, Maven, Gradle, CocoaPods, Rebar, Nuget, Carthage, Mix, Conan, Sbt, Cargo, Dotnet, Composer, Pipenv
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config = { project_path: Pathname.new('') }) ⇒ Scanner

Returns a new instance of Scanner.



27
28
29
30
31
# File 'lib/license_finder/scanner.rb', line 27

def initialize(config = { project_path: Pathname.new('') })
  @config = config
  @project_path = @config[:project_path]
  @logger = @config[:logger]
end

Class Method Details

.remove_subprojects(paths) ⇒ Object



11
12
13
# File 'lib/license_finder/scanner.rb', line 11

def remove_subprojects(paths)
  paths.reject { |path| subproject?(Pathname(path)) }
end

Instance Method Details

#active_package_managersObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/license_finder/scanner.rb', line 39

def active_package_managers
  return @package_managers if @package_managers

  active_pm_classes = []
  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
    else
      @logger.debug pm_class, 'is not active', color: :red
    end
  end

  @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

#active_packagesObject



33
34
35
36
37
# File 'lib/license_finder/scanner.rb', line 33

def active_packages
  package_managers = active_package_managers
  installed_package_managers = package_managers.select { |pm| pm.class.installed?(@logger) }
  installed_package_managers.flat_map(&:current_packages_with_relations)
end