license_finder-rubyzip3 7.2.1.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 (196) hide show
  1. checksums.yaml +7 -0
  2. data/.force-build +0 -0
  3. data/.github/dependabot.yml +16 -0
  4. data/.gitignore +13 -0
  5. data/.pre-commit-hooks.yaml +10 -0
  6. data/.rspec +1 -0
  7. data/.rubocop.yml +84 -0
  8. data/CHANGELOG.md +1066 -0
  9. data/CONTRIBUTING.md +122 -0
  10. data/Dockerfile +275 -0
  11. data/Gemfile +2 -0
  12. data/LICENSE +22 -0
  13. data/README.md +597 -0
  14. data/Rakefile +77 -0
  15. data/TODO.md +12 -0
  16. data/VERSION +1 -0
  17. data/appveyor.yml +21 -0
  18. data/bin/license_finder +6 -0
  19. data/bin/license_finder_pip.py +43 -0
  20. data/ci/pipelines/pull-request.yml.erb +138 -0
  21. data/ci/pipelines/release.yml.erb +176 -0
  22. data/ci/scripts/containerize-tests.sh +14 -0
  23. data/ci/scripts/pushscript.sh +31 -0
  24. data/ci/scripts/run-rubocop.sh +15 -0
  25. data/ci/scripts/run-tests.sh +41 -0
  26. data/ci/scripts/test.ps1 +81 -0
  27. data/ci/scripts/updateChangelog.sh +84 -0
  28. data/ci/tasks/build-and-push-gem.yml +10 -0
  29. data/ci/tasks/build-windows.yml +6 -0
  30. data/ci/tasks/build.yml +16 -0
  31. data/ci/tasks/rubocop.yml +15 -0
  32. data/ci/tasks/run-tests.yml +10 -0
  33. data/ci/tasks/update-changelog.yml +18 -0
  34. data/dlf +21 -0
  35. data/examples/Gemfile +4 -0
  36. data/examples/custom_erb_template.rb +24 -0
  37. data/examples/extract_license_data.rb +63 -0
  38. data/examples/sample_template.erb +7 -0
  39. data/lib/license_finder/cli/approvals.rb +28 -0
  40. data/lib/license_finder/cli/base.rb +113 -0
  41. data/lib/license_finder/cli/dependencies.rb +44 -0
  42. data/lib/license_finder/cli/ignored_dependencies.rb +32 -0
  43. data/lib/license_finder/cli/ignored_groups.rb +32 -0
  44. data/lib/license_finder/cli/inherited_decisions.rb +50 -0
  45. data/lib/license_finder/cli/licenses.rb +31 -0
  46. data/lib/license_finder/cli/main.rb +229 -0
  47. data/lib/license_finder/cli/makes_decisions.rb +38 -0
  48. data/lib/license_finder/cli/patched_thor.rb +33 -0
  49. data/lib/license_finder/cli/permitted_licenses.rb +32 -0
  50. data/lib/license_finder/cli/project_name.rb +32 -0
  51. data/lib/license_finder/cli/restricted_licenses.rb +32 -0
  52. data/lib/license_finder/cli.rb +20 -0
  53. data/lib/license_finder/configuration.rb +197 -0
  54. data/lib/license_finder/core.rb +121 -0
  55. data/lib/license_finder/decision_applier.rb +70 -0
  56. data/lib/license_finder/decisions.rb +334 -0
  57. data/lib/license_finder/decisions_factory.rb +13 -0
  58. data/lib/license_finder/diff.rb +51 -0
  59. data/lib/license_finder/license/any_matcher.rb +15 -0
  60. data/lib/license_finder/license/definitions.rb +498 -0
  61. data/lib/license_finder/license/header_matcher.rb +17 -0
  62. data/lib/license_finder/license/matcher.rb +24 -0
  63. data/lib/license_finder/license/none_matcher.rb +11 -0
  64. data/lib/license_finder/license/template.rb +19 -0
  65. data/lib/license_finder/license/templates/0BSD.txt +10 -0
  66. data/lib/license_finder/license/templates/AGPL3.txt +661 -0
  67. data/lib/license_finder/license/templates/Apache1_1.txt +16 -0
  68. data/lib/license_finder/license/templates/Apache2.txt +170 -0
  69. data/lib/license_finder/license/templates/Artistic.txt +128 -0
  70. data/lib/license_finder/license/templates/BSD.txt +24 -0
  71. data/lib/license_finder/license/templates/CC01.txt +30 -0
  72. data/lib/license_finder/license/templates/CC01_alt.txt +31 -0
  73. data/lib/license_finder/license/templates/CDDL1.txt +131 -0
  74. data/lib/license_finder/license/templates/CDDL1_1.txt +123 -0
  75. data/lib/license_finder/license/templates/CPL1.txt +217 -0
  76. data/lib/license_finder/license/templates/EPL1.txt +86 -0
  77. data/lib/license_finder/license/templates/EPL2.txt +80 -0
  78. data/lib/license_finder/license/templates/GPLv2.txt +339 -0
  79. data/lib/license_finder/license/templates/GPLv3.txt +674 -0
  80. data/lib/license_finder/license/templates/ISC.txt +2 -0
  81. data/lib/license_finder/license/templates/LGPL.txt +165 -0
  82. data/lib/license_finder/license/templates/LGPL2_1.txt +169 -0
  83. data/lib/license_finder/license/templates/MIT.txt +9 -0
  84. data/lib/license_finder/license/templates/MPL1_1.txt +469 -0
  85. data/lib/license_finder/license/templates/MPL2.txt +373 -0
  86. data/lib/license_finder/license/templates/NewBSD.txt +21 -0
  87. data/lib/license_finder/license/templates/OFL.txt +91 -0
  88. data/lib/license_finder/license/templates/Python.txt +47 -0
  89. data/lib/license_finder/license/templates/Ruby.txt +52 -0
  90. data/lib/license_finder/license/templates/SimplifiedBSD.txt +19 -0
  91. data/lib/license_finder/license/templates/Unlicense.txt +24 -0
  92. data/lib/license_finder/license/templates/WTFPL.txt +14 -0
  93. data/lib/license_finder/license/templates/Zlib.txt +17 -0
  94. data/lib/license_finder/license/text.rb +49 -0
  95. data/lib/license_finder/license.rb +123 -0
  96. data/lib/license_finder/license_aggregator.rb +59 -0
  97. data/lib/license_finder/logger.rb +69 -0
  98. data/lib/license_finder/manual_licenses.rb +79 -0
  99. data/lib/license_finder/package.rb +195 -0
  100. data/lib/license_finder/package_delta.rb +61 -0
  101. data/lib/license_finder/package_manager.rb +183 -0
  102. data/lib/license_finder/package_managers/bower.rb +37 -0
  103. data/lib/license_finder/package_managers/bundler.rb +110 -0
  104. data/lib/license_finder/package_managers/cargo.rb +38 -0
  105. data/lib/license_finder/package_managers/carthage.rb +68 -0
  106. data/lib/license_finder/package_managers/cocoa_pods.rb +66 -0
  107. data/lib/license_finder/package_managers/composer.rb +63 -0
  108. data/lib/license_finder/package_managers/conan.rb +70 -0
  109. data/lib/license_finder/package_managers/conda.rb +131 -0
  110. data/lib/license_finder/package_managers/dep.rb +45 -0
  111. data/lib/license_finder/package_managers/dotnet.rb +86 -0
  112. data/lib/license_finder/package_managers/erlangmk.rb +50 -0
  113. data/lib/license_finder/package_managers/glide.rb +42 -0
  114. data/lib/license_finder/package_managers/go_15vendorexperiment.rb +87 -0
  115. data/lib/license_finder/package_managers/go_dep.rb +80 -0
  116. data/lib/license_finder/package_managers/go_modules.rb +93 -0
  117. data/lib/license_finder/package_managers/go_workspace.rb +117 -0
  118. data/lib/license_finder/package_managers/govendor.rb +73 -0
  119. data/lib/license_finder/package_managers/gradle.rb +99 -0
  120. data/lib/license_finder/package_managers/gvt.rb +69 -0
  121. data/lib/license_finder/package_managers/maven.rb +69 -0
  122. data/lib/license_finder/package_managers/mix.rb +131 -0
  123. data/lib/license_finder/package_managers/npm.rb +70 -0
  124. data/lib/license_finder/package_managers/nuget.rb +159 -0
  125. data/lib/license_finder/package_managers/pip.rb +70 -0
  126. data/lib/license_finder/package_managers/pipenv.rb +63 -0
  127. data/lib/license_finder/package_managers/pnpm.rb +126 -0
  128. data/lib/license_finder/package_managers/pub.rb +86 -0
  129. data/lib/license_finder/package_managers/rebar.rb +65 -0
  130. data/lib/license_finder/package_managers/sbt.rb +46 -0
  131. data/lib/license_finder/package_managers/spm.rb +93 -0
  132. data/lib/license_finder/package_managers/trash.rb +43 -0
  133. data/lib/license_finder/package_managers/yarn.rb +195 -0
  134. data/lib/license_finder/package_utils/activation.rb +40 -0
  135. data/lib/license_finder/package_utils/conan_info_parser.rb +77 -0
  136. data/lib/license_finder/package_utils/conan_info_parser_v2.rb +82 -0
  137. data/lib/license_finder/package_utils/gradle_dependency_finder.rb +15 -0
  138. data/lib/license_finder/package_utils/license_files.rb +51 -0
  139. data/lib/license_finder/package_utils/licensing.rb +40 -0
  140. data/lib/license_finder/package_utils/maven_dependency_finder.rb +57 -0
  141. data/lib/license_finder/package_utils/notice_files.rb +51 -0
  142. data/lib/license_finder/package_utils/possible_license_file.rb +33 -0
  143. data/lib/license_finder/package_utils/pypi.rb +43 -0
  144. data/lib/license_finder/package_utils/sbt_dependency_finder.rb +15 -0
  145. data/lib/license_finder/packages/bower_package.rb +45 -0
  146. data/lib/license_finder/packages/bundler_package.rb +33 -0
  147. data/lib/license_finder/packages/cargo_package.rb +28 -0
  148. data/lib/license_finder/packages/carthage_package.rb +18 -0
  149. data/lib/license_finder/packages/cocoa_pods_package.rb +22 -0
  150. data/lib/license_finder/packages/composer_package.rb +13 -0
  151. data/lib/license_finder/packages/conan_package.rb +23 -0
  152. data/lib/license_finder/packages/conda_package.rb +74 -0
  153. data/lib/license_finder/packages/erlangmk_package.rb +112 -0
  154. data/lib/license_finder/packages/go_package.rb +30 -0
  155. data/lib/license_finder/packages/gradle_package.rb +30 -0
  156. data/lib/license_finder/packages/manual_package.rb +27 -0
  157. data/lib/license_finder/packages/maven_package.rb +39 -0
  158. data/lib/license_finder/packages/merged_package.rb +44 -0
  159. data/lib/license_finder/packages/mix_package.rb +13 -0
  160. data/lib/license_finder/packages/npm_package.rb +219 -0
  161. data/lib/license_finder/packages/nuget_package.rb +13 -0
  162. data/lib/license_finder/packages/pip_package.rb +50 -0
  163. data/lib/license_finder/packages/pnpm_package.rb +13 -0
  164. data/lib/license_finder/packages/pubspec_package.rb +18 -0
  165. data/lib/license_finder/packages/rebar_package.rb +13 -0
  166. data/lib/license_finder/packages/sbt_package.rb +22 -0
  167. data/lib/license_finder/packages/spm_package.rb +18 -0
  168. data/lib/license_finder/packages/yarn_package.rb +13 -0
  169. data/lib/license_finder/platform.rb +15 -0
  170. data/lib/license_finder/printer.rb +39 -0
  171. data/lib/license_finder/project_finder.rb +62 -0
  172. data/lib/license_finder/report.rb +34 -0
  173. data/lib/license_finder/reports/csv_report.rb +108 -0
  174. data/lib/license_finder/reports/diff_report.rb +29 -0
  175. data/lib/license_finder/reports/erb_report.rb +62 -0
  176. data/lib/license_finder/reports/html_report.rb +13 -0
  177. data/lib/license_finder/reports/json_report.rb +31 -0
  178. data/lib/license_finder/reports/junit_report.rb +23 -0
  179. data/lib/license_finder/reports/markdown_report.rb +9 -0
  180. data/lib/license_finder/reports/merged_report.rb +16 -0
  181. data/lib/license_finder/reports/templates/bootstrap.css +9 -0
  182. data/lib/license_finder/reports/templates/html_report.erb +113 -0
  183. data/lib/license_finder/reports/templates/junit_report.erb +41 -0
  184. data/lib/license_finder/reports/templates/markdown_report.erb +49 -0
  185. data/lib/license_finder/reports/templates/xml_report.erb +19 -0
  186. data/lib/license_finder/reports/text_report.rb +12 -0
  187. data/lib/license_finder/reports/xml_report.rb +23 -0
  188. data/lib/license_finder/scanner.rb +83 -0
  189. data/lib/license_finder/shared_helpers/cmd.rb +13 -0
  190. data/lib/license_finder/shared_helpers/common_path.rb +29 -0
  191. data/lib/license_finder/version.rb +6 -0
  192. data/lib/license_finder.rb +14 -0
  193. data/license_finder.gemspec +79 -0
  194. data/release/instructions.md +8 -0
  195. data/swift-all-keys.asc +240 -0
  196. metadata +604 -0
