gitlab-license_finder 6.14.2.1
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 +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
|