license_finder 1.1.1-java → 1.2-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -2
- data/CHANGELOG.rdoc +10 -0
- data/Gemfile +1 -1
- data/README.md +363 -0
- data/Rakefile +30 -1
- data/TODO.md +28 -0
- data/bin/license_finder_pip.py +18 -0
- data/db/migrate/201410031451_rename_dependency_license_name.rb +6 -0
- data/features/multiple_licenses.feature +9 -0
- data/features/step_definitions/cli_steps.rb +9 -9
- data/features/step_definitions/cocoapod_steps.rb +1 -1
- data/features/step_definitions/configure_bundler_groups_steps.rb +3 -3
- data/features/step_definitions/configure_whitelist_steps.rb +4 -4
- data/features/step_definitions/gradle_steps.rb +1 -1
- data/features/step_definitions/manually_added_steps.rb +3 -3
- data/features/step_definitions/manually_approved_steps.rb +5 -5
- data/features/step_definitions/manually_assigned_license_steps.rb +4 -4
- data/features/step_definitions/maven_steps.rb +1 -1
- data/features/step_definitions/multiple_licenses_steps.rb +14 -0
- data/features/step_definitions/node_steps.rb +1 -1
- data/features/step_definitions/python_steps.rb +1 -1
- data/features/step_definitions/report_csv_steps.rb +3 -3
- data/features/step_definitions/report_html_steps.rb +5 -5
- data/features/step_definitions/shared_steps.rb +23 -6
- data/lib/license_finder.rb +3 -0
- data/lib/license_finder/cli.rb +13 -34
- data/lib/license_finder/configuration.rb +8 -4
- data/lib/license_finder/dependency_manager.rb +25 -15
- data/lib/license_finder/license.rb +8 -0
- data/lib/license_finder/logger.rb +59 -0
- data/lib/license_finder/package.rb +37 -30
- data/lib/license_finder/package_manager.rb +20 -0
- data/lib/license_finder/package_managers/bower.rb +4 -9
- data/lib/license_finder/package_managers/bower_package.rb +2 -1
- data/lib/license_finder/package_managers/bundler.rb +26 -41
- data/lib/license_finder/package_managers/bundler_package.rb +6 -3
- data/lib/license_finder/package_managers/cocoa_pods.rb +18 -10
- data/lib/license_finder/package_managers/cocoa_pods_package.rb +4 -3
- data/lib/license_finder/package_managers/gradle.rb +7 -11
- data/lib/license_finder/package_managers/gradle_package.rb +2 -7
- data/lib/license_finder/package_managers/maven.rb +5 -9
- data/lib/license_finder/package_managers/maven_package.rb +4 -8
- data/lib/license_finder/package_managers/npm.rb +6 -10
- data/lib/license_finder/package_managers/npm_package.rb +2 -1
- data/lib/license_finder/package_managers/pip.rb +11 -24
- data/lib/license_finder/package_managers/pip_package.rb +2 -1
- data/lib/license_finder/package_saver.rb +2 -2
- data/lib/license_finder/platform.rb +4 -0
- data/lib/license_finder/possible_license_file.rb +4 -0
- data/lib/license_finder/possible_license_files.rb +2 -1
- data/lib/license_finder/reports/detailed_text_report.rb +1 -1
- data/lib/license_finder/reports/formatted_report.rb +1 -1
- data/lib/license_finder/tables/dependency.rb +22 -12
- data/lib/license_finder/yml_to_sql.rb +1 -1
- data/lib/templates/html_report.erb +4 -4
- data/lib/templates/markdown_report.erb +4 -4
- data/lib/templates/text_report.erb +1 -1
- data/license_finder.gemspec +28 -12
- data/spec/lib/license_finder/cli_spec.rb +193 -185
- data/spec/lib/license_finder/configuration_spec.rb +46 -47
- data/spec/lib/license_finder/dependency_manager_spec.rb +48 -44
- data/spec/lib/license_finder/license/definitions_spec.rb +26 -26
- data/spec/lib/license_finder/license_spec.rb +25 -25
- data/spec/lib/license_finder/package_managers/bower_package_spec.rb +33 -17
- data/spec/lib/license_finder/package_managers/bower_spec.rb +35 -35
- data/spec/lib/license_finder/package_managers/bundler_package_spec.rb +20 -15
- data/spec/lib/license_finder/package_managers/bundler_spec.rb +12 -19
- data/spec/lib/license_finder/package_managers/cocoa_pods_package_spec.rb +8 -5
- data/spec/lib/license_finder/package_managers/cocoa_pods_spec.rb +20 -22
- data/spec/lib/license_finder/package_managers/gradle_package_spec.rb +8 -5
- data/spec/lib/license_finder/package_managers/gradle_spec.rb +20 -20
- data/spec/lib/license_finder/package_managers/maven_package_spec.rb +8 -5
- data/spec/lib/license_finder/package_managers/maven_spec.rb +18 -18
- data/spec/lib/license_finder/package_managers/npm_package_spec.rb +36 -17
- data/spec/lib/license_finder/package_managers/npm_spec.rb +17 -17
- data/spec/lib/license_finder/package_managers/pip_package_spec.rb +16 -10
- data/spec/lib/license_finder/package_managers/pip_spec.rb +21 -18
- data/spec/lib/license_finder/package_saver_spec.rb +15 -25
- data/spec/lib/license_finder/possible_license_file_spec.rb +5 -4
- data/spec/lib/license_finder/possible_license_files_spec.rb +11 -5
- data/spec/lib/license_finder/reports/detailed_text_report_spec.rb +3 -3
- data/spec/lib/license_finder/reports/html_report_spec.rb +23 -23
- data/spec/lib/license_finder/reports/markdown_report_spec.rb +12 -12
- data/spec/lib/license_finder/reports/reporter_spec.rb +11 -11
- data/spec/lib/license_finder/reports/text_report_spec.rb +3 -3
- data/spec/lib/license_finder/tables/dependency_spec.rb +59 -41
- data/spec/lib/license_finder/yml_to_sql_spec.rb +21 -21
- data/spec/lib/license_finder_spec.rb +1 -1
- data/spec/spec_helper.rb +0 -13
- data/spec/support/shared_examples_for_package.rb +46 -0
- data/spec/support/shared_examples_for_package_manager.rb +15 -0
- metadata +19 -100
- data/readme.md +0 -259
@@ -0,0 +1,46 @@
|
|
1
|
+
module LicenseFinder
|
2
|
+
shared_examples "a Package" do
|
3
|
+
context "the interface required by PackageSave" do
|
4
|
+
it { expect { subject.name }.to_not raise_error }
|
5
|
+
it { expect { subject.version }.to_not raise_error }
|
6
|
+
it { expect { subject.summary }.to_not raise_error }
|
7
|
+
it { expect { subject.description }.to_not raise_error }
|
8
|
+
it { expect { subject.homepage }.to_not raise_error }
|
9
|
+
it { expect { subject.groups }.to_not raise_error }
|
10
|
+
it { expect { subject.children }.to_not raise_error }
|
11
|
+
it { expect { subject.licenses }.to_not raise_error }
|
12
|
+
end
|
13
|
+
|
14
|
+
context "logging" do
|
15
|
+
let!(:logger) { Logger::Quiet.new }
|
16
|
+
before { allow(Logger::Default).to receive(:new) { logger } }
|
17
|
+
|
18
|
+
it "logs licenses found in specs" do
|
19
|
+
license_short_name = "foo"
|
20
|
+
license_pretty_name = "pretty foo"
|
21
|
+
license = double(:license, name: license_pretty_name)
|
22
|
+
|
23
|
+
allow(subject).to receive(:license_names_from_spec).and_return([license_short_name])
|
24
|
+
allow(License).to receive(:find_by_name).with(license_short_name) { license }
|
25
|
+
|
26
|
+
expect(logger).to receive(:license).with(anything, subject.name, license_pretty_name, "from spec")
|
27
|
+
|
28
|
+
subject.licenses_from_spec
|
29
|
+
end
|
30
|
+
|
31
|
+
it "logs licenses found in files" do
|
32
|
+
license_short_name = "foo"
|
33
|
+
license_pretty_name = "pretty foo"
|
34
|
+
license_path = "/path/to/license"
|
35
|
+
license = double(:license, name: license_pretty_name)
|
36
|
+
license_file = double(:license_file, license: license, path: license_path)
|
37
|
+
|
38
|
+
allow(subject).to receive(:license_files) { [license_file] }
|
39
|
+
|
40
|
+
expect(logger).to receive(:license).with(anything, subject.name, license_pretty_name, "from file '#{license_path}'")
|
41
|
+
|
42
|
+
subject.licenses_from_files
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module LicenseFinder
|
2
|
+
shared_examples "a PackageManager" do
|
3
|
+
it { expect(described_class.ancestors).to include PackageManager }
|
4
|
+
|
5
|
+
context "logging" do
|
6
|
+
it "logs when it checks for active-ness" do
|
7
|
+
logger = double(:logger)
|
8
|
+
expect(logger).to receive(:active)
|
9
|
+
|
10
|
+
subject = described_class.new logger: logger
|
11
|
+
subject.active?
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
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: 1.
|
4
|
+
version: '1.2'
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Jacob Maine
|
@@ -16,10 +16,11 @@ authors:
|
|
16
16
|
- David Dening
|
17
17
|
- Geoff Pleiss
|
18
18
|
- Mike Chinigo
|
19
|
+
- Mike Dalessio
|
19
20
|
autorequire:
|
20
21
|
bindir: bin
|
21
22
|
cert_chain: []
|
22
|
-
date: 2014-
|
23
|
+
date: 2014-11-10 00:00:00.000000000 Z
|
23
24
|
dependencies:
|
24
25
|
- !ruby/object:Gem::Dependency
|
25
26
|
name: bundler
|
@@ -218,15 +219,15 @@ dependencies:
|
|
218
219
|
prerelease: false
|
219
220
|
type: :development
|
220
221
|
description: |2
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
licenses that fall outside of the whitelist.
|
222
|
+
LicenseFinder works with your package managers to find
|
223
|
+
dependencies, detect the licenses of the packages in them, compare
|
224
|
+
those licenses against a user-defined whitelist, and give you an
|
225
|
+
actionable exception report.
|
226
226
|
email:
|
227
227
|
- commoncode@pivotalabs.com
|
228
228
|
executables:
|
229
229
|
- license_finder
|
230
|
+
- license_finder_pip.py
|
230
231
|
extensions: []
|
231
232
|
extra_rdoc_files: []
|
232
233
|
files:
|
@@ -237,8 +238,11 @@ files:
|
|
237
238
|
- CHANGELOG.rdoc
|
238
239
|
- Gemfile
|
239
240
|
- LICENSE
|
241
|
+
- README.md
|
240
242
|
- Rakefile
|
243
|
+
- TODO.md
|
241
244
|
- bin/license_finder
|
245
|
+
- bin/license_finder_pip.py
|
242
246
|
- db/migrate/201303290935_create_dependencies.rb
|
243
247
|
- db/migrate/201303291155_create_licenses.rb
|
244
248
|
- db/migrate/201303291402_create_approvals.rb
|
@@ -261,6 +265,7 @@ files:
|
|
261
265
|
- db/migrate/201403190028_add_manual_approvals.rb
|
262
266
|
- db/migrate/201403191419_add_timestamps_to_manual_approvals.rb
|
263
267
|
- db/migrate/201403191645_remove_license_aliases.rb
|
268
|
+
- db/migrate/201410031451_rename_dependency_license_name.rb
|
264
269
|
- features/cli.feature
|
265
270
|
- features/cocoapods_dependencies.feature
|
266
271
|
- features/configure_bundler_groups.feature
|
@@ -272,6 +277,7 @@ files:
|
|
272
277
|
- features/manually_approved.feature
|
273
278
|
- features/manually_assigned_license.feature
|
274
279
|
- features/maven_dependencies.feature
|
280
|
+
- features/multiple_licenses.feature
|
275
281
|
- features/node_dependencies.feature
|
276
282
|
- features/python_dependencies.feature
|
277
283
|
- features/report_csv.feature
|
@@ -287,6 +293,7 @@ files:
|
|
287
293
|
- features/step_definitions/manually_approved_steps.rb
|
288
294
|
- features/step_definitions/manually_assigned_license_steps.rb
|
289
295
|
- features/step_definitions/maven_steps.rb
|
296
|
+
- features/step_definitions/multiple_licenses_steps.rb
|
290
297
|
- features/step_definitions/node_steps.rb
|
291
298
|
- features/step_definitions/python_steps.rb
|
292
299
|
- features/step_definitions/report_csv_steps.rb
|
@@ -315,7 +322,9 @@ files:
|
|
315
322
|
- lib/license_finder/license/none_matcher.rb
|
316
323
|
- lib/license_finder/license/template.rb
|
317
324
|
- lib/license_finder/license/text.rb
|
325
|
+
- lib/license_finder/logger.rb
|
318
326
|
- lib/license_finder/package.rb
|
327
|
+
- lib/license_finder/package_manager.rb
|
319
328
|
- lib/license_finder/package_managers/bower.rb
|
320
329
|
- lib/license_finder/package_managers/bower_package.rb
|
321
330
|
- lib/license_finder/package_managers/bundler.rb
|
@@ -350,7 +359,6 @@ files:
|
|
350
359
|
- lib/templates/markdown_report.erb
|
351
360
|
- lib/templates/text_report.erb
|
352
361
|
- license_finder.gemspec
|
353
|
-
- readme.md
|
354
362
|
- release/gem_version.rb
|
355
363
|
- release/manual_instructions.md
|
356
364
|
- release/publish.sh
|
@@ -413,6 +421,8 @@ files:
|
|
413
421
|
- spec/lib/license_finder/yml_to_sql_spec.rb
|
414
422
|
- spec/lib/license_finder_spec.rb
|
415
423
|
- spec/spec_helper.rb
|
424
|
+
- spec/support/shared_examples_for_package.rb
|
425
|
+
- spec/support/shared_examples_for_package_manager.rb
|
416
426
|
- spec/support/stdout_helpers.rb
|
417
427
|
homepage: https://github.com/pivotal/LicenseFinder
|
418
428
|
licenses:
|
@@ -438,95 +448,4 @@ rubygems_version: 2.1.9
|
|
438
448
|
signing_key:
|
439
449
|
specification_version: 4
|
440
450
|
summary: Audit the OSS licenses of your application's dependencies.
|
441
|
-
test_files:
|
442
|
-
- features/cli.feature
|
443
|
-
- features/cocoapods_dependencies.feature
|
444
|
-
- features/configure_bundler_groups.feature
|
445
|
-
- features/configure_ignore_dependencies.feature
|
446
|
-
- features/configure_project_name.feature
|
447
|
-
- features/configure_whitelist.feature
|
448
|
-
- features/gradle_dependencies.feature
|
449
|
-
- features/manually_added.feature
|
450
|
-
- features/manually_approved.feature
|
451
|
-
- features/manually_assigned_license.feature
|
452
|
-
- features/maven_dependencies.feature
|
453
|
-
- features/node_dependencies.feature
|
454
|
-
- features/python_dependencies.feature
|
455
|
-
- features/report_csv.feature
|
456
|
-
- features/report_html.feature
|
457
|
-
- features/step_definitions/cli_steps.rb
|
458
|
-
- features/step_definitions/cocoapod_steps.rb
|
459
|
-
- features/step_definitions/configure_bundler_groups_steps.rb
|
460
|
-
- features/step_definitions/configure_ignore_dependencies.rb
|
461
|
-
- features/step_definitions/configure_project_name_steps.rb
|
462
|
-
- features/step_definitions/configure_whitelist_steps.rb
|
463
|
-
- features/step_definitions/gradle_steps.rb
|
464
|
-
- features/step_definitions/manually_added_steps.rb
|
465
|
-
- features/step_definitions/manually_approved_steps.rb
|
466
|
-
- features/step_definitions/manually_assigned_license_steps.rb
|
467
|
-
- features/step_definitions/maven_steps.rb
|
468
|
-
- features/step_definitions/node_steps.rb
|
469
|
-
- features/step_definitions/python_steps.rb
|
470
|
-
- features/step_definitions/report_csv_steps.rb
|
471
|
-
- features/step_definitions/report_html_steps.rb
|
472
|
-
- features/step_definitions/shared_steps.rb
|
473
|
-
- spec/fixtures/APACHE-2-LICENSE
|
474
|
-
- spec/fixtures/GPLv2
|
475
|
-
- spec/fixtures/ISC-LICENSE
|
476
|
-
- spec/fixtures/MIT-LICENSE
|
477
|
-
- spec/fixtures/MIT-LICENSE-with-varied-disclaimer
|
478
|
-
- spec/fixtures/Podfile
|
479
|
-
- spec/fixtures/README-with-MIT-LICENSE
|
480
|
-
- spec/fixtures/build.gradle
|
481
|
-
- spec/fixtures/license_directory/COPYING
|
482
|
-
- spec/fixtures/license_directory/LICENSE/BSD-2-Clause.txt
|
483
|
-
- spec/fixtures/license_directory/LICENSE/GPL-2.0.txt
|
484
|
-
- spec/fixtures/license_directory/LICENSE/LICENSE
|
485
|
-
- spec/fixtures/license_directory/LICENSE/MIT.txt
|
486
|
-
- spec/fixtures/license_directory/LICENSE/RUBY.txt
|
487
|
-
- spec/fixtures/license_names/COPYING.txt
|
488
|
-
- spec/fixtures/license_names/LICENSE
|
489
|
-
- spec/fixtures/license_names/Licence.rdoc
|
490
|
-
- spec/fixtures/license_names/Mit-License
|
491
|
-
- spec/fixtures/license_names/README.rdoc
|
492
|
-
- spec/fixtures/mit_licensed_gem/LICENSE
|
493
|
-
- spec/fixtures/nested_gem/vendor/LICENSE
|
494
|
-
- spec/fixtures/nested_readme/vendor/README
|
495
|
-
- spec/fixtures/other_licensed_gem/LICENSE
|
496
|
-
- spec/fixtures/pom.xml
|
497
|
-
- spec/fixtures/readme/Project ReadMe
|
498
|
-
- spec/fixtures/readme/README
|
499
|
-
- spec/fixtures/readme/Readme.markdown
|
500
|
-
- spec/fixtures/utf8_gem/README
|
501
|
-
- spec/lib/license_finder/cli_spec.rb
|
502
|
-
- spec/lib/license_finder/configuration_spec.rb
|
503
|
-
- spec/lib/license_finder/dependency_manager_spec.rb
|
504
|
-
- spec/lib/license_finder/license/definitions_spec.rb
|
505
|
-
- spec/lib/license_finder/license_spec.rb
|
506
|
-
- spec/lib/license_finder/package_managers/bower_package_spec.rb
|
507
|
-
- spec/lib/license_finder/package_managers/bower_spec.rb
|
508
|
-
- spec/lib/license_finder/package_managers/bundler_package_spec.rb
|
509
|
-
- spec/lib/license_finder/package_managers/bundler_spec.rb
|
510
|
-
- spec/lib/license_finder/package_managers/cocoa_pods_package_spec.rb
|
511
|
-
- spec/lib/license_finder/package_managers/cocoa_pods_spec.rb
|
512
|
-
- spec/lib/license_finder/package_managers/gradle_package_spec.rb
|
513
|
-
- spec/lib/license_finder/package_managers/gradle_spec.rb
|
514
|
-
- spec/lib/license_finder/package_managers/maven_package_spec.rb
|
515
|
-
- spec/lib/license_finder/package_managers/maven_spec.rb
|
516
|
-
- spec/lib/license_finder/package_managers/npm_package_spec.rb
|
517
|
-
- spec/lib/license_finder/package_managers/npm_spec.rb
|
518
|
-
- spec/lib/license_finder/package_managers/pip_package_spec.rb
|
519
|
-
- spec/lib/license_finder/package_managers/pip_spec.rb
|
520
|
-
- spec/lib/license_finder/package_saver_spec.rb
|
521
|
-
- spec/lib/license_finder/possible_license_file_spec.rb
|
522
|
-
- spec/lib/license_finder/possible_license_files_spec.rb
|
523
|
-
- spec/lib/license_finder/reports/detailed_text_report_spec.rb
|
524
|
-
- spec/lib/license_finder/reports/html_report_spec.rb
|
525
|
-
- spec/lib/license_finder/reports/markdown_report_spec.rb
|
526
|
-
- spec/lib/license_finder/reports/reporter_spec.rb
|
527
|
-
- spec/lib/license_finder/reports/text_report_spec.rb
|
528
|
-
- spec/lib/license_finder/tables/dependency_spec.rb
|
529
|
-
- spec/lib/license_finder/yml_to_sql_spec.rb
|
530
|
-
- spec/lib/license_finder_spec.rb
|
531
|
-
- spec/spec_helper.rb
|
532
|
-
- spec/support/stdout_helpers.rb
|
451
|
+
test_files: []
|
data/readme.md
DELETED
@@ -1,259 +0,0 @@
|
|
1
|
-
# License Finder
|
2
|
-
|
3
|
-
[![Build Status](https://secure.travis-ci.org/pivotal/LicenseFinder.png)](http://travis-ci.org/pivotal/LicenseFinder)
|
4
|
-
[![Code Climate](https://codeclimate.com/github/pivotal/LicenseFinder.png)](https://codeclimate.com/github/pivotal/LicenseFinder)
|
5
|
-
|
6
|
-
With bundler and other dependency management tools, it's easy for your project to depend on many packages. This decomposition is nice, but managing licenses becomes difficult. license_finder gathers info about the licenses of the packages in your project.
|
7
|
-
|
8
|
-
### Supported project types
|
9
|
-
- Ruby (+ Bundler)
|
10
|
-
- Python (+ Eggs)
|
11
|
-
- Node.js (+ Modules)
|
12
|
-
- Bower
|
13
|
-
|
14
|
-
### Experimental project types
|
15
|
-
- Java (+ Maven)
|
16
|
-
- Java (+ Gradle)
|
17
|
-
- Objective-C (+ CocoaPods)
|
18
|
-
|
19
|
-
## Installation
|
20
|
-
|
21
|
-
Add license_finder to your project's Gemfile and `bundle`:
|
22
|
-
|
23
|
-
```ruby
|
24
|
-
gem 'license_finder'
|
25
|
-
```
|
26
|
-
|
27
|
-
## Usage
|
28
|
-
|
29
|
-
|
30
|
-
license_finder will generate reports of action items - i.e., dependencies that do not fall within your license "whitelist".
|
31
|
-
|
32
|
-
```sh
|
33
|
-
$ license_finder
|
34
|
-
```
|
35
|
-
|
36
|
-
(Note) If you wish to run license_finder without the progress spinner use the --quiet option.
|
37
|
-
|
38
|
-
license_finder will include packages for all supported languages, as long as that language has a Gemfile/requirements.txt/package.json in the project directory.
|
39
|
-
|
40
|
-
On a brand new Rails project, you could expect license_finder to output something like the following
|
41
|
-
(assuming you whitelisted the MIT license -- see [Configuration](#configuration)):
|
42
|
-
|
43
|
-
```
|
44
|
-
Dependencies that need approval:
|
45
|
-
|
46
|
-
highline, 1.6.14, ruby
|
47
|
-
json, 1.7.5, ruby
|
48
|
-
mime-types, 1.19, ruby
|
49
|
-
rails, 3.2.8, other
|
50
|
-
rdoc, 3.12, other
|
51
|
-
rubyzip, 0.9.9, ruby
|
52
|
-
xml-simple, 1.1.1, other
|
53
|
-
```
|
54
|
-
|
55
|
-
The executable task will also write out a dependencies.db, dependencies.csv, and dependencies.html file (in the doc/
|
56
|
-
directory by default -- see [Configuration](#configuration)).
|
57
|
-
|
58
|
-
The latter two files are human readable reports that you could send to your non-technical business partners, lawyers, etc.
|
59
|
-
|
60
|
-
license_finder will also return a non-zero exit status if there are
|
61
|
-
unapproved dependencies. You could use this in a CI build, for example, to alert you whenever someone adds an
|
62
|
-
unapproved dependency to the project.
|
63
|
-
|
64
|
-
Run `license_finder help` to see other available commands.
|
65
|
-
|
66
|
-
### Manually setting licenses
|
67
|
-
|
68
|
-
When license_finder reports that a dependency's license is 'other', you should manually research what the actual
|
69
|
-
license is. When you have established the real license, you can record it with:
|
70
|
-
|
71
|
-
```sh
|
72
|
-
$ license_finder license MIT my_unknown_dependency
|
73
|
-
```
|
74
|
-
|
75
|
-
This command would assign the MIT license to the dependency `my_unknown_dependency`.
|
76
|
-
|
77
|
-
### Manually approving dependencies
|
78
|
-
|
79
|
-
Whenever you have a dependency that falls outside of your whitelist, license_finder will tell you.
|
80
|
-
If your business decides that this is an acceptable risk, you can manually approve the dependency by using the
|
81
|
-
`license_finder approve` command.
|
82
|
-
|
83
|
-
For example, lets assume you've only
|
84
|
-
whitelisted the "MIT" license in your `config/license_finder.yml`. You then add the `awesome_gpl_gem` to your Gemfile,
|
85
|
-
which we'll assume is licensed with the `GPL` license. You then run `license_finder` and see
|
86
|
-
the gem listed in the output:
|
87
|
-
|
88
|
-
```sh
|
89
|
-
awesome_gpl_gem, 1.0.0, GPL
|
90
|
-
```
|
91
|
-
|
92
|
-
Your business tells you that in this case, it's acceptable to use this gem. You now run:
|
93
|
-
|
94
|
-
```sh
|
95
|
-
$ license_finder approve awesome_gpl_gem
|
96
|
-
```
|
97
|
-
|
98
|
-
If you rerun license_finder, you should no longer see `awesome_gpl_gem` in the output.
|
99
|
-
|
100
|
-
To record who approved the dependency and why:
|
101
|
-
|
102
|
-
```sh
|
103
|
-
$ license_finder approve awesome_gpl_gem --approver CTO --message "Go ahead"
|
104
|
-
```
|
105
|
-
|
106
|
-
### Manually managing dependencies
|
107
|
-
|
108
|
-
license_finder can track dependencies that your package managers don't know about (JS libraries that don't
|
109
|
-
appear in your Gemfile/requirements.txt/package.json, etc.)
|
110
|
-
|
111
|
-
```sh
|
112
|
-
$ license_finder dependencies add MIT my_js_dep 0.1.2
|
113
|
-
```
|
114
|
-
|
115
|
-
To automatically approve an unmanaged dependency when you add it, use:
|
116
|
-
|
117
|
-
```sh
|
118
|
-
$ license_finder dependencies add MIT my_js_dep 0.1.2 --approve
|
119
|
-
```
|
120
|
-
|
121
|
-
To record who approved the dependency when you add it, use:
|
122
|
-
|
123
|
-
```sh
|
124
|
-
$ license_finder dependencies add MIT my_js_dep 0.1.2 --approve --approver CTO --message "Go ahead"
|
125
|
-
```
|
126
|
-
|
127
|
-
The version is optional. Run `license_finder dependencies help` for additional documentation about
|
128
|
-
managing these dependencies.
|
129
|
-
|
130
|
-
license_finder cannot automatically detect when one of these dependencies has been removed from your
|
131
|
-
project, so you can use:
|
132
|
-
|
133
|
-
```sh
|
134
|
-
$ license_finder dependencies remove my_js_dep
|
135
|
-
```
|
136
|
-
|
137
|
-
|
138
|
-
## Configuration
|
139
|
-
|
140
|
-
The first time you run license_finder it will create a default configuration file `./config/license_finder.yml`:
|
141
|
-
|
142
|
-
```yaml
|
143
|
-
---
|
144
|
-
whitelist:
|
145
|
-
#- MIT
|
146
|
-
#- Apache 2.0
|
147
|
-
ignore_groups:
|
148
|
-
#- test
|
149
|
-
#- development
|
150
|
-
ignore_dependencies:
|
151
|
-
#- bundler
|
152
|
-
dependencies_file_dir: './doc/'
|
153
|
-
project_name: My Project Name
|
154
|
-
gradle_command: # only meaningful if used with a Java/gradle project. Defaults to "gradle".
|
155
|
-
```
|
156
|
-
|
157
|
-
By modifying this file, you can configure license_finder's behavior.
|
158
|
-
|
159
|
-
- Licenses in the `whitelist` will be automatically approved.
|
160
|
-
- You can exclude test or development dependencies by setting `ignore_groups`. (Currently this only
|
161
|
-
works for Bundler.)
|
162
|
-
- You can exclude specific dependencies by setting `ignore_dependencies`.
|
163
|
-
(Think carefully before adding dependencies to this list. A likely item to exclude is
|
164
|
-
bundler itself, to avoid noisy changes to the doc files when different people run
|
165
|
-
license_finder with different versions of bundler.)
|
166
|
-
- You can store the license database and text files in another directory by changing
|
167
|
-
`dependencies_file_dir`. And the `project_name`, which defaults to your working
|
168
|
-
directory, appears in the [HTML report](#html-report).
|
169
|
-
- See below for explanation of "gradle_command".
|
170
|
-
|
171
|
-
You can also configure license_finder through the command line. See
|
172
|
-
`license_finder whitelist help`, `license_finder ignored_bundler_groups help`
|
173
|
-
and `license_finder project_name help` for more details.
|
174
|
-
|
175
|
-
### For gradle projects
|
176
|
-
|
177
|
-
You need to install the license gradle plugin: [https://github.com/hierynomus/license-gradle-plugin](https://github.com/hierynomus/license-gradle-plugin)
|
178
|
-
|
179
|
-
LicenseFinder assumes that gradle is on your shell's include path and is invoked by just calling `gradle`. If you invoke gradle some other way (say, with a custom `gradlew` script), set the `gradle_command` option in your project's `license_finder.yml`:
|
180
|
-
|
181
|
-
```yaml
|
182
|
-
# … other configuration …
|
183
|
-
|
184
|
-
gradle_command: ./gradlew
|
185
|
-
```
|
186
|
-
|
187
|
-
By default, license_finder will report on gradle's "runtime" dependencies. If you want to generate a report for some other dependency configuration (e.g. Android projects will sometimes specify their meaningful dependencies in the "compile" group), you can specify it in your project's `build.gradle` like so:
|
188
|
-
|
189
|
-
```
|
190
|
-
// Must come *after* the 'apply plugin: license' line
|
191
|
-
|
192
|
-
downloadLicenses {
|
193
|
-
dependencyConfiguration "compile"
|
194
|
-
}
|
195
|
-
```
|
196
|
-
|
197
|
-
## HTML Report
|
198
|
-
|
199
|
-
The HTML report generated by license_finder shows a summary of the project's dependencies
|
200
|
-
and dependencies which need to be approved. The project name at the top of the report can
|
201
|
-
be set in `config/license_finder.yml`.
|
202
|
-
|
203
|
-
## Upgrade for pre 0.8.0 users
|
204
|
-
|
205
|
-
If you wish to cleanup your root directory you can run:
|
206
|
-
|
207
|
-
```sh
|
208
|
-
$ license_finder move
|
209
|
-
```
|
210
|
-
|
211
|
-
This will move your `dependencies.*` files to the doc/ directory and update the config.
|
212
|
-
|
213
|
-
|
214
|
-
## Compatibility
|
215
|
-
|
216
|
-
license_finder is compatible with ruby >= 1.9, and jruby.
|
217
|
-
|
218
|
-
|
219
|
-
## A note to gem authors / maintainers
|
220
|
-
|
221
|
-
For the good of humanity, please add a license to your gemspec!
|
222
|
-
|
223
|
-
```ruby
|
224
|
-
Gem::Specification.new do |s|
|
225
|
-
s.name = "my_great_gem"
|
226
|
-
s.license = "MIT"
|
227
|
-
end
|
228
|
-
```
|
229
|
-
|
230
|
-
And add a `LICENSE` file to your gem that contains your license text.
|
231
|
-
|
232
|
-
|
233
|
-
## Support
|
234
|
-
|
235
|
-
* Send an email to the list: [license-finder@googlegroups.com](license-finder@googlegroups.com)
|
236
|
-
* View the project backlog at Pivotal Tracker: [https://www.pivotaltracker.com/s/projects/234851](https://www.pivotaltracker.com/s/projects/234851)
|
237
|
-
|
238
|
-
|
239
|
-
## Contributing
|
240
|
-
|
241
|
-
* Fork the project
|
242
|
-
* Create a feature branch
|
243
|
-
* Make your feature addition or bug fix (with tests)
|
244
|
-
* Rebase on top of master
|
245
|
-
* Send a pull request
|
246
|
-
|
247
|
-
To successfully run the test suite, you will need node.js, python, pip and gradle installed.
|
248
|
-
|
249
|
-
For the python dependency tests you will want to have virtualenv installed. See: http://hackercodex.com/guide/python-development-environment-on-mac-osx/#virtualenv (This will allow pip to work without sudo)
|
250
|
-
|
251
|
-
If you're running the test suite with jruby, you're probably going to want to set up these environment variables:
|
252
|
-
|
253
|
-
```
|
254
|
-
JAVA_OPTS='-client -XX:+TieredCompilation -XX:TieredStopAtLevel=1' JRUBY_OPTS='-J-Djruby.launch.inproc=true'
|
255
|
-
```
|
256
|
-
|
257
|
-
## License
|
258
|
-
|
259
|
-
LicenseFinder is released under the MIT License. http://www.opensource.org/licenses/mit-license
|