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.
Files changed (180) hide show
  1. checksums.yaml +7 -0
  2. data/.force-build +0 -0
  3. data/.gitignore +13 -0
  4. data/.rspec +1 -0
  5. data/.rubocop.yml +70 -0
  6. data/CHANGELOG.md +981 -0
  7. data/CONTRIBUTING.md +121 -0
  8. data/Dockerfile +249 -0
  9. data/Gemfile +2 -0
  10. data/LICENSE +22 -0
  11. data/README.md +555 -0
  12. data/Rakefile +77 -0
  13. data/TODO.md +12 -0
  14. data/VERSION +1 -0
  15. data/appveyor.yml +21 -0
  16. data/bin/license_finder +6 -0
  17. data/bin/license_finder_pip.py +43 -0
  18. data/ci/pipelines/pull-request.yml.erb +141 -0
  19. data/ci/pipelines/release.yml.erb +200 -0
  20. data/ci/scripts/containerize-tests.sh +14 -0
  21. data/ci/scripts/pushscript.sh +32 -0
  22. data/ci/scripts/run-rubocop.sh +15 -0
  23. data/ci/scripts/run-tests.sh +24 -0
  24. data/ci/scripts/test.ps1 +81 -0
  25. data/ci/scripts/updateChangelog.sh +84 -0
  26. data/ci/tasks/build-and-push-gem.yml +10 -0
  27. data/ci/tasks/build-windows.yml +6 -0
  28. data/ci/tasks/build.yml +16 -0
  29. data/ci/tasks/rubocop.yml +15 -0
  30. data/ci/tasks/run-tests.yml +10 -0
  31. data/ci/tasks/update-changelog.yml +18 -0
  32. data/dlf +12 -0
  33. data/examples/Gemfile +4 -0
  34. data/examples/custom_erb_template.rb +24 -0
  35. data/examples/extract_license_data.rb +63 -0
  36. data/examples/sample_template.erb +7 -0
  37. data/lib/license_finder/cli/approvals.rb +28 -0
  38. data/lib/license_finder/cli/base.rb +107 -0
  39. data/lib/license_finder/cli/dependencies.rb +44 -0
  40. data/lib/license_finder/cli/ignored_dependencies.rb +32 -0
  41. data/lib/license_finder/cli/ignored_groups.rb +32 -0
  42. data/lib/license_finder/cli/inherited_decisions.rb +50 -0
  43. data/lib/license_finder/cli/licenses.rb +26 -0
  44. data/lib/license_finder/cli/main.rb +221 -0
  45. data/lib/license_finder/cli/makes_decisions.rb +38 -0
  46. data/lib/license_finder/cli/patched_thor.rb +33 -0
  47. data/lib/license_finder/cli/permitted_licenses.rb +32 -0
  48. data/lib/license_finder/cli/project_name.rb +32 -0
  49. data/lib/license_finder/cli/restricted_licenses.rb +32 -0
  50. data/lib/license_finder/cli.rb +20 -0
  51. data/lib/license_finder/configuration.rb +186 -0
  52. data/lib/license_finder/core.rb +118 -0
  53. data/lib/license_finder/decision_applier.rb +70 -0
  54. data/lib/license_finder/decisions.rb +312 -0
  55. data/lib/license_finder/decisions_factory.rb +13 -0
  56. data/lib/license_finder/diff.rb +51 -0
  57. data/lib/license_finder/license/any_matcher.rb +15 -0
  58. data/lib/license_finder/license/definitions.rb +366 -0
  59. data/lib/license_finder/license/header_matcher.rb +17 -0
  60. data/lib/license_finder/license/matcher.rb +24 -0
  61. data/lib/license_finder/license/none_matcher.rb +11 -0
  62. data/lib/license_finder/license/template.rb +19 -0
  63. data/lib/license_finder/license/templates/0BSD.txt +10 -0
  64. data/lib/license_finder/license/templates/Apache1_1.txt +16 -0
  65. data/lib/license_finder/license/templates/Apache2.txt +172 -0
  66. data/lib/license_finder/license/templates/BSD.txt +24 -0
  67. data/lib/license_finder/license/templates/CC01.txt +30 -0
  68. data/lib/license_finder/license/templates/CDDL1.txt +131 -0
  69. data/lib/license_finder/license/templates/EPL1.txt +86 -0
  70. data/lib/license_finder/license/templates/GPLv2.txt +339 -0
  71. data/lib/license_finder/license/templates/GPLv3.txt +674 -0
  72. data/lib/license_finder/license/templates/ISC.txt +2 -0
  73. data/lib/license_finder/license/templates/LGPL.txt +165 -0
  74. data/lib/license_finder/license/templates/LGPL2_1.txt +169 -0
  75. data/lib/license_finder/license/templates/MIT.txt +9 -0
  76. data/lib/license_finder/license/templates/MPL1_1.txt +469 -0
  77. data/lib/license_finder/license/templates/MPL2.txt +373 -0
  78. data/lib/license_finder/license/templates/NewBSD.txt +21 -0
  79. data/lib/license_finder/license/templates/OFL.txt +91 -0
  80. data/lib/license_finder/license/templates/Python.txt +47 -0
  81. data/lib/license_finder/license/templates/Ruby.txt +52 -0
  82. data/lib/license_finder/license/templates/SimplifiedBSD.txt +19 -0
  83. data/lib/license_finder/license/templates/WTFPL.txt +14 -0
  84. data/lib/license_finder/license/templates/Zlib.txt +17 -0
  85. data/lib/license_finder/license/text.rb +45 -0
  86. data/lib/license_finder/license.rb +117 -0
  87. data/lib/license_finder/license_aggregator.rb +59 -0
  88. data/lib/license_finder/logger.rb +69 -0
  89. data/lib/license_finder/package.rb +202 -0
  90. data/lib/license_finder/package_delta.rb +61 -0
  91. data/lib/license_finder/package_manager.rb +181 -0
  92. data/lib/license_finder/package_managers/bower.rb +37 -0
  93. data/lib/license_finder/package_managers/bundler.rb +110 -0
  94. data/lib/license_finder/package_managers/cargo.rb +38 -0
  95. data/lib/license_finder/package_managers/carthage.rb +68 -0
  96. data/lib/license_finder/package_managers/cocoa_pods.rb +61 -0
  97. data/lib/license_finder/package_managers/composer.rb +63 -0
  98. data/lib/license_finder/package_managers/conan.rb +28 -0
  99. data/lib/license_finder/package_managers/conda.rb +131 -0
  100. data/lib/license_finder/package_managers/dep.rb +43 -0
  101. data/lib/license_finder/package_managers/dotnet.rb +83 -0
  102. data/lib/license_finder/package_managers/erlangmk.rb +50 -0
  103. data/lib/license_finder/package_managers/glide.rb +36 -0
  104. data/lib/license_finder/package_managers/go_15vendorexperiment.rb +87 -0
  105. data/lib/license_finder/package_managers/go_dep.rb +80 -0
  106. data/lib/license_finder/package_managers/go_modules.rb +93 -0
  107. data/lib/license_finder/package_managers/go_workspace.rb +116 -0
  108. data/lib/license_finder/package_managers/govendor.rb +73 -0
  109. data/lib/license_finder/package_managers/gradle.rb +99 -0
  110. data/lib/license_finder/package_managers/gvt.rb +69 -0
  111. data/lib/license_finder/package_managers/maven.rb +65 -0
  112. data/lib/license_finder/package_managers/mix.rb +131 -0
  113. data/lib/license_finder/package_managers/npm.rb +57 -0
  114. data/lib/license_finder/package_managers/nuget.rb +154 -0
  115. data/lib/license_finder/package_managers/pip.rb +70 -0
  116. data/lib/license_finder/package_managers/pipenv.rb +63 -0
  117. data/lib/license_finder/package_managers/rebar.rb +65 -0
  118. data/lib/license_finder/package_managers/sbt.rb +50 -0
  119. data/lib/license_finder/package_managers/spm.rb +93 -0
  120. data/lib/license_finder/package_managers/trash.rb +43 -0
  121. data/lib/license_finder/package_managers/yarn.rb +107 -0
  122. data/lib/license_finder/package_utils/activation.rb +40 -0
  123. data/lib/license_finder/package_utils/conan_info_parser.rb +77 -0
  124. data/lib/license_finder/package_utils/gradle_dependency_finder.rb +15 -0
  125. data/lib/license_finder/package_utils/license_files.rb +41 -0
  126. data/lib/license_finder/package_utils/licensing.rb +39 -0
  127. data/lib/license_finder/package_utils/maven_dependency_finder.rb +15 -0
  128. data/lib/license_finder/package_utils/notice_files.rb +40 -0
  129. data/lib/license_finder/package_utils/possible_license_file.rb +27 -0
  130. data/lib/license_finder/package_utils/pypi.rb +41 -0
  131. data/lib/license_finder/package_utils/sbt_dependency_finder.rb +15 -0
  132. data/lib/license_finder/packages/bower_package.rb +42 -0
  133. data/lib/license_finder/packages/bundler_package.rb +33 -0
  134. data/lib/license_finder/packages/cargo_package.rb +28 -0
  135. data/lib/license_finder/packages/carthage_package.rb +18 -0
  136. data/lib/license_finder/packages/cocoa_pods_package.rb +22 -0
  137. data/lib/license_finder/packages/composer_package.rb +13 -0
  138. data/lib/license_finder/packages/conan_package.rb +23 -0
  139. data/lib/license_finder/packages/conda_package.rb +74 -0
  140. data/lib/license_finder/packages/erlangmk_package.rb +114 -0
  141. data/lib/license_finder/packages/go_package.rb +32 -0
  142. data/lib/license_finder/packages/gradle_package.rb +30 -0
  143. data/lib/license_finder/packages/manual_package.rb +27 -0
  144. data/lib/license_finder/packages/maven_package.rb +27 -0
  145. data/lib/license_finder/packages/merged_package.rb +44 -0
  146. data/lib/license_finder/packages/mix_package.rb +13 -0
  147. data/lib/license_finder/packages/npm_package.rb +171 -0
  148. data/lib/license_finder/packages/nuget_package.rb +13 -0
  149. data/lib/license_finder/packages/pip_package.rb +50 -0
  150. data/lib/license_finder/packages/rebar_package.rb +13 -0
  151. data/lib/license_finder/packages/sbt_package.rb +22 -0
  152. data/lib/license_finder/packages/spm_package.rb +18 -0
  153. data/lib/license_finder/packages/yarn_package.rb +13 -0
  154. data/lib/license_finder/platform.rb +15 -0
  155. data/lib/license_finder/project_finder.rb +62 -0
  156. data/lib/license_finder/report.rb +33 -0
  157. data/lib/license_finder/reports/csv_report.rb +99 -0
  158. data/lib/license_finder/reports/diff_report.rb +29 -0
  159. data/lib/license_finder/reports/erb_report.rb +58 -0
  160. data/lib/license_finder/reports/html_report.rb +13 -0
  161. data/lib/license_finder/reports/json_report.rb +30 -0
  162. data/lib/license_finder/reports/junit_report.rb +19 -0
  163. data/lib/license_finder/reports/markdown_report.rb +9 -0
  164. data/lib/license_finder/reports/merged_report.rb +16 -0
  165. data/lib/license_finder/reports/templates/bootstrap.css +9 -0
  166. data/lib/license_finder/reports/templates/html_report.erb +113 -0
  167. data/lib/license_finder/reports/templates/junit_report.erb +41 -0
  168. data/lib/license_finder/reports/templates/markdown_report.erb +49 -0
  169. data/lib/license_finder/reports/templates/xml_report.erb +19 -0
  170. data/lib/license_finder/reports/text_report.rb +12 -0
  171. data/lib/license_finder/reports/xml_report.rb +19 -0
  172. data/lib/license_finder/scanner.rb +83 -0
  173. data/lib/license_finder/shared_helpers/cmd.rb +13 -0
  174. data/lib/license_finder/shared_helpers/common_path.rb +29 -0
  175. data/lib/license_finder/version.rb +6 -0
  176. data/lib/license_finder.rb +14 -0
  177. data/license_finder.gemspec +72 -0
  178. data/release/instructions.md +8 -0
  179. data/swift-all-keys.asc +240 -0
  180. metadata +544 -0
@@ -0,0 +1,10 @@
1
+ platform: linux
2
+
3
+ inputs:
4
+ - name: LicenseFinder
5
+
6
+ run:
7
+ path: ./LicenseFinder/ci/scripts/run-tests.sh
8
+
9
+ params:
10
+ RUBY_VERSION_UNDER_TEST:
@@ -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,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+ gem 'license_finder', path: '..'
@@ -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,7 @@
1
+ Licenses
2
+
3
+ <%= dependencies.size %> total
4
+
5
+ <% grouped_dependencies.each do |license_name, group| -%>
6
+ * <%= group.size %> <%= license_name %>
7
+ <% 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