license_finder 4.0.1 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/features/features/cli/cli_spec.rb +7 -0
- data/features/features/package_managers/glide_spec.rb +18 -6
- data/features/fixtures/gopath_glide_without_src/glide.lock +9 -0
- data/features/fixtures/gopath_glide_without_src/glide.yaml +6 -0
- data/features/support/testing_dsl.rb +22 -0
- data/lib/license_finder/cli/main.rb +19 -9
- data/lib/license_finder/core.rb +4 -0
- data/lib/license_finder/license_aggregator.rb +30 -7
- data/lib/license_finder/package_manager.rb +4 -0
- data/lib/license_finder/package_managers/bundler.rb +4 -0
- data/lib/license_finder/package_managers/glide.rb +11 -2
- data/lib/license_finder/package_managers/merged_package.rb +29 -4
- data/lib/license_finder/version.rb +1 -1
- data/license_finder.gemspec +2 -1
- metadata +14 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7666cca63edcbd5d26d92de0d0079eb6baba6f04
|
4
|
+
data.tar.gz: bd234f6e53146db0c10bb5aedec7bf2ab9666af0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6632cd374b76addc79e2c094aaf2210ec8185319633ca15594eb5217cc29eb954b66e5a21ea081c28a171a6df3aea48f12d58f8a2759f4ac5c87e987121f332e
|
7
|
+
data.tar.gz: ff1d7062e96965b57f17260398faa2baa0fd4caffccec01b0d483ece2690e963c75779b3b6561b7b216ca9d4be42a51f1f830b2cfef57e6ebd7a091bd58c2895
|
@@ -53,4 +53,11 @@ describe 'License Finder command line executable' do
|
|
53
53
|
developer.run_license_finder('gopath_dep/src/foo-dep')
|
54
54
|
expect(developer).to be_seeing_something_like %r{ERROR: .*my_app/gopath_dep/src/foo-dep/vendor/a/b/LICENSE does not exists}
|
55
55
|
end
|
56
|
+
|
57
|
+
specify 'displays a warning if no package managers are active/installed', :focus do
|
58
|
+
developer.create_empty_project
|
59
|
+
developer.execute_command('license_finder')
|
60
|
+
expect(developer).to be_seeing('No active and installed package managers found for project.')
|
61
|
+
expect(developer).to be_receiving_exit_code(0)
|
62
|
+
end
|
56
63
|
end
|
@@ -3,12 +3,24 @@ require_relative '../../support/feature_helper'
|
|
3
3
|
describe 'Glide Dependencies' do
|
4
4
|
let(:go_developer) { LicenseFinder::TestingDSL::User.new }
|
5
5
|
|
6
|
-
|
7
|
-
project
|
8
|
-
|
6
|
+
context 'when project is in src directory' do
|
7
|
+
specify 'are shown in reports for a project' do
|
8
|
+
project = LicenseFinder::TestingDSL::GlideProject.create
|
9
|
+
ENV['GOPATH'] = "#{project.project_dir}/gopath_glide"
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
go_developer.run_license_finder('gopath_glide')
|
12
|
+
expect(go_developer).to be_seeing_line 'github.com/Masterminds/semver, 517734cc7d6470c0d07130e40fd40bdeb9bcd3fd, MIT'
|
13
|
+
expect(go_developer).to be_seeing_line 'github.com/Masterminds/cookoo, 78aa11ce75e257c51be7ea945edb84cf19c4a6de, MIT'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'when projecy is not in src directory' do
|
18
|
+
specify 'are shown in reports for a project' do
|
19
|
+
LicenseFinder::TestingDSL::GlideProjectWithoutSrc.create
|
20
|
+
|
21
|
+
go_developer.run_license_finder('gopath_glide_without_src')
|
22
|
+
expect(go_developer).to be_seeing_line 'github.com/Masterminds/semver, 517734cc7d6470c0d07130e40fd40bdeb9bcd3fd, MIT'
|
23
|
+
expect(go_developer).to be_seeing_line 'github.com/Masterminds/cookoo, 78aa11ce75e257c51be7ea945edb84cf19c4a6de, MIT'
|
24
|
+
end
|
13
25
|
end
|
14
26
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
hash: 4765849129e9fbb9f7ebc620df51f27b6999f1a06bba4ecf92193ffffcf1d684
|
2
|
+
updated: 2017-09-27T22:42:02.817609367Z
|
3
|
+
imports:
|
4
|
+
- name: github.com/Masterminds/cookoo
|
5
|
+
version: 78aa11ce75e257c51be7ea945edb84cf19c4a6de
|
6
|
+
repo: https://github.com/Masterminds/cookoo.git
|
7
|
+
- name: github.com/Masterminds/semver
|
8
|
+
version: 517734cc7d6470c0d07130e40fd40bdeb9bcd3fd
|
9
|
+
testImports: []
|
@@ -215,6 +215,28 @@ module LicenseFinder
|
|
215
215
|
end
|
216
216
|
end
|
217
217
|
|
218
|
+
class GlideProjectWithoutSrc < Project
|
219
|
+
def add_dep
|
220
|
+
clone('gopath_glide_without_src')
|
221
|
+
end
|
222
|
+
|
223
|
+
def install
|
224
|
+
src_path = File.join(project_dir, 'gopath_glide_without_src', 'src')
|
225
|
+
FileUtils.mkdir_p(src_path)
|
226
|
+
|
227
|
+
orig_gopath = ENV['GOPATH']
|
228
|
+
ENV['GOPATH'] = "#{project_dir}/gopath_glide_without_src"
|
229
|
+
shell_out('glide install')
|
230
|
+
ENV['GOPATH'] = orig_gopath
|
231
|
+
|
232
|
+
FileUtils.rmdir(src_path)
|
233
|
+
end
|
234
|
+
|
235
|
+
def shell_out(command)
|
236
|
+
ProjectDir.new(Paths.root.join('tmp', 'projects', 'my_app', 'gopath_glide_without_src')).shell_out(command)
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
218
240
|
class GvtProject < Project
|
219
241
|
def add_dep
|
220
242
|
clone('gopath_gvt')
|
@@ -47,16 +47,23 @@ module LicenseFinder
|
|
47
47
|
desc: 'Prepares the project first for license_finder',
|
48
48
|
default: false,
|
49
49
|
required: false
|
50
|
+
|
51
|
+
method_option :recursive, aliases: '-r', type: :boolean, default: false,
|
52
|
+
desc: 'Recursively runs License Finder on all sub-projects'
|
53
|
+
|
54
|
+
method_option :aggregate_paths, aliases: '-a', type: :array,
|
55
|
+
desc: "Generate a single report for multiple projects. Ex: --aggregate_paths='path/to/project1' 'path/to/project2'"
|
56
|
+
|
57
|
+
method_option :quiet, aliases: '-q', type: :boolean, desc: 'Silences progress report', required: false
|
50
58
|
end
|
51
59
|
|
52
60
|
desc 'action_items', 'List unapproved dependencies (the default action for `license_finder`)'
|
53
|
-
method_option :quiet, aliases: '-q', type: :boolean, desc: 'Silences progress report', required: false
|
54
61
|
shared_options
|
55
62
|
def action_items
|
56
|
-
|
57
|
-
any_packages =
|
58
|
-
unapproved =
|
59
|
-
blacklisted =
|
63
|
+
finder = LicenseAggregator.new(license_finder_config, aggregate_paths)
|
64
|
+
any_packages = finder.any_packages?
|
65
|
+
unapproved = finder.unapproved
|
66
|
+
blacklisted = finder.blacklisted
|
60
67
|
|
61
68
|
# Ensure to start output on a new line even with dot progress indicators.
|
62
69
|
say "\n"
|
@@ -88,11 +95,7 @@ module LicenseFinder
|
|
88
95
|
|
89
96
|
desc 'report', "Print a report of the project's dependencies to stdout"
|
90
97
|
shared_options
|
91
|
-
method_option :recursive, aliases: '-r', type: :boolean, default: false,
|
92
|
-
desc: 'Recursively runs License Finder on all sub-projects'
|
93
98
|
|
94
|
-
method_option :aggregate_paths, aliases: '-a', type: :array,
|
95
|
-
desc: "Generate a single report for multiple projects. Ex: --aggregate_paths='path/to/project1' 'path/to/project2'"
|
96
99
|
def report
|
97
100
|
logger_config[:mode] = Logger::MODE_QUIET
|
98
101
|
aggregate_paths = options[:aggregate_paths]
|
@@ -132,6 +135,13 @@ module LicenseFinder
|
|
132
135
|
|
133
136
|
private
|
134
137
|
|
138
|
+
def aggregate_paths
|
139
|
+
aggregate_paths = options[:aggregate_paths]
|
140
|
+
aggregate_paths = ProjectFinder.new(license_finder.config.project_path).find_projects if options[:recursive]
|
141
|
+
return aggregate_paths unless aggregate_paths.nil? || aggregate_paths.empty?
|
142
|
+
[license_finder_config[:project_path]] unless license_finder_config[:project_path].nil?
|
143
|
+
end
|
144
|
+
|
135
145
|
def save_report(content, file_name)
|
136
146
|
File.open(file_name, 'w') do |f|
|
137
147
|
f.write(content)
|
data/lib/license_finder/core.rb
CHANGED
@@ -7,19 +7,42 @@ module LicenseFinder
|
|
7
7
|
|
8
8
|
def dependencies
|
9
9
|
aggregate_packages
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
end
|
11
|
+
|
12
|
+
def any_packages?
|
13
|
+
finders.map(&:any_packages?).reduce(:|)
|
14
|
+
end
|
15
|
+
|
16
|
+
def unapproved
|
17
|
+
aggregate_packages.reject(&:approved?)
|
18
|
+
end
|
19
|
+
|
20
|
+
def blacklisted
|
21
|
+
aggregate_packages.select(&:blacklisted?)
|
14
22
|
end
|
15
23
|
|
16
24
|
private
|
17
25
|
|
26
|
+
def finders
|
27
|
+
return @finders unless @finders.nil?
|
28
|
+
@finders = if @aggregate_paths.nil?
|
29
|
+
[LicenseFinder::Core.new(@license_finder_config)]
|
30
|
+
else
|
31
|
+
@aggregate_paths.map do |path|
|
32
|
+
LicenseFinder::Core.new(@license_finder_config.merge(project_path: path))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
18
37
|
def aggregate_packages
|
19
|
-
@
|
20
|
-
|
38
|
+
return @packages unless @packages.nil?
|
39
|
+
all_packages = finders.flat_map do |finder|
|
21
40
|
finder.prepare_projects if @license_finder_config[:prepare]
|
22
|
-
finder.acknowledged.map { |dep| MergedPackage.new(dep, [project_path]) }
|
41
|
+
finder.acknowledged.map { |dep| MergedPackage.new(dep, [finder.project_path]) }
|
42
|
+
end
|
43
|
+
@packages = all_packages.group_by { |package| [package.name, package.version] }
|
44
|
+
.map do |_, packages|
|
45
|
+
MergedPackage.new(packages[0].dependency, packages.flat_map(&:aggregate_paths))
|
23
46
|
end
|
24
47
|
end
|
25
48
|
end
|
@@ -42,6 +42,10 @@ module LicenseFinder
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
+
if active_pm_classes.empty?
|
46
|
+
logger.info 'License Finder', 'No active and installed package managers found for project.', color: :red
|
47
|
+
end
|
48
|
+
|
45
49
|
active_pm_classes -= active_pm_classes.map(&:takes_priority_over)
|
46
50
|
active_pm_classes.map { |pm_class| pm_class.new(options) }
|
47
51
|
end
|
@@ -5,11 +5,20 @@ module LicenseFinder
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def current_packages
|
8
|
-
|
8
|
+
detected_path = detected_package_path
|
9
|
+
|
10
|
+
YAML.load_file(detected_path).fetch('imports').map do |package_hash|
|
9
11
|
import_path = package_hash.fetch('name')
|
12
|
+
license_path =
|
13
|
+
if detected_path == possible_package_paths.first
|
14
|
+
project_path.join('src', 'vendor', import_path)
|
15
|
+
else
|
16
|
+
project_path.join('vendor', import_path)
|
17
|
+
end
|
18
|
+
|
10
19
|
GoPackage.from_dependency({
|
11
20
|
'ImportPath' => import_path,
|
12
|
-
'InstallPath' =>
|
21
|
+
'InstallPath' => license_path,
|
13
22
|
'Rev' => package_hash.fetch('version')
|
14
23
|
}, nil, true)
|
15
24
|
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
module LicenseFinder
|
2
|
-
class MergedPackage
|
2
|
+
class MergedPackage < Package
|
3
3
|
attr_reader :dependency
|
4
4
|
|
5
|
-
def initialize(
|
6
|
-
@dependency =
|
5
|
+
def initialize(package, aggregate_paths)
|
6
|
+
@dependency = package
|
7
7
|
@aggregate_paths = aggregate_paths.map { |p| Pathname(p) }
|
8
|
+
super(package.name, package.version)
|
8
9
|
end
|
9
10
|
|
10
11
|
def name
|
@@ -39,6 +40,22 @@ module LicenseFinder
|
|
39
40
|
dependency.description
|
40
41
|
end
|
41
42
|
|
43
|
+
def approved_manually?
|
44
|
+
dependency.approved_manually?
|
45
|
+
end
|
46
|
+
|
47
|
+
def approved?
|
48
|
+
dependency.approved?
|
49
|
+
end
|
50
|
+
|
51
|
+
def whitelisted?
|
52
|
+
dependency.whitelisted?
|
53
|
+
end
|
54
|
+
|
55
|
+
def blacklisted?
|
56
|
+
dependency.blacklisted?
|
57
|
+
end
|
58
|
+
|
42
59
|
def groups
|
43
60
|
dependency.groups
|
44
61
|
end
|
@@ -56,7 +73,15 @@ module LicenseFinder
|
|
56
73
|
end
|
57
74
|
|
58
75
|
def eql?(other)
|
59
|
-
|
76
|
+
if other.instance_of? MergedPackage
|
77
|
+
other.dependency.eql?(dependency)
|
78
|
+
else
|
79
|
+
dependency.eql?(other)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def ==(other)
|
84
|
+
dependency.eql?(other.dependency) && aggregate_paths.eql?(other.aggregate_paths)
|
60
85
|
end
|
61
86
|
|
62
87
|
def hash
|
data/license_finder.gemspec
CHANGED
@@ -42,8 +42,9 @@ Gem::Specification.new do |s|
|
|
42
42
|
s.add_dependency 'httparty'
|
43
43
|
s.add_dependency 'rubyzip'
|
44
44
|
s.add_dependency 'thor'
|
45
|
-
s.add_dependency 'xml-simple'
|
46
45
|
s.add_dependency 'toml', '0.1.2'
|
46
|
+
s.add_dependency 'xml-simple'
|
47
|
+
|
47
48
|
# to preserve ruby 1.9.3 support
|
48
49
|
s.add_dependency 'with_env', (RUBY_VERSION <= '1.9.3' ? '1.0.0' : '> 1.0')
|
49
50
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: license_finder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jacob Maine
|
@@ -20,7 +20,7 @@ authors:
|
|
20
20
|
autorequire:
|
21
21
|
bindir: bin
|
22
22
|
cert_chain: []
|
23
|
-
date: 2017-11-
|
23
|
+
date: 2017-11-16 00:00:00.000000000 Z
|
24
24
|
dependencies:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
@@ -79,33 +79,33 @@ dependencies:
|
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: '0'
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
|
-
name:
|
82
|
+
name: toml
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
84
84
|
requirements:
|
85
|
-
- -
|
85
|
+
- - '='
|
86
86
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
87
|
+
version: 0.1.2
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
90
|
version_requirements: !ruby/object:Gem::Requirement
|
91
91
|
requirements:
|
92
|
-
- -
|
92
|
+
- - '='
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version:
|
94
|
+
version: 0.1.2
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
96
|
+
name: xml-simple
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
|
-
- -
|
99
|
+
- - ">="
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: 0
|
101
|
+
version: '0'
|
102
102
|
type: :runtime
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
requirements:
|
106
|
-
- -
|
106
|
+
- - ">="
|
107
107
|
- !ruby/object:Gem::Version
|
108
|
-
version: 0
|
108
|
+
version: '0'
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
110
|
name: with_env
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
@@ -366,6 +366,8 @@ files:
|
|
366
366
|
- features/fixtures/gopath_dep/src/foo-dep/vendor/a/b/LICENSE
|
367
367
|
- features/fixtures/gopath_glide/src/glide.lock
|
368
368
|
- features/fixtures/gopath_glide/src/glide.yaml
|
369
|
+
- features/fixtures/gopath_glide_without_src/glide.lock
|
370
|
+
- features/fixtures/gopath_glide_without_src/glide.yaml
|
369
371
|
- features/fixtures/gopath_govendor/src/vendor/vendor.json
|
370
372
|
- features/fixtures/gopath_gvt/src/vendor/manifest
|
371
373
|
- features/fixtures/gradle-wrapper/build.gradle
|