Class: LicenseFinder::Gradle

Inherits:
PackageManager show all
Defined in:
lib/license_finder/package_managers/gradle.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from PackageManager

#active?, #capture, command_exists?, current_packages, #current_packages_with_relations, installed?, package_managers

Constructor Details

#initialize(options = {}) ⇒ Gradle

Returns a new instance of Gradle.



6
7
8
9
10
# File 'lib/license_finder/package_managers/gradle.rb', line 6

def initialize(options={})
  super
  @command = options[:gradle_command] || 'gradle --console plain'
  @include_groups = options[:gradle_include_groups]
end

Class Method Details

.package_management_commandObject



29
30
31
# File 'lib/license_finder/package_managers/gradle.rb', line 29

def self.package_management_command
  "gradle"
end

Instance Method Details

#current_packagesObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/license_finder/package_managers/gradle.rb', line 12

def current_packages
  command = "#{@command} downloadLicenses"
  output, success = Dir.chdir(project_path) { capture(command) }
  raise "Command '#{command}' failed to execute: #{output}" unless success

  dependencies = GradleDependencyFinder.new(project_path).dependencies
  packages = dependencies.flat_map do |xml_file|
    options = {'GroupTags' => {'dependencies' => 'dependency'}}
    contents = XmlSimple.xml_in(xml_file, options).fetch('dependency', [])
    contents.map do |dep|
      GradlePackage.new(dep, logger: logger, include_groups: @include_groups)
    end
  end

  packages.uniq
end