license_finder 0.9.5.1-java → 1.0.0.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +9 -0
- data/CHANGELOG.rdoc +9 -0
- data/MIT.LICENSE +20 -0
- data/db/migrate/201401302113_re_reassociate_license.rb +23 -0
- data/features/gradle_dependencies.feature +9 -0
- data/features/maven_dependencies.feature +9 -0
- data/features/step_definitions/gradle_steps.rb +8 -0
- data/features/step_definitions/maven_steps.rb +8 -0
- data/features/step_definitions/node_steps.rb +1 -1
- data/features/step_definitions/set_license_steps.rb +0 -1
- data/features/step_definitions/shared_steps.rb +26 -13
- data/lib/license_finder.rb +6 -1
- data/lib/license_finder/cli.rb +13 -9
- data/lib/license_finder/configuration.rb +113 -72
- data/lib/license_finder/dependency_manager.rb +12 -7
- data/lib/license_finder/license.rb +39 -65
- data/lib/license_finder/license/any_matcher.rb +13 -0
- data/lib/license_finder/license/definitions.rb +106 -0
- data/lib/license_finder/license/header_matcher.rb +10 -0
- data/lib/license_finder/license/matcher.rb +17 -0
- data/lib/license_finder/license/template.rb +16 -0
- data/lib/license_finder/license/text.rb +19 -0
- data/lib/license_finder/license_url.rb +1 -4
- data/lib/license_finder/package.rb +18 -2
- data/lib/license_finder/package_managers/bower_package.rb +3 -17
- data/lib/license_finder/package_managers/bundler_package.rb +2 -2
- data/lib/license_finder/package_managers/gradle.rb +29 -0
- data/lib/license_finder/package_managers/gradle_package.rb +41 -0
- data/lib/license_finder/package_managers/maven.rb +31 -0
- data/lib/license_finder/package_managers/maven_package.rb +46 -0
- data/lib/license_finder/package_managers/npm_package.rb +2 -16
- data/lib/license_finder/package_managers/pip_package.rb +7 -7
- data/lib/license_finder/package_saver.rb +1 -1
- data/lib/license_finder/possible_license_file.rb +1 -5
- data/lib/license_finder/possible_license_files.rb +4 -2
- data/lib/license_finder/reports/dependency_report.rb +5 -1
- data/lib/license_finder/reports/detailed_text_report.rb +0 -1
- data/lib/license_finder/reports/formatted_report.rb +21 -0
- data/lib/license_finder/reports/html_report.rb +1 -21
- data/lib/license_finder/reports/markdown_report.rb +1 -21
- data/lib/license_finder/reports/reporter.rb +8 -7
- data/lib/license_finder/reports/text_report.rb +0 -2
- data/lib/license_finder/tables.rb +1 -1
- data/lib/license_finder/tables/dependency.rb +12 -12
- data/lib/license_finder/yml_to_sql.rb +4 -4
- data/license_finder.gemspec +3 -2
- data/readme.md +10 -1
- data/release/publish.sh +10 -7
- data/spec/fixtures/build.gradle +24 -0
- data/spec/fixtures/pom.xml +19 -0
- data/spec/lib/license_finder/cli_spec.rb +13 -3
- data/spec/lib/license_finder/configuration_spec.rb +121 -74
- data/spec/lib/license_finder/dependency_manager_spec.rb +34 -16
- data/spec/lib/license_finder/license/{new_bsd_spec.rb → definitions_spec.rb} +93 -7
- data/spec/lib/license_finder/license_spec.rb +72 -26
- data/spec/lib/license_finder/license_url_spec.rb +10 -14
- data/spec/lib/license_finder/package_managers/bower_package_spec.rb +17 -5
- data/spec/lib/license_finder/package_managers/bundler_package_spec.rb +2 -2
- data/spec/lib/license_finder/package_managers/gradle_package_spec.rb +66 -0
- data/spec/lib/license_finder/package_managers/gradle_spec.rb +89 -0
- data/spec/lib/license_finder/package_managers/maven_package_spec.rb +72 -0
- data/spec/lib/license_finder/package_managers/maven_spec.rb +115 -0
- data/spec/lib/license_finder/package_managers/npm_package_spec.rb +17 -3
- data/spec/lib/license_finder/package_managers/pip_package_spec.rb +27 -5
- data/spec/lib/license_finder/possible_license_file_spec.rb +2 -2
- data/spec/lib/license_finder/{detailed_text_report_spec.rb → reports/detailed_text_report_spec.rb} +0 -0
- data/spec/lib/license_finder/{html_report_spec.rb → reports/html_report_spec.rb} +0 -0
- data/spec/lib/license_finder/{markdown_report_spec.rb → reports/markdown_report_spec.rb} +0 -0
- data/spec/lib/license_finder/reports/reporter_spec.rb +33 -0
- data/spec/lib/license_finder/{text_report_spec.rb → reports/text_report_spec.rb} +0 -0
- data/spec/lib/license_finder/tables/dependency_spec.rb +1 -2
- data/spec/lib/license_finder/tables/license_alias_spec.rb +1 -2
- data/spec/lib/license_finder/yml_to_sql_spec.rb +10 -11
- data/spec/lib/license_finder_spec.rb +5 -71
- metadata +64 -53
- data/features/rails_rake.feature +0 -9
- data/features/step_definitions/rails_rake_steps.rb +0 -12
- data/lib/license_finder/license/apache2.rb +0 -8
- data/lib/license_finder/license/bsd.rb +0 -4
- data/lib/license_finder/license/gplv2.rb +0 -4
- data/lib/license_finder/license/isc.rb +0 -3
- data/lib/license_finder/license/lgpl.rb +0 -4
- data/lib/license_finder/license/mit.rb +0 -23
- data/lib/license_finder/license/new_bsd.rb +0 -27
- data/lib/license_finder/license/python.rb +0 -8
- data/lib/license_finder/license/ruby.rb +0 -11
- data/lib/license_finder/license/simplified_bsd.rb +0 -8
- data/lib/license_finder/railtie.rb +0 -7
- data/lib/tasks/license_finder.rake +0 -7
- data/spec/lib/license_finder/license/apache_spec.rb +0 -7
- data/spec/lib/license_finder/license/bsd_spec.rb +0 -41
- data/spec/lib/license_finder/license/gplv2_spec.rb +0 -7
- data/spec/lib/license_finder/license/isc_spec.rb +0 -7
- data/spec/lib/license_finder/license/lgpl_spec.rb +0 -7
- data/spec/lib/license_finder/license/mit_spec.rb +0 -33
- data/spec/lib/license_finder/license/python_spec.rb +0 -7
- data/spec/lib/license_finder/license/ruby_spec.rb +0 -19
- data/spec/lib/license_finder/license/simplified_bsd_spec.rb +0 -7
- data/spec/lib/license_finder/reporter_spec.rb +0 -46
- data/spec/support/license_examples.rb +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2bfbd9c59602704b7c3a40d8ecd9e31e52891a59
|
4
|
+
data.tar.gz: 3f06d5b52cdb43ddf1d8e1f7e0181a6dc1812d37
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea159ba85c83ae2758bf0ccf26345f596c42f814d5b37e2e67d8fca3d51dd9bd72837bdc4d402092f8f47200c788deb9876166ac921ebad802a9aa78e53f6a6e
|
7
|
+
data.tar.gz: bf0c2f24a983fc2318bacdf4c89dbbbbaff3ad3a656e7fe5fe419895e0d740743b1298903ce423d6bea16c2573d02feecc710b32ee8a1de8a32702c65fdffe60
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -12,6 +12,8 @@ matrix:
|
|
12
12
|
- rvm: ruby-head
|
13
13
|
- rvm: jruby-head
|
14
14
|
|
15
|
+
env: JAVA_OPTS='-client -XX:+TieredCompilation -XX:TieredStopAtLevel=1' JRUBY_OPTS='-J-Djruby.launch.inproc=true'
|
16
|
+
|
15
17
|
notifications:
|
16
18
|
email:
|
17
19
|
- licensefinder@pivotallabs.com
|
@@ -19,3 +21,10 @@ notifications:
|
|
19
21
|
urls:
|
20
22
|
- http://pulse.pivotallabs.com/projects/657d35b7-b896-4bf3-8837-9d558e2ab651/status
|
21
23
|
on_start: true
|
24
|
+
|
25
|
+
before_install:
|
26
|
+
- sudo apt-get update
|
27
|
+
|
28
|
+
install:
|
29
|
+
- sudo apt-get install gradle -qq -y
|
30
|
+
- bundle install
|
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
=== 1.0.0 / Unreleased
|
2
|
+
|
3
|
+
* Features
|
4
|
+
|
5
|
+
* When approving a license, can specify who is approving, and why.
|
6
|
+
* Remove `rake license_finder` task from Rails projects. Just include
|
7
|
+
'license_finder' as a development dependency, and run `license_finder` in
|
8
|
+
the shell.
|
9
|
+
|
1
10
|
=== 0.9.5.1 / 2014-01-30
|
2
11
|
|
3
12
|
* Features
|
data/MIT.LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2008-2014 Pivotal Labs
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
up do
|
3
|
+
LicenseFinder::DB << <<-SQL
|
4
|
+
UPDATE dependencies
|
5
|
+
SET license_id =
|
6
|
+
(SELECT min(la.id)
|
7
|
+
FROM
|
8
|
+
license_aliases la,
|
9
|
+
license_aliases la_orig
|
10
|
+
WHERE
|
11
|
+
la.name = la_orig.name AND
|
12
|
+
la_orig.id = license_id
|
13
|
+
LIMIT 1)
|
14
|
+
SQL
|
15
|
+
|
16
|
+
LicenseFinder::DB << <<-SQL
|
17
|
+
DELETE
|
18
|
+
FROM license_aliases
|
19
|
+
WHERE
|
20
|
+
id NOT IN (SELECT license_id FROM dependencies)
|
21
|
+
SQL
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Feature: Tracking Gradle Dependencies
|
2
|
+
So that I can track Gradle dependencies
|
3
|
+
As an application developer using license finder
|
4
|
+
I want to be able to manage Gradle dependencies
|
5
|
+
|
6
|
+
Scenario: See the dependencies from the build.gradle file
|
7
|
+
Given A build.gradle file with dependencies
|
8
|
+
When I run license_finder
|
9
|
+
Then I should see a Gradle dependency with a license
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Feature: Tracking Maven Dependencies
|
2
|
+
So that I can track Maven dependencies
|
3
|
+
As an application developer using license finder
|
4
|
+
I want to be able to manage Maven dependencies
|
5
|
+
|
6
|
+
Scenario: See the dependencies from the pom file
|
7
|
+
Given A pom file with dependencies
|
8
|
+
When I run license_finder
|
9
|
+
Then I should see a Maven dependency with a license
|
@@ -1,7 +1,6 @@
|
|
1
1
|
Given(/^I have an app with license finder that depends on an other licensed gem$/) do
|
2
2
|
@user = ::DSL::User.new
|
3
3
|
@user.create_nonrails_app
|
4
|
-
@user.add_license_finder_to_rakefile
|
5
4
|
@user.add_dependency_to_app 'other_gem', version: '1.0', license: 'other'
|
6
5
|
@user.add_dependency_to_app 'control_gem', version: '1.0', license: 'other'
|
7
6
|
end
|
@@ -47,17 +47,37 @@ module DSL
|
|
47
47
|
`mkdir -p #{app_path}`
|
48
48
|
`cd #{app_path} && touch package.json`
|
49
49
|
|
50
|
-
add_npm_dependency('
|
50
|
+
add_npm_dependency('http-server', '0.6.1')
|
51
51
|
|
52
52
|
npm_install
|
53
53
|
end
|
54
54
|
|
55
|
+
def create_maven_app
|
56
|
+
reset_projects!
|
57
|
+
|
58
|
+
path = File.expand_path("spec/fixtures/pom.xml")
|
59
|
+
|
60
|
+
`mkdir -p #{app_path}`
|
61
|
+
`cd #{app_path} && cp #{path} .`
|
62
|
+
|
63
|
+
mvn_install
|
64
|
+
end
|
65
|
+
|
66
|
+
def create_gradle_app
|
67
|
+
reset_projects!
|
68
|
+
|
69
|
+
path = File.expand_path("spec/fixtures/build.gradle")
|
70
|
+
|
71
|
+
`mkdir -p #{app_path}`
|
72
|
+
`cd #{app_path} && cp #{path} .`
|
73
|
+
`gradle dependencies`
|
74
|
+
end
|
75
|
+
|
55
76
|
def create_nonrails_app
|
56
77
|
reset_projects!
|
57
78
|
|
58
79
|
`cd #{projects_path} && bundle gem #{app_name}`
|
59
80
|
|
60
|
-
add_gem_dependency('rake')
|
61
81
|
add_gem_dependency('license_finder', :path => root_path)
|
62
82
|
|
63
83
|
bundle_app
|
@@ -73,13 +93,6 @@ module DSL
|
|
73
93
|
bundle_app
|
74
94
|
end
|
75
95
|
|
76
|
-
def add_license_finder_to_rakefile
|
77
|
-
add_to_rakefile <<-RUBY
|
78
|
-
require 'bundler/setup'
|
79
|
-
require 'license_finder'
|
80
|
-
RUBY
|
81
|
-
end
|
82
|
-
|
83
96
|
def update_gem(name, attrs)
|
84
97
|
file_contents = YAML.load(File.read(dependencies_file_path))
|
85
98
|
|
@@ -205,6 +218,10 @@ module DSL
|
|
205
218
|
`cd #{app_path} && npm install 2>/dev/null`
|
206
219
|
end
|
207
220
|
|
221
|
+
def mvn_install
|
222
|
+
`cd #{app_path} && mvn install`
|
223
|
+
end
|
224
|
+
|
208
225
|
def modifying_dependencies_file
|
209
226
|
FileUtils.mkdir_p(File.dirname(dependencies_file_path))
|
210
227
|
File.open(dependencies_file_path, 'w+') { |f| yield f }
|
@@ -216,10 +233,6 @@ module DSL
|
|
216
233
|
`echo #{line.inspect} >> #{File.join(app_path, "Gemfile")}`
|
217
234
|
end
|
218
235
|
|
219
|
-
def add_to_rakefile(line)
|
220
|
-
`echo #{line.inspect} >> #{File.join(app_path, "Rakefile")}`
|
221
|
-
end
|
222
|
-
|
223
236
|
def add_to_requirements(line)
|
224
237
|
`echo #{line.inspect} >> #{File.join(app_path, "requirements.txt")}`
|
225
238
|
end
|
data/lib/license_finder.rb
CHANGED
@@ -22,10 +22,15 @@ module LicenseFinder
|
|
22
22
|
autoload :Bundler, 'license_finder/package_managers/bundler'
|
23
23
|
autoload :NPM, 'license_finder/package_managers/npm'
|
24
24
|
autoload :Pip, 'license_finder/package_managers/pip'
|
25
|
+
autoload :Maven, 'license_finder/package_managers/maven'
|
26
|
+
autoload :Gradle, 'license_finder/package_managers/gradle'
|
25
27
|
autoload :BowerPackage, 'license_finder/package_managers/bower_package'
|
26
28
|
autoload :BundlerPackage, 'license_finder/package_managers/bundler_package'
|
27
29
|
autoload :PipPackage, 'license_finder/package_managers/pip_package'
|
28
30
|
autoload :NpmPackage, 'license_finder/package_managers/npm_package'
|
31
|
+
autoload :MavenPackage, 'license_finder/package_managers/maven_package'
|
32
|
+
autoload :GradlePackage, 'license_finder/package_managers/gradle_package'
|
33
|
+
|
29
34
|
|
30
35
|
autoload :BundlerGroup, 'license_finder/tables/bundler_group'
|
31
36
|
autoload :Dependency, 'license_finder/tables/dependency'
|
@@ -33,6 +38,7 @@ module LicenseFinder
|
|
33
38
|
autoload :YmlToSql, 'license_finder/yml_to_sql'
|
34
39
|
|
35
40
|
autoload :DependencyReport, 'license_finder/reports/dependency_report'
|
41
|
+
autoload :FormattedReport, 'license_finder/reports/formatted_report'
|
36
42
|
autoload :HtmlReport, 'license_finder/reports/html_report'
|
37
43
|
autoload :MarkdownReport, 'license_finder/reports/markdown_report'
|
38
44
|
autoload :Reporter, 'license_finder/reports/reporter'
|
@@ -44,7 +50,6 @@ module LicenseFinder
|
|
44
50
|
end
|
45
51
|
end
|
46
52
|
|
47
|
-
require 'license_finder/railtie' if defined?(Rails)
|
48
53
|
unless defined?(LicenseAudit)
|
49
54
|
require 'license_finder/tables'
|
50
55
|
LicenseFinder::YmlToSql.convert_if_required
|
data/lib/license_finder/cli.rb
CHANGED
@@ -40,7 +40,7 @@ module LicenseFinder
|
|
40
40
|
|
41
41
|
class Dependencies < Subcommand
|
42
42
|
method_option :approve, type: :boolean, desc: "Approve the added dependency"
|
43
|
-
desc "
|
43
|
+
desc "add LICENSE DEPENDENCY_NAME [VERSION] [--approve]", "Add a dependency that is not managed by Bundler, NPM, etc"
|
44
44
|
def add(license, name, version = nil)
|
45
45
|
die_on_error {
|
46
46
|
DependencyManager.create_manually_managed(license, name, version)
|
@@ -53,7 +53,7 @@ module LicenseFinder
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
desc "
|
56
|
+
desc "remove DEPENDENCY_NAME", "Remove a dependency that is not managed by Bundler, NPM, etc"
|
57
57
|
def remove(name)
|
58
58
|
die_on_error {
|
59
59
|
DependencyManager.destroy_manually_managed(name)
|
@@ -87,7 +87,7 @@ module LicenseFinder
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
desc "add LICENSE", "Add one
|
90
|
+
desc "add LICENSE...", "Add one or more licenses to the whitelist"
|
91
91
|
def add(*licenses)
|
92
92
|
modifying {
|
93
93
|
licenses.each do |license|
|
@@ -97,7 +97,7 @@ module LicenseFinder
|
|
97
97
|
say "Added #{licenses.join(", ")} to the license whitelist"
|
98
98
|
end
|
99
99
|
|
100
|
-
desc "remove LICENSE", "Remove one
|
100
|
+
desc "remove LICENSE...", "Remove one or more licenses from the whitelist"
|
101
101
|
def remove(*licenses)
|
102
102
|
modifying {
|
103
103
|
licenses.each do |license|
|
@@ -160,13 +160,17 @@ module LicenseFinder
|
|
160
160
|
end
|
161
161
|
default_task :rescan
|
162
162
|
|
163
|
-
desc "approve DEPENDENCY_NAME", "Approve one
|
163
|
+
desc "approve DEPENDENCY_NAME...", "Approve one or more dependencies by name"
|
164
164
|
def approve(*names)
|
165
|
-
|
166
|
-
|
167
|
-
|
165
|
+
if(names.count < 1)
|
166
|
+
say "Warning: Must specify dependencies to approve.", :red
|
167
|
+
else
|
168
|
+
die_on_error {
|
169
|
+
names.each { |name| DependencyManager.approve!(name) }
|
170
|
+
}
|
168
171
|
|
169
|
-
|
172
|
+
say "The #{names.join(", ")} dependency has been approved!", :green
|
173
|
+
end
|
170
174
|
end
|
171
175
|
|
172
176
|
desc "license LICENSE DEPENDENCY_NAME", "Update a dependency's license"
|
@@ -1,108 +1,149 @@
|
|
1
|
-
require "
|
1
|
+
require "delegate"
|
2
2
|
|
3
3
|
module LicenseFinder
|
4
4
|
class Configuration
|
5
|
-
attr_accessor :whitelist, :ignore_groups, :dependencies_dir, :project_name
|
6
|
-
|
7
|
-
def self.config_file_path
|
8
|
-
File.join('.', 'config', 'license_finder.yml')
|
9
|
-
end
|
10
|
-
|
11
5
|
def self.ensure_default
|
12
|
-
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.make_config_file
|
17
|
-
FileUtils.mkdir_p(File.join('.', 'config'))
|
18
|
-
FileUtils.cp(
|
19
|
-
ROOT_PATH.join('..', 'files', 'license_finder.yml'),
|
20
|
-
config_file_path
|
21
|
-
)
|
6
|
+
Persistence.init
|
7
|
+
prepare(Persistence.get)
|
22
8
|
end
|
23
9
|
|
24
10
|
def self.move!
|
25
|
-
config =
|
26
|
-
|
27
|
-
f.write YAML.dump(config)
|
28
|
-
end
|
11
|
+
config = prepare(Persistence.get.merge('dependencies_file_dir' => './doc/'))
|
12
|
+
config.save
|
29
13
|
|
30
|
-
FileUtils.
|
31
|
-
FileUtils.mv(Dir["dependencies.*"], "doc")
|
14
|
+
FileUtils.mv(Dir["dependencies*"], config.artifacts.dir)
|
32
15
|
end
|
33
16
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
config
|
17
|
+
# It's nice to keep destructive file system manipulation out of the
|
18
|
+
# initializer. That reduces test polution, but is slightly inconvenient
|
19
|
+
# for methods like Configuration.ensure_default and Configuration.move!,
|
20
|
+
# which need a working artifacts directory. This helper is a compromise.
|
21
|
+
def self.prepare(config)
|
22
|
+
result = new(config)
|
23
|
+
result.artifacts.init
|
24
|
+
result
|
40
25
|
end
|
41
26
|
|
42
|
-
|
43
|
-
config = self.class.config_hash(config)
|
27
|
+
attr_accessor :whitelist, :ignore_groups, :artifacts, :project_name
|
44
28
|
|
45
|
-
|
46
|
-
@
|
47
|
-
@
|
48
|
-
@
|
49
|
-
|
29
|
+
def initialize(config)
|
30
|
+
@whitelist = Array(config['whitelist'])
|
31
|
+
@ignore_groups = Array(config["ignore_groups"])
|
32
|
+
@artifacts = Artifacts.new(Pathname(config['dependencies_file_dir'] || './doc/'))
|
33
|
+
@project_name = config['project_name'] || determine_project_name
|
50
34
|
end
|
51
35
|
|
52
|
-
def
|
53
|
-
|
36
|
+
def whitelisted?(license_name)
|
37
|
+
license = License.find_by_name(license_name)
|
38
|
+
whitelisted_licenses.include? license
|
54
39
|
end
|
55
40
|
|
56
|
-
def
|
57
|
-
|
41
|
+
def save
|
42
|
+
Persistence.set(to_hash)
|
58
43
|
end
|
59
44
|
|
60
|
-
|
61
|
-
File.join(dependencies_dir, "dependencies.csv")
|
62
|
-
end
|
45
|
+
private
|
63
46
|
|
64
|
-
def
|
65
|
-
|
47
|
+
def to_hash
|
48
|
+
{
|
49
|
+
'whitelist' => whitelist.uniq,
|
50
|
+
'ignore_groups' => ignore_groups.uniq,
|
51
|
+
'dependencies_file_dir' => artifacts.dir.to_s,
|
52
|
+
'project_name' => project_name
|
53
|
+
}
|
66
54
|
end
|
67
55
|
|
68
|
-
def
|
69
|
-
|
56
|
+
def whitelisted_licenses
|
57
|
+
whitelist.map do |license_name|
|
58
|
+
License.find_by_name(license_name) || license_name
|
59
|
+
end.compact
|
70
60
|
end
|
71
61
|
|
72
|
-
def
|
73
|
-
|
62
|
+
def determine_project_name
|
63
|
+
Pathname.pwd.basename.to_s
|
74
64
|
end
|
75
65
|
|
76
|
-
|
77
|
-
|
78
|
-
|
66
|
+
class Artifacts < SimpleDelegator
|
67
|
+
def init
|
68
|
+
mkpath
|
69
|
+
end
|
79
70
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
end
|
71
|
+
def dir
|
72
|
+
__getobj__
|
73
|
+
end
|
84
74
|
|
85
|
-
|
86
|
-
|
87
|
-
file.write({
|
88
|
-
'whitelist' => @whitelist.uniq,
|
89
|
-
'ignore_groups' => @ignore_groups.uniq,
|
90
|
-
'dependencies_file_dir' => @dependencies_dir,
|
91
|
-
'project_name' => @project_name
|
92
|
-
}.to_yaml)
|
75
|
+
def database_uri
|
76
|
+
URI.escape(database_file.expand_path.to_s)
|
93
77
|
end
|
94
|
-
end
|
95
78
|
|
96
|
-
|
79
|
+
def database_file
|
80
|
+
join("dependencies.db")
|
81
|
+
end
|
97
82
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
83
|
+
def text_file
|
84
|
+
join("dependencies.csv")
|
85
|
+
end
|
86
|
+
|
87
|
+
def detailed_text_file
|
88
|
+
join("dependencies_detailed.csv")
|
89
|
+
end
|
90
|
+
|
91
|
+
def html_file
|
92
|
+
join("dependencies.html")
|
93
|
+
end
|
94
|
+
|
95
|
+
def markdown_file
|
96
|
+
join("dependencies.md")
|
97
|
+
end
|
98
|
+
|
99
|
+
def legacy_yaml_file
|
100
|
+
join("dependencies.yml")
|
101
|
+
end
|
102
|
+
|
103
|
+
def legacy_text_file
|
104
|
+
join("dependencies.txt")
|
105
|
+
end
|
102
106
|
end
|
103
107
|
|
104
|
-
|
105
|
-
|
108
|
+
module Persistence
|
109
|
+
extend self
|
110
|
+
|
111
|
+
def init
|
112
|
+
init! unless inited?
|
113
|
+
end
|
114
|
+
|
115
|
+
def get
|
116
|
+
return {} unless inited?
|
117
|
+
|
118
|
+
YAML.load(file.read)
|
119
|
+
end
|
120
|
+
|
121
|
+
def set(hash)
|
122
|
+
file.open('w') { |f| f.write(YAML.dump(hash)) }
|
123
|
+
end
|
124
|
+
|
125
|
+
private
|
126
|
+
|
127
|
+
def inited?
|
128
|
+
file.exist?
|
129
|
+
end
|
130
|
+
|
131
|
+
def init!
|
132
|
+
file_dir.mkpath
|
133
|
+
FileUtils.cp(file_template, file)
|
134
|
+
end
|
135
|
+
|
136
|
+
def file_dir
|
137
|
+
Pathname.new('.').join('config')
|
138
|
+
end
|
139
|
+
|
140
|
+
def file
|
141
|
+
file_dir.join('license_finder.yml')
|
142
|
+
end
|
143
|
+
|
144
|
+
def file_template
|
145
|
+
ROOT_PATH.join('..', 'files', 'license_finder.yml')
|
146
|
+
end
|
106
147
|
end
|
107
148
|
end
|
108
149
|
end
|