license_finder 1.2 → 2.0.0.rc2
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/.travis.yml +2 -1
- data/CHANGELOG.rdoc +27 -0
- data/CONTRIBUTING.md +38 -0
- data/README.md +139 -159
- data/Rakefile +17 -13
- data/features/features/cli_spec.rb +43 -0
- data/features/features/configure/add_dependencies_spec.rb +37 -0
- data/features/features/configure/approve_dependencies_spec.rb +30 -0
- data/features/features/configure/assign_licenses_spec.rb +20 -0
- data/features/features/configure/ignore_dependencies_spec.rb +35 -0
- data/features/features/configure/ignore_groups_spec.rb +31 -0
- data/features/features/configure/name_project_spec.rb +32 -0
- data/features/features/configure/whitelist_licenses_spec.rb +40 -0
- data/features/features/package_managers/bower_spec.rb +14 -0
- data/features/features/package_managers/cocoapods_spec.rb +14 -0
- data/features/features/package_managers/gradle_spec.rb +14 -0
- data/features/features/package_managers/maven_spec.rb +14 -0
- data/features/features/package_managers/npm_spec.rb +14 -0
- data/features/features/package_managers/pip_spec.rb +14 -0
- data/features/features/report/csv_spec.rb +17 -0
- data/features/features/report/html_spec.rb +50 -0
- data/{spec → features}/fixtures/Podfile +0 -0
- data/{spec → features}/fixtures/build.gradle +0 -0
- data/{spec → features}/fixtures/pom.xml +0 -0
- data/features/support/testing_dsl.rb +295 -0
- data/lib/license_finder.rb +16 -50
- data/lib/license_finder/cli.rb +13 -253
- data/lib/license_finder/cli/approvals.rb +26 -0
- data/lib/license_finder/cli/base.rb +20 -0
- data/lib/license_finder/cli/dependencies.rb +39 -0
- data/lib/license_finder/cli/ignored_dependencies.rb +30 -0
- data/lib/license_finder/cli/ignored_groups.rb +30 -0
- data/lib/license_finder/cli/licenses.rb +24 -0
- data/lib/license_finder/cli/main.rb +82 -0
- data/lib/license_finder/cli/makes_decisions.rb +48 -0
- data/lib/license_finder/cli/patched_thor.rb +34 -0
- data/lib/license_finder/cli/project_name.rb +31 -0
- data/lib/license_finder/cli/whitelist.rb +32 -0
- data/lib/license_finder/configuration.rb +14 -145
- data/lib/license_finder/decision_applier.rb +46 -0
- data/lib/license_finder/decisions.rb +174 -0
- data/lib/license_finder/license.rb +13 -32
- data/lib/license_finder/license/definitions.rb +15 -13
- data/lib/license_finder/license/template.rb +1 -1
- data/lib/{data/licenses → license_finder/license/templates}/Apache2.txt +0 -0
- data/lib/{data/licenses → license_finder/license/templates}/BSD.txt +0 -0
- data/lib/{data/licenses → license_finder/license/templates}/GPLv2.txt +0 -0
- data/lib/{data/licenses → license_finder/license/templates}/ISC.txt +0 -0
- data/lib/{data/licenses → license_finder/license/templates}/LGPL.txt +0 -0
- data/lib/{data/licenses → license_finder/license/templates}/MIT.txt +0 -0
- data/lib/{data/licenses → license_finder/license/templates}/NewBSD.txt +0 -0
- data/lib/{data/licenses → license_finder/license/templates}/Python.txt +0 -0
- data/lib/{data/licenses → license_finder/license/templates}/Ruby.txt +0 -0
- data/lib/{data/licenses → license_finder/license/templates}/SimplifiedBSD.txt +0 -0
- data/lib/license_finder/package.rb +77 -7
- data/lib/license_finder/package_manager.rb +43 -0
- data/lib/license_finder/package_managers/bower.rb +1 -1
- data/lib/license_finder/package_managers/bower_package.rb +23 -44
- data/lib/license_finder/package_managers/bundler.rb +4 -7
- data/lib/license_finder/package_managers/bundler_package.rb +14 -31
- data/lib/license_finder/package_managers/cocoa_pods.rb +1 -1
- data/lib/license_finder/package_managers/cocoa_pods_package.rb +2 -10
- data/lib/license_finder/package_managers/gradle.rb +6 -2
- data/lib/license_finder/package_managers/gradle_package.rb +6 -30
- data/lib/license_finder/package_managers/manual_package.rb +25 -0
- data/lib/license_finder/package_managers/maven_package.rb +8 -37
- data/lib/license_finder/package_managers/npm.rb +16 -4
- data/lib/license_finder/package_managers/npm_package.rb +12 -43
- data/lib/license_finder/package_managers/pip_package.rb +17 -37
- data/lib/license_finder/platform.rb +0 -16
- data/lib/license_finder/possible_license_file.rb +9 -14
- data/lib/license_finder/possible_license_files.rb +1 -5
- data/lib/license_finder/report.rb +26 -0
- data/lib/license_finder/reports/csv_report.rb +58 -0
- data/lib/license_finder/reports/erb_report.rb +61 -0
- data/lib/license_finder/reports/html_report.rb +10 -1
- data/lib/license_finder/reports/markdown_report.rb +7 -1
- data/lib/license_finder/reports/templates/bootstrap.css +9 -0
- data/lib/license_finder/reports/templates/html_report.erb +105 -0
- data/lib/{templates → license_finder/reports/templates}/markdown_report.erb +7 -7
- data/lib/license_finder/reports/text_report.rb +5 -3
- data/lib/license_finder/version.rb +3 -0
- data/license_finder.gemspec +2 -6
- data/release/instructions.md +8 -0
- data/spec/feature_helper.rb +11 -0
- data/spec/fixtures/config/license_finder.yml +3 -0
- data/spec/fixtures/{nested_readme/vendor/README → license_directory/LICENSE/Apache.txt} +0 -0
- data/spec/lib/license_finder/cli/approvals_spec.rb +63 -0
- data/spec/lib/license_finder/cli/dependencies_spec.rb +59 -0
- data/spec/lib/license_finder/cli/ignored_dependencies_spec.rb +47 -0
- data/spec/lib/license_finder/cli/ignored_groups_spec.rb +40 -0
- data/spec/lib/license_finder/cli/licenses_spec.rb +60 -0
- data/spec/lib/license_finder/cli/main_spec.rb +110 -0
- data/spec/lib/license_finder/cli/project_name_spec.rb +40 -0
- data/spec/lib/license_finder/cli/whitelist_spec.rb +58 -0
- data/spec/lib/license_finder/configuration_spec.rb +46 -191
- data/spec/lib/license_finder/decision_applier_spec.rb +65 -0
- data/spec/lib/license_finder/decisions_spec.rb +347 -0
- data/spec/lib/license_finder/license/definitions_spec.rb +1 -7
- data/spec/lib/license_finder/license_spec.rb +2 -30
- data/spec/lib/license_finder/package_manager_spec.rb +22 -0
- data/spec/lib/license_finder/package_managers/bower_package_spec.rb +33 -66
- data/spec/lib/license_finder/package_managers/bundler_package_spec.rb +7 -71
- data/spec/lib/license_finder/package_managers/cocoa_pods_package_spec.rb +8 -11
- data/spec/lib/license_finder/package_managers/gradle_package_spec.rb +28 -32
- data/spec/lib/license_finder/package_managers/gradle_spec.rb +18 -23
- data/spec/lib/license_finder/package_managers/maven_package_spec.rb +20 -43
- data/spec/lib/license_finder/package_managers/npm_package_spec.rb +22 -73
- data/spec/lib/license_finder/package_managers/npm_spec.rb +18 -21
- data/spec/lib/license_finder/package_managers/pip_package_spec.rb +24 -63
- data/spec/lib/license_finder/package_spec.rb +121 -0
- data/spec/lib/license_finder/possible_license_file_spec.rb +2 -3
- data/spec/lib/license_finder/possible_license_files_spec.rb +18 -22
- data/spec/lib/license_finder/reports/csv_report_spec.rb +26 -0
- data/spec/lib/license_finder/reports/html_report_spec.rb +39 -22
- data/spec/lib/license_finder/reports/markdown_report_spec.rb +8 -16
- data/spec/lib/license_finder/reports/text_report_spec.rb +21 -12
- data/spec/spec_helper.rb +1 -4
- data/spec/support/shared_examples_for_package.rb +0 -11
- data/spec/support/shared_examples_for_package_manager.rb +1 -0
- data/spec/support/stdout_helpers.rb +4 -11
- metadata +73 -158
- data/db/migrate/201303290935_create_dependencies.rb +0 -14
- data/db/migrate/201303291155_create_licenses.rb +0 -13
- data/db/migrate/201303291402_create_approvals.rb +0 -13
- data/db/migrate/201303291456_create_ancestries.rb +0 -9
- data/db/migrate/201303291519_create_bundler_groups.rb +0 -13
- data/db/migrate/201303291720_move_manual_from_approvals_to_licenses.rb +0 -11
- data/db/migrate/201303291753_allow_null_license_names.rb +0 -7
- data/db/migrate/201304011027_allow_null_dependency_version.rb +0 -7
- data/db/migrate/201304020947_change_table_name_licenses_to_license_aliases.rb +0 -5
- data/db/migrate/201304181524_add_manual_to_dependencies.rb +0 -7
- data/db/migrate/201307250917_add_license_manual_to_dependencies.rb +0 -7
- data/db/migrate/201307251004_data_fix_manual_licenses.rb +0 -15
- data/db/migrate/201307251107_reassociate_license.rb +0 -23
- data/db/migrate/201307251340_remove_manual_from_license_aliases.rb +0 -7
- data/db/migrate/201311192002_add_manually_approved_to_dependencies.rb +0 -7
- data/db/migrate/201311192003_reassociate_manual_approval.rb +0 -13
- data/db/migrate/201311192010_drop_approvals.rb +0 -5
- data/db/migrate/201401302113_re_reassociate_license.rb +0 -23
- data/db/migrate/201403181732_rename_manual_fields.rb +0 -10
- data/db/migrate/201403190028_add_manual_approvals.rb +0 -22
- data/db/migrate/201403191419_add_timestamps_to_manual_approvals.rb +0 -15
- data/db/migrate/201403191645_remove_license_aliases.rb +0 -23
- data/db/migrate/201410031451_rename_dependency_license_name.rb +0 -6
- data/features/cli.feature +0 -37
- data/features/cocoapods_dependencies.feature +0 -10
- data/features/configure_bundler_groups.feature +0 -23
- data/features/configure_ignore_dependencies.feature +0 -16
- data/features/configure_project_name.feature +0 -10
- data/features/configure_whitelist.feature +0 -27
- data/features/gradle_dependencies.feature +0 -9
- data/features/manually_added.feature +0 -19
- data/features/manually_approved.feature +0 -10
- data/features/manually_assigned_license.feature +0 -16
- data/features/maven_dependencies.feature +0 -9
- data/features/multiple_licenses.feature +0 -9
- data/features/node_dependencies.feature +0 -9
- data/features/python_dependencies.feature +0 -9
- data/features/report_csv.feature +0 -15
- data/features/report_html.feature +0 -24
- data/features/step_definitions/cli_steps.rb +0 -51
- data/features/step_definitions/cocoapod_steps.rb +0 -8
- data/features/step_definitions/configure_bundler_groups_steps.rb +0 -30
- data/features/step_definitions/configure_ignore_dependencies.rb +0 -35
- data/features/step_definitions/configure_project_name_steps.rb +0 -3
- data/features/step_definitions/configure_whitelist_steps.rb +0 -45
- data/features/step_definitions/gradle_steps.rb +0 -8
- data/features/step_definitions/manually_added_steps.rb +0 -28
- data/features/step_definitions/manually_approved_steps.rb +0 -24
- data/features/step_definitions/manually_assigned_license_steps.rb +0 -34
- data/features/step_definitions/maven_steps.rb +0 -8
- data/features/step_definitions/multiple_licenses_steps.rb +0 -14
- data/features/step_definitions/node_steps.rb +0 -8
- data/features/step_definitions/python_steps.rb +0 -8
- data/features/step_definitions/report_csv_steps.rb +0 -20
- data/features/step_definitions/report_html_steps.rb +0 -60
- data/features/step_definitions/shared_steps.rb +0 -307
- data/lib/data/license_finder.example.yml +0 -12
- data/lib/license_finder/dependency_manager.rb +0 -92
- data/lib/license_finder/package_saver.rb +0 -44
- data/lib/license_finder/reports/dependency_report.rb +0 -34
- data/lib/license_finder/reports/detailed_text_report.rb +0 -19
- data/lib/license_finder/reports/formatted_report.rb +0 -40
- data/lib/license_finder/reports/reporter.rb +0 -27
- data/lib/license_finder/tables.rb +0 -9
- data/lib/license_finder/tables/bundler_group.rb +0 -7
- data/lib/license_finder/tables/dependency.rb +0 -113
- data/lib/license_finder/tables/manual_approval.rb +0 -13
- data/lib/license_finder/yml_to_sql.rb +0 -117
- data/lib/templates/html_report.erb +0 -117
- data/lib/templates/text_report.erb +0 -3
- data/release/gem_version.rb +0 -3
- data/release/manual_instructions.md +0 -29
- data/release/publish.sh +0 -32
- data/spec/fixtures/APACHE-2-LICENSE +0 -202
- data/spec/fixtures/GPLv2 +0 -339
- data/spec/fixtures/ISC-LICENSE +0 -10
- data/spec/fixtures/MIT-LICENSE +0 -22
- data/spec/fixtures/MIT-LICENSE-with-varied-disclaimer +0 -22
- data/spec/fixtures/README-with-MIT-LICENSE +0 -222
- data/spec/fixtures/license_directory/LICENSE/BSD-2-Clause.txt +0 -25
- data/spec/fixtures/license_directory/LICENSE/GPL-2.0.txt +0 -339
- data/spec/fixtures/license_directory/LICENSE/LICENSE +0 -191
- data/spec/fixtures/license_directory/LICENSE/MIT.txt +0 -21
- data/spec/fixtures/license_directory/LICENSE/RUBY.txt +0 -60
- data/spec/fixtures/mit_licensed_gem/LICENSE +0 -22
- data/spec/fixtures/other_licensed_gem/LICENSE +0 -3
- data/spec/fixtures/readme/Project ReadMe b/data/spec/fixtures/readme/Project → ReadMe +0 -0
- data/spec/fixtures/readme/README +0 -0
- data/spec/fixtures/readme/Readme.markdown +0 -0
- data/spec/lib/license_finder/cli_spec.rb +0 -298
- data/spec/lib/license_finder/dependency_manager_spec.rb +0 -198
- data/spec/lib/license_finder/package_saver_spec.rb +0 -82
- data/spec/lib/license_finder/reports/detailed_text_report_spec.rb +0 -33
- data/spec/lib/license_finder/reports/reporter_spec.rb +0 -33
- data/spec/lib/license_finder/tables/dependency_spec.rb +0 -196
- data/spec/lib/license_finder/yml_to_sql_spec.rb +0 -123
- data/spec/lib/license_finder_spec.rb +0 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 272a63170ce7ba95ee485b5810c3d9bf525a0326
|
|
4
|
+
data.tar.gz: f6e7364050de7afec4d9ffb95f3e1d20cadb780f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3207fee7de7b192aac50c45208931002322a0dbc8fb24e30adb072a28dbacc6e11567c210895bd88163f65de2df0095db2ba7d39a75966b9ad636ae2d0b3c1d6
|
|
7
|
+
data.tar.gz: 5dd187332ae0d7d61ebde94a3610c43b8a81ac60332bf963b3dab5518950f2ae7e6036c58d6570cd864d7bb038f2e3e96b70eb457686748eb31db33f0892e98a
|
data/.travis.yml
CHANGED
data/CHANGELOG.rdoc
CHANGED
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
=== 2.0.0 / unreleased
|
|
2
|
+
|
|
3
|
+
* Features
|
|
4
|
+
|
|
5
|
+
* Stores (in an append-only YAML file) every decision that has been made
|
|
6
|
+
about a project's dependencies, even if a decision was later reverted.
|
|
7
|
+
* Stores timestamps and other metadata (who, why) about each decision.
|
|
8
|
+
* When needed, applies those decisions to the list of packages currently
|
|
9
|
+
reported by the package managers.
|
|
10
|
+
* The CLI never writes HTML or CSV reports to the file system, only to
|
|
11
|
+
STDOUT. So, users have more choice over which reports to generate, when to
|
|
12
|
+
generate them, and where to put them. See `license_finder report`.
|
|
13
|
+
* Removed dependencies on sqlite and sequel.
|
|
14
|
+
* Minimized the responsibilities of the configuration YAML file. The CLI
|
|
15
|
+
never updates the config file, which means less futzing with the file
|
|
16
|
+
system. Makes room for replacing the config file with command line options.
|
|
17
|
+
|
|
18
|
+
* Bugfixes
|
|
19
|
+
|
|
20
|
+
* `license_finder` does not write anything to the file system, #94, #114, #117
|
|
21
|
+
|
|
22
|
+
=== 1.2.1 / unreleased
|
|
23
|
+
|
|
24
|
+
* Features
|
|
25
|
+
|
|
26
|
+
* Can list dependencies that were added manually
|
|
27
|
+
|
|
1
28
|
=== 1.2 / 2014-11-10
|
|
2
29
|
|
|
3
30
|
* Features
|
data/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
## TL;DR
|
|
4
|
+
|
|
5
|
+
* Fork the project from https://github.com/pivotal/LicenseFinder
|
|
6
|
+
* Create a feature branch.
|
|
7
|
+
* Make your feature addition or bug fix. Please make sure there is appropriate test coverage.
|
|
8
|
+
* Rebase on top of master.
|
|
9
|
+
* Send a pull request.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## Development Dependencies
|
|
13
|
+
|
|
14
|
+
To successfully run the test suite, you will need node.js, python, pip
|
|
15
|
+
and gradle installed. If you run `rake check_dependencies`, you'll see
|
|
16
|
+
exactly what you're missing.
|
|
17
|
+
|
|
18
|
+
### Python
|
|
19
|
+
|
|
20
|
+
For the python dependency tests you will want to have virtualenv
|
|
21
|
+
installed, to allow pip to work without sudo. For more details, see
|
|
22
|
+
this [post on virtualenv][].
|
|
23
|
+
|
|
24
|
+
[post on virtualenv]: http://hackercodex.com/guide/python-development-environment-on-mac-osx/#virtualenv
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### JRuby
|
|
28
|
+
|
|
29
|
+
If you're running the test suite with jruby, you're probably going to
|
|
30
|
+
want to set up some environment variables:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
JAVA_OPTS='-client -XX:+TieredCompilation -XX:TieredStopAtLevel=1' JRUBY_OPTS='-J-Djruby.launch.inproc=true'
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Gradle
|
|
37
|
+
|
|
38
|
+
You'll need a gradle version >= 1.8.
|
data/README.md
CHANGED
|
@@ -21,7 +21,7 @@ report.
|
|
|
21
21
|
* Node.js (via `npm`)
|
|
22
22
|
* Bower
|
|
23
23
|
|
|
24
|
-
### Experimental project types
|
|
24
|
+
### Experimental project types
|
|
25
25
|
|
|
26
26
|
* Java (via `maven`)
|
|
27
27
|
* Java (via `gradle`)
|
|
@@ -46,13 +46,12 @@ gem 'license_finder', :group => :development
|
|
|
46
46
|
|
|
47
47
|
This approach helps you remember to install `license_finder`, but can
|
|
48
48
|
pull in unwanted dependencies, including `bundler`. To mitigate this
|
|
49
|
-
problem, see
|
|
49
|
+
problem, see [Excluding Dependencies](#excluding-dependencies).
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
## Usage
|
|
53
53
|
|
|
54
|
-
`license_finder` will
|
|
55
|
-
dependencies that do not fall within your license "whitelist".
|
|
54
|
+
The first time you run `license_finder` it will output a report of all your project's packages.
|
|
56
55
|
|
|
57
56
|
```sh
|
|
58
57
|
$ license_finder
|
|
@@ -64,6 +63,12 @@ Or, if you installed with bundler:
|
|
|
64
63
|
$ bundle exec license_finder
|
|
65
64
|
```
|
|
66
65
|
|
|
66
|
+
The output will report that none of your packages have been
|
|
67
|
+
approved. Over time you will tell `license_finder` which packages
|
|
68
|
+
are approved, so when you run this command in the future, it will
|
|
69
|
+
report current action items; i.e., packages that are new or have
|
|
70
|
+
never been approved.
|
|
71
|
+
|
|
67
72
|
If you don't wish to see progressive output "dots", use the `--quiet`
|
|
68
73
|
option.
|
|
69
74
|
|
|
@@ -94,19 +99,80 @@ languages, as long as that language has a package definition in the project dire
|
|
|
94
99
|
|
|
95
100
|
### Continuous Integration
|
|
96
101
|
|
|
97
|
-
`license_finder` will
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
102
|
+
`license_finder` will return a non-zero exit status if there are unapproved
|
|
103
|
+
dependencies. This can be useful for inclusion in a CI environment to alert you
|
|
104
|
+
if someone adds an unapproved dependency to the project.
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
## Approving Dependencies
|
|
108
|
+
|
|
109
|
+
`license_finder` will inform you whenever you have an unapproved dependency.
|
|
110
|
+
If your business decides this is an acceptable risk, the easiest way to approve
|
|
111
|
+
the dependency is by running `license_finder approval add`.
|
|
112
|
+
|
|
113
|
+
For example, let's assume you've added the `awesome_gpl_gem`
|
|
114
|
+
to your Gemfile, which `license_finder` reports is unapproved:
|
|
115
|
+
|
|
116
|
+
```sh
|
|
117
|
+
$ license_finder
|
|
118
|
+
Dependencies that need approval:
|
|
119
|
+
awesome_gpl_gem, 1.0.0, GPL
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Your business tells you that in this case, it's acceptable to use this
|
|
123
|
+
gem. You now run:
|
|
124
|
+
|
|
125
|
+
```sh
|
|
126
|
+
$ license_finder approval add awesome_gpl_gem
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
If you rerun `license_finder`, you should no longer see
|
|
130
|
+
`awesome_gpl_gem` in the output.
|
|
131
|
+
|
|
132
|
+
To record who approved the dependency and why:
|
|
133
|
+
|
|
134
|
+
```sh
|
|
135
|
+
$ license_finder approval add awesome_gpl_gem --who CTO --why "Go ahead"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Whitelisting
|
|
139
|
+
|
|
140
|
+
Approving packages one-by-one can be tedious. Usually your business has
|
|
141
|
+
blanket policies about which packages are approved. To tell `license_finder`
|
|
142
|
+
that any package with the MIT license should be approved, run:
|
|
143
|
+
|
|
144
|
+
``` sh
|
|
145
|
+
$ license_finder whitelist add MIT
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Any current or future packages with the MIT license will be excluded from the
|
|
149
|
+
output of `license_finder`.
|
|
150
|
+
|
|
151
|
+
You can also record `--who` and `--why` when changing the whitelist, or making
|
|
152
|
+
any other decision about your project.
|
|
101
153
|
|
|
102
154
|
|
|
103
155
|
## Output and Artifacts
|
|
104
156
|
|
|
105
|
-
###
|
|
157
|
+
### Decisions file
|
|
158
|
+
|
|
159
|
+
Any decisions you make about approvals will be recorded in a YAML file. Be
|
|
160
|
+
default, `license_finder` expects it to be named
|
|
161
|
+
`doc/dependency_decisions.yml`. All commands can be passed `--decisions_file`
|
|
162
|
+
to override this location. See [Configuration](#configuration) for other
|
|
163
|
+
options.
|
|
164
|
+
|
|
165
|
+
This file must be committed to version control. Rarely, you will have to
|
|
166
|
+
manually resolve conflicts in it. In this situation, keep in mind that each
|
|
167
|
+
decision has an associated timestamp, and the decisions are processed
|
|
168
|
+
top-to-bottom, with later decisions overwriting or appending to earlier
|
|
169
|
+
decisions.
|
|
170
|
+
|
|
171
|
+
### Output from `action_items`
|
|
106
172
|
|
|
107
|
-
|
|
108
|
-
something like the following
|
|
109
|
-
|
|
173
|
+
You could expect `license_finder`, which is an alias for `license_finder
|
|
174
|
+
action_items` to output something like the following on a Rails project where
|
|
175
|
+
MIT had been whitelisted:
|
|
110
176
|
|
|
111
177
|
```
|
|
112
178
|
Dependencies that need approval:
|
|
@@ -114,77 +180,46 @@ Dependencies that need approval:
|
|
|
114
180
|
highline, 1.6.14, ruby
|
|
115
181
|
json, 1.7.5, ruby
|
|
116
182
|
mime-types, 1.19, ruby
|
|
117
|
-
rails, 3.2.8,
|
|
118
|
-
rdoc, 3.12,
|
|
183
|
+
rails, 3.2.8, unknown
|
|
184
|
+
rdoc, 3.12, unknown
|
|
119
185
|
rubyzip, 0.9.9, ruby
|
|
120
|
-
xml-simple, 1.1.1,
|
|
186
|
+
xml-simple, 1.1.1, unknown
|
|
121
187
|
```
|
|
122
188
|
|
|
123
|
-
|
|
189
|
+
You can customize the format of the output in the same way that you customize
|
|
190
|
+
[output from `report`](#output-from-report).
|
|
124
191
|
|
|
125
|
-
|
|
126
|
-
`dependencies.csv`, and `dependencies.html` file (in the `doc/`
|
|
127
|
-
directory by default -- see [Configuration](#configuration)).
|
|
192
|
+
### Output from `report`
|
|
128
193
|
|
|
129
|
-
The
|
|
130
|
-
your non-technical business partners, lawyers, etc.
|
|
194
|
+
The `license_finder report` command will output human-readable reports that you
|
|
195
|
+
could send to your non-technical business partners, lawyers, etc. You can
|
|
196
|
+
choose the format of the report (text, csv, html or markdown); see
|
|
197
|
+
`license_finder --help report` for details. The output is sent to STDOUT, so
|
|
198
|
+
you can save the reports wherever you want them. You can commit them to
|
|
199
|
+
version control if you like.
|
|
131
200
|
|
|
132
|
-
The HTML report generated by `license_finder
|
|
133
|
-
project's dependencies and
|
|
134
|
-
project name at the top of the report can be set
|
|
135
|
-
`
|
|
201
|
+
The HTML report generated by `license_finder report --format html` summarizes
|
|
202
|
+
all of your project's dependencies and includes information about which need to
|
|
203
|
+
be approved. The project name at the top of the report can be set with
|
|
204
|
+
`license_finder project_name add`.
|
|
136
205
|
|
|
137
206
|
|
|
138
207
|
## Manual Intervention
|
|
139
208
|
|
|
140
209
|
### Setting Licenses
|
|
141
210
|
|
|
142
|
-
When `license_finder` reports that a dependency's license is '
|
|
211
|
+
When `license_finder` reports that a dependency's license is 'unknown',
|
|
143
212
|
you should manually research what the actual license is. When you
|
|
144
213
|
have established the real license, you can record it with:
|
|
145
214
|
|
|
146
215
|
```sh
|
|
147
|
-
$ license_finder
|
|
216
|
+
$ license_finder licenses add my_unknown_dependency MIT
|
|
148
217
|
```
|
|
149
218
|
|
|
150
219
|
This command would assign the MIT license to the dependency
|
|
151
220
|
`my_unknown_dependency`.
|
|
152
221
|
|
|
153
222
|
|
|
154
|
-
### Approving Dependencies
|
|
155
|
-
|
|
156
|
-
Whenever you have a dependency that falls outside of your whitelist,
|
|
157
|
-
`license_finder` will tell you. If your business decides that this is
|
|
158
|
-
an acceptable risk, you can manually approve the dependency by using
|
|
159
|
-
the `license_finder approve` command.
|
|
160
|
-
|
|
161
|
-
For example, let's assume you've only whitelisted the "MIT" license in
|
|
162
|
-
your `config/license_finder.yml`. You then add the `awesome_gpl_gem`
|
|
163
|
-
to your Gemfile, which we'll assume is licensed with the `GPL`
|
|
164
|
-
license. You then run `license_finder` and see the gem listed in the
|
|
165
|
-
output:
|
|
166
|
-
|
|
167
|
-
```sh
|
|
168
|
-
awesome_gpl_gem, 1.0.0, GPL
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
Your business tells you that in this case, it's acceptable to use this
|
|
172
|
-
gem. You now run:
|
|
173
|
-
|
|
174
|
-
```sh
|
|
175
|
-
$ license_finder approve awesome_gpl_gem
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
If you rerun `license_finder`, you should no longer see
|
|
179
|
-
`awesome_gpl_gem` in the output.
|
|
180
|
-
|
|
181
|
-
To record who approved the dependency and why:
|
|
182
|
-
|
|
183
|
-
```sh
|
|
184
|
-
$ license_finder approve awesome_gpl_gem --approver CTO --message "Go ahead"
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
|
|
188
223
|
### Adding Hidden Dependencies
|
|
189
224
|
|
|
190
225
|
`license_finder` can track dependencies that your package managers
|
|
@@ -192,22 +227,10 @@ don't know about (JS libraries that don't appear in your
|
|
|
192
227
|
Gemfile/requirements.txt/package.json, etc.)
|
|
193
228
|
|
|
194
229
|
```sh
|
|
195
|
-
$ license_finder dependencies add MIT
|
|
230
|
+
$ license_finder dependencies add my_js_dep MIT 0.1.2
|
|
196
231
|
```
|
|
197
232
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
```sh
|
|
201
|
-
$ license_finder dependencies add MIT my_js_dep 0.1.2 --approve
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
To record who approved the dependency when you add it, use:
|
|
205
|
-
|
|
206
|
-
```sh
|
|
207
|
-
$ license_finder dependencies add MIT my_js_dep 0.1.2 --approve --approver CTO --message "Go ahead"
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
The version is optional. Run `license_finder dependencies help` for
|
|
233
|
+
Run `license_finder dependencies help` for
|
|
211
234
|
additional documentation about managing these dependencies.
|
|
212
235
|
|
|
213
236
|
`license_finder` cannot automatically detect when one of these
|
|
@@ -217,71 +240,55 @@ dependencies has been removed from your project, so you can use:
|
|
|
217
240
|
$ license_finder dependencies remove my_js_dep
|
|
218
241
|
```
|
|
219
242
|
|
|
243
|
+
### Excluding Dependencies
|
|
244
|
+
|
|
245
|
+
Sometimes a project will have development or test dependencies which
|
|
246
|
+
you don't want to track. You can exclude theses dependencies by running
|
|
247
|
+
`license_finder ignored_groups`. (Currently this only works for packages
|
|
248
|
+
managed by Bundler.)
|
|
249
|
+
|
|
250
|
+
On rare occasions a package manager will report an individual dependency
|
|
251
|
+
that you want to exclude from all reports, even though it is approved.
|
|
252
|
+
You can exclude an individual dependency by running
|
|
253
|
+
`license_finder ignored_dependencies`. Think carefully before adding
|
|
254
|
+
dependencies to this list. A likely item to exclude is `bundler`,
|
|
255
|
+
since it is a common dependency whose version changes from machine to
|
|
256
|
+
machine. Adding it to the `ignored_dependencies` would prevent it
|
|
257
|
+
(and its oscillating versions) from appearing in reports.
|
|
258
|
+
|
|
220
259
|
|
|
221
260
|
## Configuration
|
|
222
261
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
262
|
+
It may be difficult to remember to pass command line options to every command.
|
|
263
|
+
In some of these cases you can store default values in a YAML formatted config
|
|
264
|
+
file. `license_finder` looks for this file in `config/license_finder.yml`.
|
|
265
|
+
|
|
266
|
+
As an example, the file might look like this:
|
|
226
267
|
|
|
227
268
|
```yaml
|
|
228
269
|
---
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
#- Apache 2.0
|
|
232
|
-
ignore_groups:
|
|
233
|
-
#- test
|
|
234
|
-
#- development
|
|
235
|
-
ignore_dependencies:
|
|
236
|
-
#- bundler
|
|
237
|
-
dependencies_file_dir: './doc/'
|
|
238
|
-
project_name: My Project Name
|
|
239
|
-
gradle_command: # only meaningful if used with a Java/gradle project. Defaults to "gradle".
|
|
270
|
+
decisions_file: './some_path/decisions.yml'
|
|
271
|
+
gradle_command: './gradlew'
|
|
240
272
|
```
|
|
241
273
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
* Automatically approve licenses in the `whitelist`
|
|
245
|
-
* Exclude test or development dependencies by setting `ignore_groups`.
|
|
246
|
-
(Currently this only works for Bundler.)
|
|
247
|
-
* Exclude specific dependencies by setting `ignore_dependencies`.
|
|
248
|
-
(Think carefully before adding dependencies to this list. A likely
|
|
249
|
-
item to exclude is bundler itself, to avoid noisy changes to the doc
|
|
250
|
-
files when different people run `license_finder` with different
|
|
251
|
-
versions of bundler.)
|
|
252
|
-
* Store the license database and text files in another directory by
|
|
253
|
-
changing `dependencies_file_dir`.
|
|
254
|
-
* Set the HTML report title wih `project_name`, which defaults to the
|
|
255
|
-
name of the working directory.
|
|
256
|
-
* See below for explanation of "gradle_command".
|
|
257
|
-
|
|
258
|
-
You can also configure `license_finder` through the command line. See
|
|
259
|
-
`license_finder whitelist help`, `license_finder ignored_bundler_groups help`
|
|
260
|
-
and `license_finder project_name help` for more details.
|
|
274
|
+
If you set `decisions_file`, you won't have to pass it to every CLI command.
|
|
261
275
|
|
|
276
|
+
Read on to learn about how `gradle_command` is used on gradle projects.
|
|
262
277
|
|
|
263
278
|
### Gradle Projects
|
|
264
279
|
|
|
265
280
|
You need to install the license gradle plugin:
|
|
266
281
|
[https://github.com/hierynomus/license-gradle-plugin](https://github.com/hierynomus/license-gradle-plugin)
|
|
267
282
|
|
|
268
|
-
LicenseFinder assumes that gradle is in your shell's command path and
|
|
269
|
-
|
|
283
|
+
LicenseFinder assumes that gradle is in your shell's command path and can be
|
|
284
|
+
invoked by just calling `gradle`. If you must invoke gradle some other way
|
|
285
|
+
(e.g., with a custom `gradlew` script), pass `--gradle_command` to
|
|
286
|
+
`license_finder` or `license_finder report`.
|
|
270
287
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
```yaml
|
|
276
|
-
# ... other configuration ...
|
|
277
|
-
gradle_command: ./gradlew
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
By default, `license_finder` will report on gradle's "runtime"
|
|
281
|
-
dependencies. If you want to generate a report for some other
|
|
282
|
-
dependency configuration (e.g. Android projects will sometimes specify
|
|
283
|
-
their meaningful dependencies in the "compile" group), you can specify
|
|
284
|
-
it in your project's `build.gradle`:
|
|
288
|
+
By default, `license_finder` will report on gradle's "runtime" dependencies. If
|
|
289
|
+
you want to generate a report for some other dependency configuration (e.g.
|
|
290
|
+
Android projects will sometimes specify their meaningful dependencies in the
|
|
291
|
+
"compile" group), you can specify it in your project's `build.gradle`:
|
|
285
292
|
|
|
286
293
|
```
|
|
287
294
|
// Must come *after* the 'apply plugin: license' line
|
|
@@ -292,20 +299,15 @@ downloadLicenses {
|
|
|
292
299
|
```
|
|
293
300
|
|
|
294
301
|
|
|
295
|
-
##
|
|
296
|
-
|
|
297
|
-
If you wish to cleanup your root directory you can run:
|
|
298
|
-
|
|
299
|
-
```sh
|
|
300
|
-
$ license_finder move
|
|
301
|
-
```
|
|
302
|
+
## Requirements
|
|
302
303
|
|
|
303
|
-
|
|
304
|
+
`license_finder` requires ruby >= 1.9, or jruby.
|
|
304
305
|
|
|
305
306
|
|
|
306
|
-
##
|
|
307
|
+
## Upgrading
|
|
307
308
|
|
|
308
|
-
`license_finder`
|
|
309
|
+
To upgrade from `license_finder` version ~1.2 to 2.0, see
|
|
310
|
+
[`license_finder_upgrade`](https://github.com/mainej/license_finder_upgrade).
|
|
309
311
|
|
|
310
312
|
|
|
311
313
|
## A Plea to Package Authors and Maintainers
|
|
@@ -313,7 +315,7 @@ This will move your `dependencies.*` files to the doc/ directory and update the
|
|
|
313
315
|
Please add a license to your package specs! Most packaging systems
|
|
314
316
|
allow for the specification of one or more licenses.
|
|
315
317
|
|
|
316
|
-
For example, Ruby Gems
|
|
318
|
+
For example, Ruby Gems can specify a license by name:
|
|
317
319
|
|
|
318
320
|
```ruby
|
|
319
321
|
Gem::Specification.new do |s|
|
|
@@ -322,7 +324,7 @@ Gem::Specification.new do |s|
|
|
|
322
324
|
end
|
|
323
325
|
```
|
|
324
326
|
|
|
325
|
-
And
|
|
327
|
+
And save a `LICENSE` file which contains your license text in your repo.
|
|
326
328
|
|
|
327
329
|
|
|
328
330
|
## Support
|
|
@@ -333,30 +335,8 @@ And add a `LICENSE` file to your package that contains your license text.
|
|
|
333
335
|
|
|
334
336
|
## Contributing
|
|
335
337
|
|
|
336
|
-
|
|
337
|
-
* Create a feature branch.
|
|
338
|
-
* Make your feature addition or bug fix. Please make sure there is appropriate test coverage.
|
|
339
|
-
* Rebase on top of master.
|
|
340
|
-
* Send a pull request.
|
|
341
|
-
|
|
342
|
-
To successfully run the test suite, you will need node.js, python, pip
|
|
343
|
-
and gradle installed. If you run `rake check_dependencies`, you'll see
|
|
344
|
-
exactly what you're missing.
|
|
345
|
-
|
|
346
|
-
You'll need a gradle version >= 1.8.
|
|
338
|
+
See [CONTRIBUTING.md](https://github.com/pivotal/LicenseFinder/blob/master/CONTRIBUTING.md).
|
|
347
339
|
|
|
348
|
-
For the python dependency tests you will want to have virtualenv
|
|
349
|
-
installed, to allow pip to work without sudo. For more details, see
|
|
350
|
-
this [post on virtualenv][].
|
|
351
|
-
|
|
352
|
-
[post on virtualenv]: http://hackercodex.com/guide/python-development-environment-on-mac-osx/#virtualenv
|
|
353
|
-
|
|
354
|
-
If you're running the test suite with jruby, you're probably going to
|
|
355
|
-
want to set up some environment variables:
|
|
356
|
-
|
|
357
|
-
```
|
|
358
|
-
JAVA_OPTS='-client -XX:+TieredCompilation -XX:TieredStopAtLevel=1' JRUBY_OPTS='-J-Djruby.launch.inproc=true'
|
|
359
|
-
```
|
|
360
340
|
|
|
361
341
|
## License
|
|
362
342
|
|