Class: LicenseFinder::Composer
Constant Summary
collapse
- SHELL_COMMAND =
'composer licenses --format=json'
Instance Method Summary
collapse
#active?, #command_exists?, #current_packages_with_relations, #detected_package_path, #initialize, #installed?, #project_root?, takes_priority_over
Instance Method Details
#composer_json ⇒ Object
52
53
54
55
56
57
|
# File 'lib/license_finder/package_managers/composer.rb', line 52
def composer_json
stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(Composer::SHELL_COMMAND) }
raise "Command '#{Composer::SHELL_COMMAND}' failed to execute: #{stderr}" unless status.success?
JSON(stdout)
end
|
#current_packages ⇒ Object
13
14
15
16
17
18
19
20
21
|
# File 'lib/license_finder/package_managers/composer.rb', line 13
def current_packages
dependency_list.map do |name, dependency|
path_command = "composer show #{name} -P"
stdout, _stderr, status = Dir.chdir(project_path) { Cmd.run(path_command) }
path = status.success? ? stdout.split(' ').last : ''
ComposerPackage.new(name, dependency['version'], spec_licenses: dependency['license'], install_path: path)
end
end
|
#dependency_list ⇒ Object
47
48
49
50
|
# File 'lib/license_finder/package_managers/composer.rb', line 47
def dependency_list
json ||= composer_json
json.fetch('dependencies', {}).reject { |_, d| d.is_a?(String) }
end
|
#lockfile_path ⇒ Object
43
44
45
|
# File 'lib/license_finder/package_managers/composer.rb', line 43
def lockfile_path
project_path.join('composer.lock')
end
|
#package_management_command ⇒ Object
31
32
33
|
# File 'lib/license_finder/package_managers/composer.rb', line 31
def package_management_command
'composer'
end
|
#package_path ⇒ Object
39
40
41
|
# File 'lib/license_finder/package_managers/composer.rb', line 39
def package_path
project_path.join('composer.json')
end
|
#possible_package_paths ⇒ Object
9
10
11
|
# File 'lib/license_finder/package_managers/composer.rb', line 9
def possible_package_paths
[project_path.join('composer.lock'), project_path.join('composer.json')]
end
|
#prepare ⇒ Object
23
24
25
26
27
28
29
|
# File 'lib/license_finder/package_managers/composer.rb', line 23
def prepare
_stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(prepare_command) }
return if status.success?
log_errors stderr
raise "Prepare command '#{Composer.prepare_command}' failed" unless @prepare_no_fail
end
|
#prepare_command ⇒ Object
35
36
37
|
# File 'lib/license_finder/package_managers/composer.rb', line 35
def prepare_command
'composer install --no-plugins --ignore-platform-reqs --no-interaction'
end
|