license_finder 1.0.0.0-java → 1.1.1-java
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/.force-build +0 -0
- data/.travis.yml +8 -7
- data/CHANGELOG.rdoc +29 -1
- data/Rakefile +2 -2
- data/db/migrate/201311192003_reassociate_manual_approval.rb +2 -3
- data/db/migrate/201403181732_rename_manual_fields.rb +10 -0
- data/db/migrate/201403190028_add_manual_approvals.rb +22 -0
- data/db/migrate/201403191419_add_timestamps_to_manual_approvals.rb +15 -0
- data/db/migrate/201403191645_remove_license_aliases.rb +23 -0
- data/features/cli.feature +21 -20
- data/features/cocoapods_dependencies.feature +10 -0
- data/features/configure_bundler_groups.feature +23 -0
- data/features/configure_ignore_dependencies.feature +16 -0
- data/features/{project_name.feature → configure_project_name.feature} +1 -1
- data/features/{whitelist.feature → configure_whitelist.feature} +6 -6
- data/features/manually_added.feature +19 -0
- data/features/{approve_dependencies.feature → manually_approved.feature} +2 -2
- data/features/manually_assigned_license.feature +16 -0
- data/features/{text_report.feature → report_csv.feature} +2 -2
- data/features/{html_report.feature → report_html.feature} +2 -2
- data/features/step_definitions/cli_steps.rb +22 -32
- data/features/step_definitions/cocoapod_steps.rb +8 -0
- data/features/step_definitions/configure_bundler_groups_steps.rb +30 -0
- data/features/step_definitions/configure_ignore_dependencies.rb +35 -0
- data/features/step_definitions/{project_name_steps.rb → configure_project_name_steps.rb} +0 -0
- data/features/step_definitions/configure_whitelist_steps.rb +45 -0
- data/features/step_definitions/gradle_steps.rb +2 -2
- data/features/step_definitions/manually_added_steps.rb +28 -0
- data/features/step_definitions/manually_approved_steps.rb +24 -0
- data/features/step_definitions/manually_assigned_license_steps.rb +34 -0
- data/features/step_definitions/maven_steps.rb +2 -2
- data/features/step_definitions/node_steps.rb +2 -2
- data/features/step_definitions/python_steps.rb +1 -1
- data/features/step_definitions/report_csv_steps.rb +20 -0
- data/features/step_definitions/report_html_steps.rb +60 -0
- data/features/step_definitions/shared_steps.rb +125 -104
- data/{files/license_finder.yml → lib/data/license_finder.example.yml} +3 -0
- data/lib/license_finder.rb +3 -2
- data/lib/license_finder/cli.rb +94 -49
- data/lib/license_finder/configuration.rb +21 -14
- data/lib/license_finder/dependency_manager.rb +27 -19
- data/lib/license_finder/license.rb +33 -19
- data/lib/license_finder/license/definitions.rb +153 -104
- data/lib/license_finder/license/matcher.rb +6 -1
- data/lib/license_finder/license/none_matcher.rb +9 -0
- data/lib/license_finder/license/text.rb +1 -0
- data/lib/license_finder/package.rb +30 -6
- data/lib/license_finder/package_managers/bower.rb +2 -2
- data/lib/license_finder/package_managers/bower_package.rb +2 -2
- data/lib/license_finder/package_managers/bundler.rb +9 -17
- data/lib/license_finder/package_managers/bundler_package.rb +1 -1
- data/lib/license_finder/package_managers/cocoa_pods.rb +35 -0
- data/lib/license_finder/package_managers/cocoa_pods_package.rb +19 -0
- data/lib/license_finder/package_managers/gradle.rb +9 -5
- data/lib/license_finder/package_managers/gradle_package.rb +4 -4
- data/lib/license_finder/package_managers/maven.rb +7 -3
- data/lib/license_finder/package_managers/maven_package.rb +5 -5
- data/lib/license_finder/package_managers/npm.rb +2 -2
- data/lib/license_finder/package_managers/npm_package.rb +2 -2
- data/lib/license_finder/package_managers/pip.rb +2 -2
- data/lib/license_finder/package_managers/pip_package.rb +7 -11
- data/lib/license_finder/package_saver.rb +12 -10
- data/lib/license_finder/possible_license_file.rb +1 -1
- data/lib/license_finder/possible_license_files.rb +11 -15
- data/lib/license_finder/reports/formatted_report.rb +25 -6
- data/lib/license_finder/reports/html_report.rb +2 -1
- data/lib/license_finder/reports/reporter.rb +3 -3
- data/lib/license_finder/tables.rb +6 -4
- data/lib/license_finder/tables/dependency.rb +36 -16
- data/lib/license_finder/tables/manual_approval.rb +13 -0
- data/lib/license_finder/yml_to_sql.rb +12 -9
- data/lib/templates/html_report.erb +68 -74
- data/lib/templates/markdown_report.erb +20 -21
- data/license_finder.gemspec +7 -7
- data/readme.md +76 -79
- data/spec/fixtures/Podfile +3 -0
- data/spec/lib/license_finder/cli_spec.rb +71 -23
- data/spec/lib/license_finder/configuration_spec.rb +61 -21
- data/spec/lib/license_finder/dependency_manager_spec.rb +52 -33
- data/spec/lib/license_finder/license/definitions_spec.rb +30 -14
- data/spec/lib/license_finder/license_spec.rb +55 -12
- data/spec/lib/license_finder/package_managers/bower_package_spec.rb +38 -19
- data/spec/lib/license_finder/package_managers/bower_spec.rb +10 -16
- data/spec/lib/license_finder/package_managers/bundler_package_spec.rb +39 -15
- data/spec/lib/license_finder/package_managers/bundler_spec.rb +10 -22
- data/spec/lib/license_finder/package_managers/cocoa_pods_package_spec.rb +44 -0
- data/spec/lib/license_finder/package_managers/cocoa_pods_spec.rb +79 -0
- data/spec/lib/license_finder/package_managers/gradle_package_spec.rb +4 -5
- data/spec/lib/license_finder/package_managers/gradle_spec.rb +26 -20
- data/spec/lib/license_finder/package_managers/maven_package_spec.rb +4 -5
- data/spec/lib/license_finder/package_managers/maven_spec.rb +16 -19
- data/spec/lib/license_finder/package_managers/npm_package_spec.rb +39 -19
- data/spec/lib/license_finder/package_managers/npm_spec.rb +10 -16
- data/spec/lib/license_finder/package_managers/pip_package_spec.rb +8 -8
- data/spec/lib/license_finder/package_managers/pip_spec.rb +10 -16
- data/spec/lib/license_finder/package_saver_spec.rb +27 -3
- data/spec/lib/license_finder/possible_license_file_spec.rb +25 -23
- data/spec/lib/license_finder/reports/detailed_text_report_spec.rb +6 -8
- data/spec/lib/license_finder/reports/html_report_spec.rb +45 -44
- data/spec/lib/license_finder/reports/markdown_report_spec.rb +8 -9
- data/spec/lib/license_finder/reports/reporter_spec.rb +1 -1
- data/spec/lib/license_finder/reports/text_report_spec.rb +6 -8
- data/spec/lib/license_finder/tables/dependency_spec.rb +57 -41
- data/spec/lib/license_finder/yml_to_sql_spec.rb +94 -92
- data/spec/spec_helper.rb +1 -0
- data/spec/support/stdout_helpers.rb +25 -0
- metadata +86 -69
- data/MIT.LICENSE +0 -20
- data/features/ignore_bundle_groups.feature +0 -23
- data/features/manually_managed_dependencies.feature +0 -19
- data/features/set_license.feature +0 -10
- data/features/step_definitions/approve_dependencies_steps.rb +0 -25
- data/features/step_definitions/html_report_steps.rb +0 -62
- data/features/step_definitions/ignore_bundle_groups_steps.rb +0 -29
- data/features/step_definitions/manually_managed_steps.rb +0 -33
- data/features/step_definitions/set_license_steps.rb +0 -20
- data/features/step_definitions/text_report_steps.rb +0 -19
- data/features/step_definitions/whitelist_steps.rb +0 -45
- data/files/dependency_breakdown.png +0 -0
- data/files/report_breakdown.png +0 -0
- data/lib/license_finder/license_url.rb +0 -9
- data/lib/license_finder/tables/license_alias.rb +0 -22
- data/spec/lib/license_finder/license_url_spec.rb +0 -16
- data/spec/lib/license_finder/tables/license_alias_spec.rb +0 -37
- data/spec/support/silence_stdout.rb +0 -13
|
@@ -1,106 +1,155 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
module LicenseFinder
|
|
2
|
+
class License
|
|
3
|
+
module Definitions
|
|
4
|
+
extend self
|
|
5
|
+
|
|
6
|
+
def all(whitelist)
|
|
7
|
+
[
|
|
8
|
+
apache2,
|
|
9
|
+
bsd,
|
|
10
|
+
gplv2,
|
|
11
|
+
isc,
|
|
12
|
+
lgpl,
|
|
13
|
+
mit,
|
|
14
|
+
newbsd,
|
|
15
|
+
python,
|
|
16
|
+
ruby,
|
|
17
|
+
simplifiedbsd
|
|
18
|
+
].map { |license|
|
|
19
|
+
whitelist_if_necessary(license, whitelist)
|
|
20
|
+
}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def build_unrecognized(name, whitelist)
|
|
24
|
+
result = License.new(
|
|
25
|
+
short_name: name,
|
|
26
|
+
url: nil,
|
|
27
|
+
matcher: NoneMatcher.new
|
|
28
|
+
)
|
|
29
|
+
whitelist_if_necessary(result, whitelist)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
|
|
34
|
+
def whitelist_if_necessary(license, whitelist)
|
|
35
|
+
whitelisted = whitelist.any? { |name| license.matches_name? name }
|
|
36
|
+
whitelisted ? license.whitelist : license
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def apache2
|
|
40
|
+
License.new(
|
|
41
|
+
short_name: "Apache2",
|
|
42
|
+
pretty_name: "Apache 2.0",
|
|
43
|
+
other_names: ["Apache-2.0", "Apache Software License", "Apache License 2.0", "Apache License Version 2.0", "Apache Public License 2.0"],
|
|
44
|
+
url: "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
|
45
|
+
)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def bsd
|
|
49
|
+
License.new(
|
|
50
|
+
short_name: "BSD",
|
|
51
|
+
other_names: ["BSD4", "bsd-old", "4-clause BSD", "BSD-4-Clause", "BSD License"],
|
|
52
|
+
url: "http://en.wikipedia.org/wiki/BSD_licenses#4-clause_license_.28original_.22BSD_License.22.29"
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def gplv2
|
|
57
|
+
License.new(
|
|
58
|
+
short_name: "GPLv2",
|
|
59
|
+
other_names: ["GPL V2", "gpl-v2", "GNU GENERAL PUBLIC LICENSE Version 2"],
|
|
60
|
+
url: "http://www.gnu.org/licenses/gpl-2.0.txt"
|
|
61
|
+
)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def isc
|
|
65
|
+
License.new(
|
|
66
|
+
short_name: "ISC",
|
|
67
|
+
url: "http://en.wikipedia.org/wiki/ISC_license"
|
|
68
|
+
)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def lgpl
|
|
72
|
+
License.new(
|
|
73
|
+
short_name: "LGPL",
|
|
74
|
+
other_names: ["LGPL-3", "LGPLv3", "LGPL-3.0"],
|
|
75
|
+
url: "http://www.gnu.org/licenses/lgpl.txt"
|
|
76
|
+
)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def mit
|
|
80
|
+
url_regexp = %r{MIT Licen[sc]e.*http://(?:www\.)?opensource\.org/licenses/mit-license}
|
|
81
|
+
header_regexp = /The MIT Licen[sc]e/
|
|
82
|
+
one_liner_regexp = /is released under the MIT licen[sc]e/
|
|
83
|
+
|
|
84
|
+
matcher = AnyMatcher.new(
|
|
85
|
+
Matcher.from_template(Template.named("MIT")),
|
|
86
|
+
Matcher.from_regex(url_regexp),
|
|
87
|
+
HeaderMatcher.new(Matcher.from_regex(header_regexp)),
|
|
88
|
+
Matcher.from_regex(one_liner_regexp)
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
License.new(
|
|
92
|
+
short_name: "MIT",
|
|
93
|
+
other_names: ["Expat", "MIT license", "MIT License"],
|
|
94
|
+
url: "http://opensource.org/licenses/mit-license",
|
|
95
|
+
matcher: matcher
|
|
96
|
+
)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def newbsd
|
|
100
|
+
template = Template.named("NewBSD")
|
|
101
|
+
alternate_content = template.content.gsub(
|
|
102
|
+
"Neither the name of <organization> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.",
|
|
103
|
+
"The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission."
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
matcher = AnyMatcher.new(
|
|
107
|
+
Matcher.from_template(template),
|
|
108
|
+
Matcher.from_text(alternate_content)
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
License.new(
|
|
112
|
+
short_name: "NewBSD",
|
|
113
|
+
pretty_name: "New BSD",
|
|
114
|
+
other_names: ["Modified BSD", "BSD3", "BSD-3", "3-clause BSD", "BSD-3-Clause"],
|
|
115
|
+
url: "http://opensource.org/licenses/BSD-3-Clause",
|
|
116
|
+
matcher: matcher
|
|
117
|
+
)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def python
|
|
121
|
+
License.new(
|
|
122
|
+
short_name: "Python",
|
|
123
|
+
pretty_name: "Python Software Foundation License",
|
|
124
|
+
other_names: ["PSF"],
|
|
125
|
+
url: "http://hg.python.org/cpython/raw-file/89ce323357db/LICENSE"
|
|
126
|
+
)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def ruby
|
|
130
|
+
url = "http://www.ruby-lang.org/en/LICENSE.txt"
|
|
131
|
+
|
|
132
|
+
matcher = AnyMatcher.new(
|
|
133
|
+
Matcher.from_template(Template.named("Ruby")),
|
|
134
|
+
Matcher.from_text(url)
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
License.new(
|
|
138
|
+
short_name: "Ruby",
|
|
139
|
+
pretty_name: "ruby",
|
|
140
|
+
url: url,
|
|
141
|
+
matcher: matcher
|
|
142
|
+
)
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def simplifiedbsd
|
|
146
|
+
License.new(
|
|
147
|
+
short_name: "SimplifiedBSD",
|
|
148
|
+
pretty_name: "Simplified BSD",
|
|
149
|
+
other_names: ["FreeBSD", "2-clause BSD", "BSD-2-Clause"],
|
|
150
|
+
url: "http://opensource.org/licenses/bsd-license"
|
|
151
|
+
)
|
|
152
|
+
end
|
|
153
|
+
end
|
|
13
154
|
end
|
|
14
|
-
|
|
15
|
-
def self.new_bsd_matcher
|
|
16
|
-
template = Template.named("NewBSD")
|
|
17
|
-
alternate_content = template.content.gsub(
|
|
18
|
-
"Neither the name of <organization> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.",
|
|
19
|
-
"The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission."
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
AnyMatcher.new(
|
|
23
|
-
Matcher.from_template(template),
|
|
24
|
-
Matcher.from_text(alternate_content)
|
|
25
|
-
)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def self.ruby_license_url
|
|
29
|
-
"http://www.ruby-lang.org/en/LICENSE.txt"
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def self.ruby_matcher
|
|
33
|
-
url_regex = Regexp.new(Regexp.escape(ruby_license_url))
|
|
34
|
-
|
|
35
|
-
AnyMatcher.new(
|
|
36
|
-
Matcher.from_template(Template.named("Ruby")),
|
|
37
|
-
Matcher.new(url_regex)
|
|
38
|
-
)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
all << new(
|
|
42
|
-
short_name: "Apache2",
|
|
43
|
-
pretty_name: "Apache 2.0",
|
|
44
|
-
other_names: ["Apache-2.0", "Apache Software License", "Apache License 2.0", "Apache License Version 2.0", "Apache Public License 2.0"],
|
|
45
|
-
url: "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
|
46
|
-
)
|
|
47
|
-
|
|
48
|
-
all << new(
|
|
49
|
-
short_name: "BSD",
|
|
50
|
-
other_names: ["BSD4", "bsd-old", "4-clause BSD", "BSD-4-Clause", "BSD License"],
|
|
51
|
-
url: "http://en.wikipedia.org/wiki/BSD_licenses#4-clause_license_.28original_.22BSD_License.22.29"
|
|
52
|
-
)
|
|
53
|
-
|
|
54
|
-
all << new(
|
|
55
|
-
short_name: "GPLv2",
|
|
56
|
-
other_names: ["GPL V2", "gpl-v2", "GNU GENERAL PUBLIC LICENSE Version 2"],
|
|
57
|
-
url: "http://www.gnu.org/licenses/gpl-2.0.txt"
|
|
58
|
-
)
|
|
59
|
-
|
|
60
|
-
all << new(
|
|
61
|
-
short_name: "ISC",
|
|
62
|
-
url: "http://en.wikipedia.org/wiki/ISC_license"
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
all << new(
|
|
66
|
-
short_name: "LGPL",
|
|
67
|
-
other_names: ["LGPL-3", "LGPLv3", "LGPL-3.0"],
|
|
68
|
-
url: "http://www.gnu.org/licenses/lgpl.txt"
|
|
69
|
-
)
|
|
70
|
-
|
|
71
|
-
all << new(
|
|
72
|
-
short_name: "MIT",
|
|
73
|
-
other_names: ["Expat", "MIT license", "MIT License"],
|
|
74
|
-
url: "http://opensource.org/licenses/mit-license",
|
|
75
|
-
matcher: mit_matcher
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
all << new(
|
|
79
|
-
short_name: "NewBSD",
|
|
80
|
-
pretty_name: "New BSD",
|
|
81
|
-
other_names: ["Modified BSD", "BSD3", "BSD-3", "3-clause BSD", "BSD-3-Clause"],
|
|
82
|
-
url: "http://opensource.org/licenses/BSD-3-Clause",
|
|
83
|
-
matcher: new_bsd_matcher
|
|
84
|
-
)
|
|
85
|
-
|
|
86
|
-
all << new(
|
|
87
|
-
short_name: "Python",
|
|
88
|
-
pretty_name: "Python Software Foundation License",
|
|
89
|
-
other_names: ["PSF"],
|
|
90
|
-
url: "http://hg.python.org/cpython/raw-file/89ce323357db/LICENSE"
|
|
91
|
-
)
|
|
92
|
-
|
|
93
|
-
all << new(
|
|
94
|
-
short_name: "Ruby",
|
|
95
|
-
pretty_name: "ruby",
|
|
96
|
-
url: ruby_license_url,
|
|
97
|
-
matcher: ruby_matcher
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
all << new(
|
|
101
|
-
short_name: "SimplifiedBSD",
|
|
102
|
-
pretty_name: "Simplified BSD",
|
|
103
|
-
other_names: ["FreeBSD", "2-clause BSD", "BSD-2-Clause"],
|
|
104
|
-
url: "http://opensource.org/licenses/bsd-license"
|
|
105
|
-
)
|
|
106
155
|
end
|
|
@@ -6,7 +6,12 @@ module LicenseFinder
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def self.from_text(text)
|
|
9
|
-
|
|
9
|
+
from_regex(Text.compile_to_regex(text))
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# an alias for Matcher.new, for uniformity of constructors
|
|
13
|
+
def self.from_regex(regexp)
|
|
14
|
+
new(regexp)
|
|
10
15
|
end
|
|
11
16
|
|
|
12
17
|
def matches_text?(text)
|
|
@@ -6,8 +6,9 @@ module LicenseFinder
|
|
|
6
6
|
# it_behaves_like "it conforms to interface required by PackageSaver"
|
|
7
7
|
# and see BundlerPackage, PipPackage and NpmPackage
|
|
8
8
|
class Package
|
|
9
|
-
def self.
|
|
9
|
+
def self.license_names_from_standard_spec(spec)
|
|
10
10
|
licenses = spec["licenses"] || [spec["license"]].compact
|
|
11
|
+
licenses = [licenses] unless licenses.is_a?(Array)
|
|
11
12
|
licenses.map do |license|
|
|
12
13
|
if license.is_a? Hash
|
|
13
14
|
license["type"]
|
|
@@ -24,15 +25,30 @@ module LicenseFinder
|
|
|
24
25
|
private
|
|
25
26
|
|
|
26
27
|
def determine_license
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
if licenses_from_spec.any?
|
|
29
|
+
choose_license_from licenses_from_spec
|
|
30
|
+
elsif licenses_from_files.any?
|
|
31
|
+
choose_license_from licenses_from_files
|
|
30
32
|
else
|
|
31
33
|
default_license
|
|
32
34
|
end
|
|
33
35
|
end
|
|
34
36
|
|
|
35
|
-
def
|
|
37
|
+
def choose_license_from licenses
|
|
38
|
+
if ( licenses.uniq.size > 1 )
|
|
39
|
+
License.find_by_name "multiple licenses: #{(licenses).map(&:name).uniq.join(', ')}"
|
|
40
|
+
else
|
|
41
|
+
licenses.first
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def licenses_from_spec
|
|
46
|
+
license_names_from_spec.map do |name|
|
|
47
|
+
License.find_by_name(name)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def licenses_from_files
|
|
36
52
|
license_files.map(&:license).compact
|
|
37
53
|
end
|
|
38
54
|
|
|
@@ -40,8 +56,16 @@ module LicenseFinder
|
|
|
40
56
|
PossibleLicenseFiles.find(install_path)
|
|
41
57
|
end
|
|
42
58
|
|
|
59
|
+
def multiple_licenses
|
|
60
|
+
if ( licenses_from_spec.uniq.size > 1 )
|
|
61
|
+
License.find_by_name "multiple licenses: #{(licenses_from_spec).map(&:name).uniq.join(', ')}"
|
|
62
|
+
else
|
|
63
|
+
License.find_by_name "multiple licenses: #{(licenses_from_files).map(&:name).uniq.join(', ')}"
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
43
67
|
def default_license
|
|
44
|
-
|
|
68
|
+
License.find_by_name nil
|
|
45
69
|
end
|
|
46
70
|
end
|
|
47
71
|
end
|
|
@@ -14,13 +14,13 @@ module LicenseFinder
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def self.active?
|
|
17
|
-
|
|
17
|
+
package_path.exist?
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
private
|
|
21
21
|
|
|
22
22
|
def self.package_path
|
|
23
|
-
Pathname.new('bower.json')
|
|
23
|
+
Pathname.new('bower.json')
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
end
|
|
@@ -42,8 +42,8 @@ module LicenseFinder
|
|
|
42
42
|
bower_module["canonicalDir"]
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
def
|
|
46
|
-
Package.
|
|
45
|
+
def license_names_from_spec
|
|
46
|
+
Package.license_names_from_standard_spec(module_metadata)
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
end
|
|
@@ -2,15 +2,13 @@ require "bundler"
|
|
|
2
2
|
|
|
3
3
|
module LicenseFinder
|
|
4
4
|
class Bundler
|
|
5
|
-
attr_writer :ignore_groups
|
|
6
|
-
|
|
7
5
|
class << self
|
|
8
|
-
def current_packages(
|
|
9
|
-
new(
|
|
6
|
+
def current_packages(ignore_groups = LicenseFinder.config.ignore_groups, bundler_definition=nil)
|
|
7
|
+
new(ignore_groups, bundler_definition).packages
|
|
10
8
|
end
|
|
11
9
|
|
|
12
10
|
def active?
|
|
13
|
-
|
|
11
|
+
gemfile_path.exist?
|
|
14
12
|
end
|
|
15
13
|
|
|
16
14
|
def gemfile_path
|
|
@@ -18,17 +16,15 @@ module LicenseFinder
|
|
|
18
16
|
end
|
|
19
17
|
end
|
|
20
18
|
|
|
21
|
-
def initialize(
|
|
19
|
+
def initialize(ignore_groups, bundler_definition=nil)
|
|
22
20
|
@definition = bundler_definition || ::Bundler::Definition.build(self.class.gemfile_path, lockfile_path, nil)
|
|
23
|
-
@
|
|
21
|
+
@ignore_groups = ignore_groups
|
|
24
22
|
end
|
|
25
23
|
|
|
26
24
|
def packages
|
|
27
|
-
return @packages if @packages
|
|
28
|
-
|
|
29
25
|
top_level_gems = Set.new
|
|
30
26
|
|
|
31
|
-
|
|
27
|
+
packages = definition.specs_for(included_groups).map do |gem_def|
|
|
32
28
|
bundler_def = bundler_defs.detect { |bundler_def| bundler_def.name == gem_def.name }
|
|
33
29
|
|
|
34
30
|
top_level_gems << format_name(gem_def)
|
|
@@ -36,19 +32,15 @@ module LicenseFinder
|
|
|
36
32
|
BundlerPackage.new(gem_def, bundler_def)
|
|
37
33
|
end
|
|
38
34
|
|
|
39
|
-
|
|
35
|
+
packages.each do |gem|
|
|
40
36
|
gem.children = children_for(gem, top_level_gems)
|
|
41
37
|
end
|
|
42
38
|
|
|
43
|
-
|
|
39
|
+
packages
|
|
44
40
|
end
|
|
45
41
|
|
|
46
42
|
private
|
|
47
|
-
attr_reader :definition
|
|
48
|
-
|
|
49
|
-
def ignore_groups
|
|
50
|
-
@ignore_groups ||= @config.ignore_groups
|
|
51
|
-
end
|
|
43
|
+
attr_reader :definition, :ignore_groups
|
|
52
44
|
|
|
53
45
|
def bundler_defs
|
|
54
46
|
@bundler_defs ||= definition.dependencies
|