@@ -0,0 +1,15 @@
1
+ platform: linux
2
+
3
+ image_resource:
4
+ type: registry-image
5
+ source:
6
+ repository: ruby
7
+ tag: 3.2.3
8
+ username: ((license-finder-docker-username))
9
+ password: ((license-finder-docker-password))
10
+
11
+ inputs:
12
+ - name: LicenseFinder
13
+
14
+ run:
15
+ path: ./LicenseFinder/ci/scripts/run-rubocop.sh
@@ -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: ((license-finder-docker-username))
8
+ password: ((license-finder-docker-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,21 @@
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
+ escaped_params=""
7
+ for p in "$@"; do
8
+ escaped_params="$escaped_params \"$p\""
9
+ done
10
+ if [[ $escaped_params =~ "&&" ]]; then
11
+ command=${escaped_params:2:${#escaped_params}-3}
12
+ else
13
+ command=$escaped_params
14
+ fi
15
+ docker run -v $PWD:/scan -it licensefinder/license_finder /bin/bash -lc "cd /scan && $command"
16
+ fi
17
+ else
18
+ echo "You do not have docker installed. Please install it:"
19
+ echo " https://docs.docker.com/engine/installation/"
20
+ exit 1
21
+ 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
+ printer.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
+ printer.say "The dependency #{dep} no longer has a manual approval"
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,113 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor'
4
+ module LicenseFinder
5
+ module CLI
6
+ class Base < Thor
7
+ class_option :project_path,
8
+ desc: 'Path to the project. Defaults to current working directory.'
9
+ class_option :decisions_file,
10
+ desc: 'Where decisions are saved. Defaults to doc/dependency_decisions.yml.'
11
+ class_option :log_directory,
12
+ desc: 'Where logs are saved. Defaults to ./lf_logs/$PROJECT/prepare_$PACKAGE_MANAGER.log'
13
+ class_option :enabled_package_managers,
14
+ desc: 'List of package managers to be enabled. Defaults to all supported package managers.',
15
+ type: :array,
16
+ enum: LicenseFinder::Scanner.supported_package_manager_ids
17
+
18
+ no_commands do
19
+ def decisions
20
+ @decisions ||= DecisionsFactory.decisions(config.decisions_file_path)
21
+ end
22
+
23
+ def config
24
+ @config ||= Configuration.with_optional_saved_config(license_finder_config)
25
+ end
26
+
27
+ def printer
28
+ @printer || Printer.new
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def fail(message)
35
+ printer.say(message) && exit(1)
36
+ end
37
+
38
+ def license_finder_config
39
+ extract_options(
40
+ :project_path,
41
+ :decisions_file,
42
+ :enabled_package_managers,
43
+ :go_full_version,
44
+ :gradle_command,
45
+ :gradle_include_groups,
46
+ :maven_include_groups,
47
+ :maven_options,
48
+ :npm_options,
49
+ :yarn_options,
50
+ :pnpm_options,
51
+ :pip_requirements_path,
52
+ :python_version,
53
+ :rebar_command,
54
+ :rebar_deps_dir,
55
+ :elixir_command,
56
+ :mix_command,
57
+ :mix_deps_dir,
58
+ :write_headers,
59
+ :save,
60
+ :prepare,
61
+ :prepare_no_fail,
62
+ :log_directory,
63
+ :format,
64
+ :columns,
65
+ :aggregate_paths,
66
+ :recursive,
67
+ :sbt_include_groups,
68
+ :conda_bash_setup_script,
69
+ :composer_check_require_only,
70
+ :use_spdx_id
71
+ ).merge(
72
+ logger: logger_mode
73
+ )
74
+ end
75
+
76
+ def logger_mode
77
+ quiet = LicenseFinder::Logger::MODE_QUIET
78
+ debug = LicenseFinder::Logger::MODE_DEBUG
79
+ info = LicenseFinder::Logger::MODE_INFO
80
+ mode = extract_options(quiet, debug)
81
+ if mode[quiet]
82
+ quiet
83
+ elsif mode[debug]
84
+ debug
85
+ else
86
+ info
87
+ end
88
+ end
89
+
90
+ def say_each(coll)
91
+ if coll.any?
92
+ coll.each do |item|
93
+ printer.say(block_given? ? yield(item) : item)
94
+ end
95
+ else
96
+ printer.say '(none)'
97
+ end
98
+ end
99
+
100
+ def assert_some(things)
101
+ raise ArgumentError, 'wrong number of arguments (0 for 1+)', caller unless things.any?
102
+ end
103
+
104
+ def extract_options(*keys)
105
+ result = {}
106
+ keys.each do |key|
107
+ result[key.to_sym] = options[key.to_s] if options.key? key.to_s
108
+ end
109
+ result
110
+ end
111
+ end
112
+ end
113
+ 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
+ printer.say "The #{name} dependency has been added and approved!", :green
24
+ else
25
+ printer.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
+ printer.say "The #{name} dependency has been removed.", :green
35
+ end
36
+
37
+ desc 'list', 'List manually added dependencies'
38
+ def list
39
+ printer.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
+ printer.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
+ printer.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
+ printer.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
+ printer.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
+ printer.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
+ printer.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
+ printer.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
+ printer.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
+ printer.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
+ printer.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
+ printer.say "Removed #{url} from the inherited decisions"
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,31 @@
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
+ method_option :version, desc: 'The version associated with the license'
11
+ desc 'add DEPENDENCY LICENSE', "Set a dependency's licenses, overwriting any license_finder has found"
12
+ def add(name, license)
13
+ modifying { decisions.license(name, license, txn) }
14
+
15
+ version_info = options[:version] ? " with version #{options[:version]}" : ''
16
+ printer.say "The #{name} dependency#{version_info} has been marked as using #{license} license!", :green
17
+ end
18
+
19
+ auditable
20
+ method_option :version, desc: 'The version associated with the license'
21
+ desc 'remove DEPENDENCY LICENSE', 'Remove a manually set license'
22
+ def remove(dep, lic = nil)
23
+ modifying { decisions.unlicense(dep, lic, txn) }
24
+
25
+ version_info = options[:version] ? " with version #{options[:version]}" : ''
26
+ suffix = lic ? " of #{lic}" : ''
27
+ printer.say "The dependency #{dep}#{version_info} no longer has a manual license#{suffix}"
28
+ end
29
+ end
30
+ end
31
+ end