gitlab-license_finder 6.14.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.force-build +0 -0
- data/.gitignore +13 -0
- data/.rspec +1 -0
- data/.rubocop.yml +70 -0
- data/CHANGELOG.md +981 -0
- data/CONTRIBUTING.md +121 -0
- data/Dockerfile +249 -0
- data/Gemfile +2 -0
- data/LICENSE +22 -0
- data/README.md +555 -0
- data/Rakefile +77 -0
- data/TODO.md +12 -0
- data/VERSION +1 -0
- data/appveyor.yml +21 -0
- data/bin/license_finder +6 -0
- data/bin/license_finder_pip.py +43 -0
- data/ci/pipelines/pull-request.yml.erb +141 -0
- data/ci/pipelines/release.yml.erb +200 -0
- data/ci/scripts/containerize-tests.sh +14 -0
- data/ci/scripts/pushscript.sh +32 -0
- data/ci/scripts/run-rubocop.sh +15 -0
- data/ci/scripts/run-tests.sh +24 -0
- data/ci/scripts/test.ps1 +81 -0
- data/ci/scripts/updateChangelog.sh +84 -0
- data/ci/tasks/build-and-push-gem.yml +10 -0
- data/ci/tasks/build-windows.yml +6 -0
- data/ci/tasks/build.yml +16 -0
- data/ci/tasks/rubocop.yml +15 -0
- data/ci/tasks/run-tests.yml +10 -0
- data/ci/tasks/update-changelog.yml +18 -0
- data/dlf +12 -0
- data/examples/Gemfile +4 -0
- data/examples/custom_erb_template.rb +24 -0
- data/examples/extract_license_data.rb +63 -0
- data/examples/sample_template.erb +7 -0
- data/lib/license_finder/cli/approvals.rb +28 -0
- data/lib/license_finder/cli/base.rb +107 -0
- data/lib/license_finder/cli/dependencies.rb +44 -0
- data/lib/license_finder/cli/ignored_dependencies.rb +32 -0
- data/lib/license_finder/cli/ignored_groups.rb +32 -0
- data/lib/license_finder/cli/inherited_decisions.rb +50 -0
- data/lib/license_finder/cli/licenses.rb +26 -0
- data/lib/license_finder/cli/main.rb +221 -0
- data/lib/license_finder/cli/makes_decisions.rb +38 -0
- data/lib/license_finder/cli/patched_thor.rb +33 -0
- data/lib/license_finder/cli/permitted_licenses.rb +32 -0
- data/lib/license_finder/cli/project_name.rb +32 -0
- data/lib/license_finder/cli/restricted_licenses.rb +32 -0
- data/lib/license_finder/cli.rb +20 -0
- data/lib/license_finder/configuration.rb +186 -0
- data/lib/license_finder/core.rb +118 -0
- data/lib/license_finder/decision_applier.rb +70 -0
- data/lib/license_finder/decisions.rb +312 -0
- data/lib/license_finder/decisions_factory.rb +13 -0
- data/lib/license_finder/diff.rb +51 -0
- data/lib/license_finder/license/any_matcher.rb +15 -0
- data/lib/license_finder/license/definitions.rb +366 -0
- data/lib/license_finder/license/header_matcher.rb +17 -0
- data/lib/license_finder/license/matcher.rb +24 -0
- data/lib/license_finder/license/none_matcher.rb +11 -0
- data/lib/license_finder/license/template.rb +19 -0
- data/lib/license_finder/license/templates/0BSD.txt +10 -0
- data/lib/license_finder/license/templates/Apache1_1.txt +16 -0
- data/lib/license_finder/license/templates/Apache2.txt +172 -0
- data/lib/license_finder/license/templates/BSD.txt +24 -0
- data/lib/license_finder/license/templates/CC01.txt +30 -0
- data/lib/license_finder/license/templates/CDDL1.txt +131 -0
- data/lib/license_finder/license/templates/EPL1.txt +86 -0
- data/lib/license_finder/license/templates/GPLv2.txt +339 -0
- data/lib/license_finder/license/templates/GPLv3.txt +674 -0
- data/lib/license_finder/license/templates/ISC.txt +2 -0
- data/lib/license_finder/license/templates/LGPL.txt +165 -0
- data/lib/license_finder/license/templates/LGPL2_1.txt +169 -0
- data/lib/license_finder/license/templates/MIT.txt +9 -0
- data/lib/license_finder/license/templates/MPL1_1.txt +469 -0
- data/lib/license_finder/license/templates/MPL2.txt +373 -0
- data/lib/license_finder/license/templates/NewBSD.txt +21 -0
- data/lib/license_finder/license/templates/OFL.txt +91 -0
- data/lib/license_finder/license/templates/Python.txt +47 -0
- data/lib/license_finder/license/templates/Ruby.txt +52 -0
- data/lib/license_finder/license/templates/SimplifiedBSD.txt +19 -0
- data/lib/license_finder/license/templates/WTFPL.txt +14 -0
- data/lib/license_finder/license/templates/Zlib.txt +17 -0
- data/lib/license_finder/license/text.rb +45 -0
- data/lib/license_finder/license.rb +117 -0
- data/lib/license_finder/license_aggregator.rb +59 -0
- data/lib/license_finder/logger.rb +69 -0
- data/lib/license_finder/package.rb +202 -0
- data/lib/license_finder/package_delta.rb +61 -0
- data/lib/license_finder/package_manager.rb +181 -0
- data/lib/license_finder/package_managers/bower.rb +37 -0
- data/lib/license_finder/package_managers/bundler.rb +110 -0
- data/lib/license_finder/package_managers/cargo.rb +38 -0
- data/lib/license_finder/package_managers/carthage.rb +68 -0
- data/lib/license_finder/package_managers/cocoa_pods.rb +61 -0
- data/lib/license_finder/package_managers/composer.rb +63 -0
- data/lib/license_finder/package_managers/conan.rb +28 -0
- data/lib/license_finder/package_managers/conda.rb +131 -0
- data/lib/license_finder/package_managers/dep.rb +43 -0
- data/lib/license_finder/package_managers/dotnet.rb +83 -0
- data/lib/license_finder/package_managers/erlangmk.rb +50 -0
- data/lib/license_finder/package_managers/glide.rb +36 -0
- data/lib/license_finder/package_managers/go_15vendorexperiment.rb +87 -0
- data/lib/license_finder/package_managers/go_dep.rb +80 -0
- data/lib/license_finder/package_managers/go_modules.rb +93 -0
- data/lib/license_finder/package_managers/go_workspace.rb +116 -0
- data/lib/license_finder/package_managers/govendor.rb +73 -0
- data/lib/license_finder/package_managers/gradle.rb +99 -0
- data/lib/license_finder/package_managers/gvt.rb +69 -0
- data/lib/license_finder/package_managers/maven.rb +65 -0
- data/lib/license_finder/package_managers/mix.rb +131 -0
- data/lib/license_finder/package_managers/npm.rb +57 -0
- data/lib/license_finder/package_managers/nuget.rb +154 -0
- data/lib/license_finder/package_managers/pip.rb +70 -0
- data/lib/license_finder/package_managers/pipenv.rb +63 -0
- data/lib/license_finder/package_managers/rebar.rb +65 -0
- data/lib/license_finder/package_managers/sbt.rb +50 -0
- data/lib/license_finder/package_managers/spm.rb +93 -0
- data/lib/license_finder/package_managers/trash.rb +43 -0
- data/lib/license_finder/package_managers/yarn.rb +107 -0
- data/lib/license_finder/package_utils/activation.rb +40 -0
- data/lib/license_finder/package_utils/conan_info_parser.rb +77 -0
- data/lib/license_finder/package_utils/gradle_dependency_finder.rb +15 -0
- data/lib/license_finder/package_utils/license_files.rb +41 -0
- data/lib/license_finder/package_utils/licensing.rb +39 -0
- data/lib/license_finder/package_utils/maven_dependency_finder.rb +15 -0
- data/lib/license_finder/package_utils/notice_files.rb +40 -0
- data/lib/license_finder/package_utils/possible_license_file.rb +27 -0
- data/lib/license_finder/package_utils/pypi.rb +41 -0
- data/lib/license_finder/package_utils/sbt_dependency_finder.rb +15 -0
- data/lib/license_finder/packages/bower_package.rb +42 -0
- data/lib/license_finder/packages/bundler_package.rb +33 -0
- data/lib/license_finder/packages/cargo_package.rb +28 -0
- data/lib/license_finder/packages/carthage_package.rb +18 -0
- data/lib/license_finder/packages/cocoa_pods_package.rb +22 -0
- data/lib/license_finder/packages/composer_package.rb +13 -0
- data/lib/license_finder/packages/conan_package.rb +23 -0
- data/lib/license_finder/packages/conda_package.rb +74 -0
- data/lib/license_finder/packages/erlangmk_package.rb +114 -0
- data/lib/license_finder/packages/go_package.rb +32 -0
- data/lib/license_finder/packages/gradle_package.rb +30 -0
- data/lib/license_finder/packages/manual_package.rb +27 -0
- data/lib/license_finder/packages/maven_package.rb +27 -0
- data/lib/license_finder/packages/merged_package.rb +44 -0
- data/lib/license_finder/packages/mix_package.rb +13 -0
- data/lib/license_finder/packages/npm_package.rb +171 -0
- data/lib/license_finder/packages/nuget_package.rb +13 -0
- data/lib/license_finder/packages/pip_package.rb +50 -0
- data/lib/license_finder/packages/rebar_package.rb +13 -0
- data/lib/license_finder/packages/sbt_package.rb +22 -0
- data/lib/license_finder/packages/spm_package.rb +18 -0
- data/lib/license_finder/packages/yarn_package.rb +13 -0
- data/lib/license_finder/platform.rb +15 -0
- data/lib/license_finder/project_finder.rb +62 -0
- data/lib/license_finder/report.rb +33 -0
- data/lib/license_finder/reports/csv_report.rb +99 -0
- data/lib/license_finder/reports/diff_report.rb +29 -0
- data/lib/license_finder/reports/erb_report.rb +58 -0
- data/lib/license_finder/reports/html_report.rb +13 -0
- data/lib/license_finder/reports/json_report.rb +30 -0
- data/lib/license_finder/reports/junit_report.rb +19 -0
- data/lib/license_finder/reports/markdown_report.rb +9 -0
- data/lib/license_finder/reports/merged_report.rb +16 -0
- data/lib/license_finder/reports/templates/bootstrap.css +9 -0
- data/lib/license_finder/reports/templates/html_report.erb +113 -0
- data/lib/license_finder/reports/templates/junit_report.erb +41 -0
- data/lib/license_finder/reports/templates/markdown_report.erb +49 -0
- data/lib/license_finder/reports/templates/xml_report.erb +19 -0
- data/lib/license_finder/reports/text_report.rb +12 -0
- data/lib/license_finder/reports/xml_report.rb +19 -0
- data/lib/license_finder/scanner.rb +83 -0
- data/lib/license_finder/shared_helpers/cmd.rb +13 -0
- data/lib/license_finder/shared_helpers/common_path.rb +29 -0
- data/lib/license_finder/version.rb +6 -0
- data/lib/license_finder.rb +14 -0
- data/license_finder.gemspec +72 -0
- data/release/instructions.md +8 -0
- data/swift-all-keys.asc +240 -0
- metadata +544 -0
@@ -0,0 +1,18 @@
|
|
1
|
+
---
|
2
|
+
image_resource:
|
3
|
+
type: registry-image
|
4
|
+
source:
|
5
|
+
repository: brenix/alpine-bash-git-ssh
|
6
|
+
tag: latest
|
7
|
+
username: ((LicenseFinderDocker.username))
|
8
|
+
password: ((LicenseFinderDocker.password))
|
9
|
+
platform: linux
|
10
|
+
inputs:
|
11
|
+
- name: lf-git
|
12
|
+
- name: lf-release
|
13
|
+
- name: semver-version
|
14
|
+
outputs:
|
15
|
+
- name: lf-git-changed
|
16
|
+
- name: version
|
17
|
+
run:
|
18
|
+
path: lf-git/ci/scripts/updateChangelog.sh
|
data/dlf
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
if `which docker > /dev/null`; then
|
3
|
+
if [ $# -eq 0 ]; then
|
4
|
+
docker run -v $PWD:/scan -it licensefinder/license_finder
|
5
|
+
else
|
6
|
+
docker run -v $PWD:/scan -it licensefinder/license_finder /bin/bash -lc "cd /scan && `echo $@`"
|
7
|
+
fi
|
8
|
+
else
|
9
|
+
echo "You do not have docker installed. Please install it:"
|
10
|
+
echo " https://docs.docker.com/engine/installation/"
|
11
|
+
exit 1
|
12
|
+
fi
|
data/examples/Gemfile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# frozen_string_literal: true
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'bundler/setup'
|
7
|
+
|
8
|
+
# This is an example of how to programatically generate a report using a custom
|
9
|
+
# ERB template. Run with
|
10
|
+
# > bundle install
|
11
|
+
# > ./custom_erb_template.rb
|
12
|
+
|
13
|
+
require 'license_finder'
|
14
|
+
|
15
|
+
# See lib/license_finder/core.rb for more configuration options.
|
16
|
+
# A quiet logger is required when running reports...
|
17
|
+
lf = LicenseFinder::Core.new(LicenseFinder::Configuration.with_optional_saved_config(logger: :quiet))
|
18
|
+
|
19
|
+
# Find many more examples of complex ERB templates in
|
20
|
+
# lib/license_finder/reports/templates/
|
21
|
+
template = Pathname.new('./sample_template.erb')
|
22
|
+
print LicenseFinder::ErbReport
|
23
|
+
.new(lf.acknowledged, project_name: lf.project_name)
|
24
|
+
.to_s(template)
|
@@ -0,0 +1,63 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# frozen_string_literal: true
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'bundler/setup'
|
7
|
+
|
8
|
+
# This is an example of how to programatically extract the information that
|
9
|
+
# LicenseFinder has about packages and their licenses.
|
10
|
+
# > bundle install
|
11
|
+
# > ./extract_license_data.rb
|
12
|
+
|
13
|
+
require 'license_finder'
|
14
|
+
|
15
|
+
# See lib/license_finder/core.rb for more configuration options.
|
16
|
+
# A quiet logger is required when running reports...
|
17
|
+
lf = LicenseFinder::Core.new(LicenseFinder::Configuration.with_optional_saved_config(logger: :quiet))
|
18
|
+
|
19
|
+
# Groups of packages
|
20
|
+
lf.acknowledged # All (non-ignored) packages license_finder is tracking
|
21
|
+
lf.unapproved # The packages which have not been approved or permitted
|
22
|
+
lf.restricted # The packages which have been restricted
|
23
|
+
|
24
|
+
# Package details
|
25
|
+
lf.acknowledged.each do |package|
|
26
|
+
# Approvals
|
27
|
+
package.approved? # Whether the package has been approved manually or permitted
|
28
|
+
package.approved_manually?
|
29
|
+
package.permitted?
|
30
|
+
package.restricted?
|
31
|
+
|
32
|
+
# Licensing
|
33
|
+
# The set of licenses, each of which has a name and url, which
|
34
|
+
# license_finder will report for this package.
|
35
|
+
package.licenses
|
36
|
+
# Additional information about how these licenses were chosen
|
37
|
+
# (from decision, from spec, from files, or none-found). See
|
38
|
+
# LicenseFinder::Licensing and LicenseFinder::Activation
|
39
|
+
package.activations
|
40
|
+
# The files that look like licenses, found in the package's
|
41
|
+
# directory. Caveat: if a package's licenses were specified by a decision or
|
42
|
+
# by the package's spec, the license_files will be ignored. That means,
|
43
|
+
# package.licenses may report different licenses than those found in
|
44
|
+
# license_files.
|
45
|
+
package.license_files
|
46
|
+
package.license_files.each do |file|
|
47
|
+
# The license found in this file.
|
48
|
+
file.license
|
49
|
+
# The text of the file. Sometimes this will be an entire README file,
|
50
|
+
# because license_finder has found the phrase "is released under the
|
51
|
+
# MIT license" in it.
|
52
|
+
file.text
|
53
|
+
end
|
54
|
+
package.licensing.activations_from_decisions # If license_finder only knew about decisions, what licenses would it report?
|
55
|
+
package.licensing.activations_from_spec # If license_finder only knew about package specs, what licenses would it report?
|
56
|
+
package.licensing.activations_from_files # If license_finder only knew about package files, what licenses would it report?
|
57
|
+
package.licensing.activations_from_files.each do |activation|
|
58
|
+
# Each activation groups together all files that point to the same license.
|
59
|
+
# Each file contains its #license and #text.
|
60
|
+
activation.license
|
61
|
+
activation.files
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module LicenseFinder
|
4
|
+
module CLI
|
5
|
+
class Approvals < Base
|
6
|
+
extend Subcommand
|
7
|
+
include MakesDecisions
|
8
|
+
|
9
|
+
auditable
|
10
|
+
approvable
|
11
|
+
desc 'add DEPENDENCY...', 'Approve one or more dependencies by name'
|
12
|
+
def add(*names)
|
13
|
+
assert_some names
|
14
|
+
modifying { names.each { |name| decisions.approve(name, txn) } }
|
15
|
+
|
16
|
+
say "The #{names.join(', ')} dependency has been approved!", :green
|
17
|
+
end
|
18
|
+
|
19
|
+
auditable
|
20
|
+
desc 'remove DEPENDENCY', 'Unapprove a dependency'
|
21
|
+
def remove(dep)
|
22
|
+
modifying { decisions.unapprove(dep, txn) }
|
23
|
+
|
24
|
+
say "The dependency #{dep} no longer has a manual approval"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'thor'
|
4
|
+
|
5
|
+
module LicenseFinder
|
6
|
+
module CLI
|
7
|
+
class Base < Thor
|
8
|
+
class_option :project_path,
|
9
|
+
desc: 'Path to the project. Defaults to current working directory.'
|
10
|
+
class_option :decisions_file,
|
11
|
+
desc: 'Where decisions are saved. Defaults to doc/dependency_decisions.yml.'
|
12
|
+
class_option :log_directory,
|
13
|
+
desc: 'Where logs are saved. Defaults to ./lf_logs/$PROJECT/prepare_$PACKAGE_MANAGER.log'
|
14
|
+
class_option :enabled_package_managers,
|
15
|
+
desc: 'List of package managers to be enabled. Defaults to all supported package managers.',
|
16
|
+
type: :array,
|
17
|
+
enum: LicenseFinder::Scanner.supported_package_manager_ids
|
18
|
+
|
19
|
+
no_commands do
|
20
|
+
def decisions
|
21
|
+
@decisions ||= DecisionsFactory.decisions(config.decisions_file_path)
|
22
|
+
end
|
23
|
+
|
24
|
+
def config
|
25
|
+
@config ||= Configuration.with_optional_saved_config(license_finder_config)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def fail(message)
|
32
|
+
say(message) && exit(1)
|
33
|
+
end
|
34
|
+
|
35
|
+
def license_finder_config
|
36
|
+
extract_options(
|
37
|
+
:project_path,
|
38
|
+
:decisions_file,
|
39
|
+
:enabled_package_managers,
|
40
|
+
:go_full_version,
|
41
|
+
:gradle_command,
|
42
|
+
:gradle_include_groups,
|
43
|
+
:maven_include_groups,
|
44
|
+
:maven_options,
|
45
|
+
:npm_options,
|
46
|
+
:pip_requirements_path,
|
47
|
+
:python_version,
|
48
|
+
:rebar_command,
|
49
|
+
:rebar_deps_dir,
|
50
|
+
:elixir_command,
|
51
|
+
:mix_command,
|
52
|
+
:mix_deps_dir,
|
53
|
+
:write_headers,
|
54
|
+
:save,
|
55
|
+
:prepare,
|
56
|
+
:prepare_no_fail,
|
57
|
+
:log_directory,
|
58
|
+
:format,
|
59
|
+
:columns,
|
60
|
+
:aggregate_paths,
|
61
|
+
:recursive,
|
62
|
+
:sbt_include_groups,
|
63
|
+
:conda_bash_setup_script,
|
64
|
+
:composer_check_require_only
|
65
|
+
).merge(
|
66
|
+
logger: logger_mode
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
def logger_mode
|
71
|
+
quiet = LicenseFinder::Logger::MODE_QUIET
|
72
|
+
debug = LicenseFinder::Logger::MODE_DEBUG
|
73
|
+
info = LicenseFinder::Logger::MODE_INFO
|
74
|
+
mode = extract_options(quiet, debug)
|
75
|
+
if mode[quiet]
|
76
|
+
quiet
|
77
|
+
elsif mode[debug]
|
78
|
+
debug
|
79
|
+
else
|
80
|
+
info
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def say_each(coll)
|
85
|
+
if coll.any?
|
86
|
+
coll.each do |item|
|
87
|
+
say(block_given? ? yield(item) : item)
|
88
|
+
end
|
89
|
+
else
|
90
|
+
say '(none)'
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def assert_some(things)
|
95
|
+
raise ArgumentError, 'wrong number of arguments (0 for 1+)', caller unless things.any?
|
96
|
+
end
|
97
|
+
|
98
|
+
def extract_options(*keys)
|
99
|
+
result = {}
|
100
|
+
keys.each do |key|
|
101
|
+
result[key.to_sym] = options[key.to_s] if options.key? key.to_s
|
102
|
+
end
|
103
|
+
result
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module LicenseFinder
|
4
|
+
module CLI
|
5
|
+
class Dependencies < Base
|
6
|
+
extend Subcommand
|
7
|
+
include MakesDecisions
|
8
|
+
|
9
|
+
method_option :approve, type: :boolean, desc: 'Approve the added dependency'
|
10
|
+
method_option :homepage, type: :string, desc: 'Source of the added dependency'
|
11
|
+
|
12
|
+
auditable
|
13
|
+
desc 'add DEPENDENCY LICENSE VERSION [--homepage=HOMEPAGE] [--approve]', 'Add a dependency that is not managed by a package manager, optionally approving it at the same time'
|
14
|
+
def add(name, license, version)
|
15
|
+
modifying do
|
16
|
+
decisions
|
17
|
+
.add_package(name, version, txn)
|
18
|
+
.license(name, license, txn)
|
19
|
+
decisions.homepage(name, options[:homepage], txn) if options[:homepage]
|
20
|
+
decisions.approve(name, txn) if options[:approve]
|
21
|
+
end
|
22
|
+
if options[:approve]
|
23
|
+
say "The #{name} dependency has been added and approved!", :green
|
24
|
+
else
|
25
|
+
say "The #{name} dependency has been added!", :green
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
auditable
|
30
|
+
desc 'remove DEPENDENCY', 'Remove a dependency that is not managed by a package manager'
|
31
|
+
def remove(name)
|
32
|
+
modifying { decisions.remove_package(name, txn) }
|
33
|
+
|
34
|
+
say "The #{name} dependency has been removed.", :green
|
35
|
+
end
|
36
|
+
|
37
|
+
desc 'list', 'List manually added dependencies'
|
38
|
+
def list
|
39
|
+
say 'Manually Added Dependencies:', :blue
|
40
|
+
say_each(decisions.packages, &:name)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module LicenseFinder
|
4
|
+
module CLI
|
5
|
+
class IgnoredDependencies < Base
|
6
|
+
extend Subcommand
|
7
|
+
include MakesDecisions
|
8
|
+
|
9
|
+
desc 'list', 'List all the ignored dependencies'
|
10
|
+
def list
|
11
|
+
say 'Ignored Dependencies:', :blue
|
12
|
+
say_each(decisions.ignored)
|
13
|
+
end
|
14
|
+
|
15
|
+
auditable
|
16
|
+
desc 'add DEPENDENCY', 'Add a dependency to be ignored'
|
17
|
+
def add(dep)
|
18
|
+
modifying { decisions.ignore(dep, txn) }
|
19
|
+
|
20
|
+
say "Added #{dep} to the ignored dependencies"
|
21
|
+
end
|
22
|
+
|
23
|
+
auditable
|
24
|
+
desc 'remove DEPENDENCY', 'Remove a dependency from the ignored dependencies'
|
25
|
+
def remove(dep)
|
26
|
+
modifying { decisions.heed(dep, txn) }
|
27
|
+
|
28
|
+
say "Removed #{dep} from the ignored dependencies"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module LicenseFinder
|
4
|
+
module CLI
|
5
|
+
class IgnoredGroups < Base
|
6
|
+
extend Subcommand
|
7
|
+
include MakesDecisions
|
8
|
+
|
9
|
+
desc 'list', 'List all the ignored groups'
|
10
|
+
def list
|
11
|
+
say 'Ignored Groups:', :blue
|
12
|
+
say_each(decisions.ignored_groups)
|
13
|
+
end
|
14
|
+
|
15
|
+
auditable
|
16
|
+
desc 'add GROUP', 'Add a group to be ignored'
|
17
|
+
def add(group)
|
18
|
+
modifying { decisions.ignore_group(group, txn) }
|
19
|
+
|
20
|
+
say "Added #{group} to the ignored groups"
|
21
|
+
end
|
22
|
+
|
23
|
+
auditable
|
24
|
+
desc 'remove GROUP', 'Remove a group from the ignored groups'
|
25
|
+
def remove(group)
|
26
|
+
modifying { decisions.heed_group(group, txn) }
|
27
|
+
|
28
|
+
say "Removed #{group} from the ignored groups"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module LicenseFinder
|
4
|
+
module CLI
|
5
|
+
class InheritedDecisions < Base
|
6
|
+
extend Subcommand
|
7
|
+
include MakesDecisions
|
8
|
+
|
9
|
+
desc 'list', 'List all the inherited decision files'
|
10
|
+
def list
|
11
|
+
say 'Inherited Decision Files:', :blue
|
12
|
+
say_each(decisions.inherited_decisions)
|
13
|
+
end
|
14
|
+
|
15
|
+
auditable
|
16
|
+
desc 'add DECISION_FILE...', 'Add one or more decision files to the inherited decisions'
|
17
|
+
def add(*decision_files)
|
18
|
+
assert_some decision_files
|
19
|
+
modifying { decision_files.each { |filepath| decisions.inherit_from(filepath) } }
|
20
|
+
say "Added #{decision_files.join(', ')} to the inherited decisions"
|
21
|
+
end
|
22
|
+
|
23
|
+
auditable
|
24
|
+
desc 'add_with_auth URL AUTH_TYPE TOKEN_OR_ENV', 'Add a remote decision file that needs authentication'
|
25
|
+
def add_with_auth(*params)
|
26
|
+
url, auth_type, token_or_env = params
|
27
|
+
auth_info = { 'url' => url, 'authorization' => "#{auth_type} #{token_or_env}" }
|
28
|
+
modifying { decisions.add_decision [:inherit_from, auth_info] }
|
29
|
+
say "Added #{url} to the inherited decisions"
|
30
|
+
end
|
31
|
+
|
32
|
+
auditable
|
33
|
+
desc 'remove DECISION_FILE...', 'Remove one or more decision files from the inherited decisions'
|
34
|
+
def remove(*decision_files)
|
35
|
+
assert_some decision_files
|
36
|
+
modifying { decision_files.each { |filepath| decisions.remove_inheritance(filepath) } }
|
37
|
+
say "Removed #{decision_files.join(', ')} from the inherited decisions"
|
38
|
+
end
|
39
|
+
|
40
|
+
auditable
|
41
|
+
desc 'remove_with_auth URL AUTH_TYPE TOKEN_OR_ENV', 'Add a remote decision file that needs authentication'
|
42
|
+
def remove_with_auth(*params)
|
43
|
+
url, auth_type, token_or_env = params
|
44
|
+
auth_info = { 'url' => url, 'authorization' => "#{auth_type} #{token_or_env}" }
|
45
|
+
modifying { decisions.remove_inheritance(auth_info) }
|
46
|
+
say "Removed #{url} from the inherited decisions"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module LicenseFinder
|
4
|
+
module CLI
|
5
|
+
class Licenses < Base
|
6
|
+
extend Subcommand
|
7
|
+
include MakesDecisions
|
8
|
+
|
9
|
+
auditable
|
10
|
+
desc 'add DEPENDENCY LICENSE', "Set a dependency's licenses, overwriting any license_finder has found"
|
11
|
+
def add(name, license)
|
12
|
+
modifying { decisions.license(name, license, txn) }
|
13
|
+
|
14
|
+
say "The #{name} dependency has been marked as using #{license} license!", :green
|
15
|
+
end
|
16
|
+
|
17
|
+
auditable
|
18
|
+
desc 'remove DEPENDENCY LICENSE', 'Remove a manually set license'
|
19
|
+
def remove(dep, lic)
|
20
|
+
modifying { decisions.unlicense(dep, lic, txn) }
|
21
|
+
|
22
|
+
say "The dependency #{dep} no longer has a manual license"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|