license_finder 2.0.0.rc2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -1
  3. data/CHANGELOG.rdoc +16 -9
  4. data/CONTRIBUTING.md +3 -3
  5. data/README.md +4 -1
  6. data/TODO.md +6 -19
  7. data/bin/license_finder_pip.py +2 -2
  8. data/features/features/cli_spec.rb +18 -18
  9. data/features/features/configure/add_dependencies_spec.rb +16 -16
  10. data/features/features/configure/approve_dependencies_spec.rb +10 -9
  11. data/features/features/configure/assign_licenses_spec.rb +8 -8
  12. data/features/features/configure/ignore_dependencies_spec.rb +15 -15
  13. data/features/features/configure/ignore_groups_spec.rb +15 -15
  14. data/features/features/configure/name_project_spec.rb +15 -14
  15. data/features/features/configure/whitelist_licenses_spec.rb +21 -21
  16. data/features/features/package_managers/bower_spec.rb +3 -3
  17. data/features/features/package_managers/cocoapods_spec.rb +4 -4
  18. data/features/features/package_managers/gradle_spec.rb +3 -3
  19. data/features/features/package_managers/maven_spec.rb +3 -3
  20. data/features/features/package_managers/npm_spec.rb +3 -3
  21. data/features/features/package_managers/pip_spec.rb +3 -3
  22. data/features/features/report/csv_spec.rb +9 -8
  23. data/features/features/report/html_spec.rb +13 -12
  24. data/features/support/testing_dsl.rb +1 -1
  25. data/lib/license_finder.rb +1 -16
  26. data/lib/license_finder/cli/approvals.rb +3 -4
  27. data/lib/license_finder/cli/base.rb +40 -3
  28. data/lib/license_finder/cli/dependencies.rb +3 -3
  29. data/lib/license_finder/cli/main.rb +7 -25
  30. data/lib/license_finder/cli/makes_decisions.rb +2 -20
  31. data/lib/license_finder/cli/patched_thor.rb +0 -2
  32. data/lib/license_finder/cli/whitelist.rb +6 -8
  33. data/lib/license_finder/configuration.rb +1 -1
  34. data/lib/license_finder/core.rb +68 -0
  35. data/lib/license_finder/decision_applier.rb +10 -7
  36. data/lib/license_finder/license.rb +10 -10
  37. data/lib/license_finder/license/template.rb +3 -2
  38. data/lib/license_finder/logger.rb +2 -6
  39. data/lib/license_finder/package.rb +25 -44
  40. data/lib/license_finder/package_manager.rb +11 -13
  41. data/lib/license_finder/package_managers/bower.rb +1 -1
  42. data/lib/license_finder/package_managers/bundler.rb +1 -1
  43. data/lib/license_finder/package_managers/cocoa_pods.rb +3 -3
  44. data/lib/license_finder/package_managers/cocoa_pods_package.rb +3 -3
  45. data/lib/license_finder/package_managers/gradle.rb +2 -2
  46. data/lib/license_finder/package_managers/maven.rb +2 -2
  47. data/lib/license_finder/package_managers/npm.rb +1 -1
  48. data/lib/license_finder/package_managers/pip.rb +1 -1
  49. data/lib/license_finder/package_managers/pip_package.rb +6 -4
  50. data/lib/license_finder/packages/activation.rb +54 -0
  51. data/lib/license_finder/{possible_license_files.rb → packages/license_files.rb} +9 -7
  52. data/lib/license_finder/packages/licensing.rb +43 -0
  53. data/lib/license_finder/{package_managers → packages}/manual_package.rb +0 -0
  54. data/lib/license_finder/{possible_license_file.rb → packages/possible_license_file.rb} +0 -2
  55. data/lib/license_finder/version.rb +1 -1
  56. data/spec/fixtures/{license_directory/LICENSE/Apache.txt → all_pms/Gemfile} +0 -0
  57. data/spec/fixtures/all_pms/Podfile +0 -0
  58. data/spec/fixtures/all_pms/bower.json +0 -0
  59. data/spec/fixtures/all_pms/build.gradle +0 -0
  60. data/spec/fixtures/all_pms/package.json +0 -0
  61. data/spec/fixtures/all_pms/pom.xml +0 -0
  62. data/spec/fixtures/all_pms/requirements.txt +0 -0
  63. data/spec/fixtures/license_directory/COPYING +1 -0
  64. data/spec/fixtures/license_directory/LICENSE/MIT.txt +1 -0
  65. data/spec/fixtures/license_names/COPYING.txt +1 -0
  66. data/spec/fixtures/license_names/LICENSE +1 -0
  67. data/spec/fixtures/license_names/Licence.rdoc +1 -0
  68. data/spec/fixtures/license_names/Mit-License +1 -0
  69. data/spec/fixtures/license_names/README.rdoc +1 -0
  70. data/spec/fixtures/nested_gem/vendor/LICENSE +1 -0
  71. data/spec/lib/license_finder/cli/approvals_spec.rb +9 -3
  72. data/spec/lib/license_finder/cli/dependencies_spec.rb +5 -2
  73. data/spec/lib/license_finder/cli/main_spec.rb +20 -27
  74. data/spec/lib/license_finder/configuration_spec.rb +1 -3
  75. data/spec/lib/license_finder/decision_applier_spec.rb +15 -15
  76. data/spec/lib/license_finder/decisions_spec.rb +94 -95
  77. data/spec/lib/license_finder/license_spec.rb +5 -5
  78. data/spec/lib/license_finder/package_managers/bower_package_spec.rb +0 -4
  79. data/spec/lib/license_finder/package_managers/bower_spec.rb +6 -27
  80. data/spec/lib/license_finder/package_managers/bundler_package_spec.rb +0 -2
  81. data/spec/lib/license_finder/package_managers/bundler_spec.rb +0 -15
  82. data/spec/lib/license_finder/package_managers/cocoa_pods_package_spec.rb +5 -2
  83. data/spec/lib/license_finder/package_managers/cocoa_pods_spec.rb +13 -31
  84. data/spec/lib/license_finder/package_managers/gradle_package_spec.rb +0 -2
  85. data/spec/lib/license_finder/package_managers/gradle_spec.rb +11 -35
  86. data/spec/lib/license_finder/package_managers/maven_package_spec.rb +0 -2
  87. data/spec/lib/license_finder/package_managers/maven_spec.rb +18 -56
  88. data/spec/lib/license_finder/package_managers/npm_package_spec.rb +0 -2
  89. data/spec/lib/license_finder/package_managers/npm_spec.rb +0 -17
  90. data/spec/lib/license_finder/package_managers/pip_package_spec.rb +0 -2
  91. data/spec/lib/license_finder/package_managers/pip_spec.rb +8 -25
  92. data/spec/lib/license_finder/package_spec.rb +2 -4
  93. data/spec/lib/license_finder/packages/activation_spec.rb +47 -0
  94. data/spec/lib/license_finder/{possible_license_files_spec.rb → packages/license_files_spec.rb} +2 -6
  95. data/spec/lib/license_finder/packages/licensing_spec.rb +1 -0
  96. data/spec/lib/license_finder/{possible_license_file_spec.rb → packages/possible_license_file_spec.rb} +0 -0
  97. data/spec/spec_helper.rb +2 -0
  98. data/spec/support/shared_examples_for_package_manager.rb +14 -1
  99. data/spec/support/test_fixtures.rb +7 -0
  100. metadata +117 -12
  101. data/spec/support/shared_examples_for_package.rb +0 -35
@@ -2,39 +2,39 @@ require 'feature_helper'
2
2
 
3
3
  describe "Whitelisted licenses" do
4
4
  # As a developer
5
- # I want to whitelist certain OSS licenses that my business has pre-approved
5
+ # I want to whitelist certain licenses that my business has pre-approved
6
6
  # So that any dependencies with those licenses do not show up as action items
7
7
 
8
- let(:user) { LicenseFinder::TestingDSL::User.new }
8
+ let(:developer) { LicenseFinder::TestingDSL::User.new }
9
9
 
10
- before { user.create_empty_project }
10
+ before { developer.create_empty_project }
11
11
 
12
12
  specify "approve dependencies with those licenses" do
13
- user.execute_command 'license_finder dependencies add bsd_gem BSD'
14
- user.execute_command 'license_finder whitelist add BSD'
13
+ developer.execute_command 'license_finder dependencies add bsd_gem BSD'
14
+ developer.execute_command 'license_finder whitelist add BSD'
15
15
 
16
- user.run_license_finder
17
- expect(user).to_not be_seeing 'bsd_gem'
16
+ developer.run_license_finder
17
+ expect(developer).to_not be_seeing 'bsd_gem'
18
18
  end
19
19
 
20
20
  specify "approve dependencies with any of those licenses" do
21
- user.execute_command 'license_finder dependencies add dep_with_many_licenses GPL'
22
- user.execute_command 'license_finder licenses add dep_with_many_licenses MIT'
23
- user.execute_command 'license_finder whitelist add GPL'
21
+ developer.execute_command 'license_finder dependencies add dep_with_many_licenses GPL'
22
+ developer.execute_command 'license_finder licenses add dep_with_many_licenses MIT'
23
+ developer.execute_command 'license_finder whitelist add GPL'
24
24
 
25
- user.run_license_finder
26
- expect(user).not_to be_seeing 'dep_with_many_licenses'
25
+ developer.run_license_finder
26
+ expect(developer).not_to be_seeing 'dep_with_many_licenses'
27
27
  end
28
28
 
29
29
  specify "are shown in the CLI" do
30
- user.execute_command 'license_finder whitelist add Expat'
31
- expect(user).to be_seeing 'Expat'
32
- user.execute_command 'license_finder whitelist list'
33
- expect(user).to be_seeing 'MIT'
34
-
35
- user.execute_command 'license_finder whitelist remove Expat'
36
- expect(user).to be_seeing 'Expat'
37
- user.execute_command 'license_finder whitelist list'
38
- expect(user).to_not be_seeing 'MIT'
30
+ developer.execute_command 'license_finder whitelist add Expat'
31
+ expect(developer).to be_seeing 'Expat'
32
+ developer.execute_command 'license_finder whitelist list'
33
+ expect(developer).to be_seeing 'MIT'
34
+
35
+ developer.execute_command 'license_finder whitelist remove Expat'
36
+ expect(developer).to be_seeing 'Expat'
37
+ developer.execute_command 'license_finder whitelist list'
38
+ expect(developer).to_not be_seeing 'MIT'
39
39
  end
40
40
  end
@@ -4,11 +4,11 @@ describe "Bower Dependencies" do
4
4
  # As a JS developer
5
5
  # I want to be able to manage Bower dependencies
6
6
 
7
- let(:user) { LicenseFinder::TestingDSL::User.new }
7
+ let(:js_developer) { LicenseFinder::TestingDSL::User.new }
8
8
 
9
9
  specify "are shown in reports" do
10
10
  LicenseFinder::TestingDSL::BowerProject.create
11
- user.run_license_finder
12
- expect(user).to be_seeing_line "gmaps, 0.2.30, MIT"
11
+ js_developer.run_license_finder
12
+ expect(js_developer).to be_seeing_line "gmaps, 0.2.30, MIT"
13
13
  end
14
14
  end
@@ -1,14 +1,14 @@
1
1
  require 'feature_helper'
2
2
 
3
3
  describe "CocoaPods Dependencies", ios: true do
4
- # As a Mac developer
4
+ # As a Cocoa developer
5
5
  # I want to be able to manage CocoaPods dependencies
6
6
 
7
- let(:user) { LicenseFinder::TestingDSL::User.new }
7
+ let(:cocoa_developer) { LicenseFinder::TestingDSL::User.new }
8
8
 
9
9
  specify "are shown in reports" do
10
10
  LicenseFinder::TestingDSL::CocoaPodsProject.create
11
- user.run_license_finder
12
- expect(user).to be_seeing_line "ABTest, 0.0.5, MIT"
11
+ cocoa_developer.run_license_finder
12
+ expect(cocoa_developer).to be_seeing_line "ABTest, 0.0.5, MIT"
13
13
  end
14
14
  end
@@ -4,11 +4,11 @@ describe "Gradle Dependencies" do
4
4
  # As a Java developer
5
5
  # I want to be able to manage Gradle dependencies
6
6
 
7
- let(:user) { LicenseFinder::TestingDSL::User.new }
7
+ let(:java_developer) { LicenseFinder::TestingDSL::User.new }
8
8
 
9
9
  specify "are shown in reports" do
10
10
  LicenseFinder::TestingDSL::GradleProject.create
11
- user.run_license_finder
12
- expect(user).to be_seeing_line 'junit, 4.11, "Common Public License Version 1.0"'
11
+ java_developer.run_license_finder
12
+ expect(java_developer).to be_seeing_line 'junit, 4.11, "Common Public License Version 1.0"'
13
13
  end
14
14
  end
@@ -4,11 +4,11 @@ describe "Maven Dependencies" do
4
4
  # As a Java developer
5
5
  # I want to be able to manage Maven dependencies
6
6
 
7
- let(:user) { LicenseFinder::TestingDSL::User.new }
7
+ let(:java_developer) { LicenseFinder::TestingDSL::User.new }
8
8
 
9
9
  specify "are shown in reports" do
10
10
  LicenseFinder::TestingDSL::MavenProject.create
11
- user.run_license_finder
12
- expect(user).to be_seeing_line 'junit, 4.11, "Common Public License Version 1.0"'
11
+ java_developer.run_license_finder
12
+ expect(java_developer).to be_seeing_line 'junit, 4.11, "Common Public License Version 1.0"'
13
13
  end
14
14
  end
@@ -4,11 +4,11 @@ describe "NPM Dependencies" do
4
4
  # As a Node developer
5
5
  # I want to be able to manage NPM dependencies
6
6
 
7
- let(:user) { LicenseFinder::TestingDSL::User.new }
7
+ let(:node_developer) { LicenseFinder::TestingDSL::User.new }
8
8
 
9
9
  specify "are shown in reports" do
10
10
  LicenseFinder::TestingDSL::NpmProject.create
11
- user.run_license_finder
12
- expect(user).to be_seeing_line "http-server, 0.6.1, MIT"
11
+ node_developer.run_license_finder
12
+ expect(node_developer).to be_seeing_line "http-server, 0.6.1, MIT"
13
13
  end
14
14
  end
@@ -4,11 +4,11 @@ describe "Pip Dependencies" do
4
4
  # As a Python developer
5
5
  # I want to be able to manage Pip dependencies
6
6
 
7
- let(:user) { LicenseFinder::TestingDSL::User.new }
7
+ let(:python_developer) { LicenseFinder::TestingDSL::User.new }
8
8
 
9
9
  specify "are shown in reports" do
10
10
  LicenseFinder::TestingDSL::PipProject.create
11
- user.run_license_finder
12
- expect(user).to be_seeing_line 'argparse, 1.2.1, "Python Software Foundation License"'
11
+ python_developer.run_license_finder
12
+ expect(python_developer).to be_seeing_line 'rsa, 3.1.4, "ASL 2"'
13
13
  end
14
14
  end
@@ -1,17 +1,18 @@
1
1
  require 'feature_helper'
2
2
 
3
3
  describe "CSV report" do
4
- # As a non-technical application product owner
5
- # I want license finder to generate an easy-to-understand text report
6
- # So that I can quickly review my application dependencies and licenses
4
+ # As a non-technical product owner
5
+ # I want a csv report
6
+ # So that I can easily review my application's dependencies and licenses
7
7
 
8
- let(:user) { LicenseFinder::TestingDSL::User.new }
8
+ let(:developer) { LicenseFinder::TestingDSL::User.new }
9
+ let(:product_owner) { LicenseFinder::TestingDSL::User.new }
9
10
 
10
11
  specify "shows dependency data in CSV form" do
11
- user.create_empty_project
12
- user.execute_command 'license_finder dependencies add info_gem BSD 1.1.1'
12
+ developer.create_empty_project
13
+ developer.execute_command 'license_finder dependencies add info_gem BSD 1.1.1'
13
14
 
14
- user.execute_command('license_finder report --format csv --columns approved name version licenses')
15
- expect(user).to be_seeing "Not approved,info_gem,1.1.1,BSD"
15
+ product_owner.execute_command('license_finder report --format csv --columns approved name version licenses')
16
+ expect(product_owner).to be_seeing "Not approved,info_gem,1.1.1,BSD"
16
17
  end
17
18
  end
@@ -1,11 +1,12 @@
1
1
  require 'feature_helper'
2
2
 
3
3
  describe "HTML report" do
4
- # As a non-technical application product owner
5
- # I want license finder to generate an easy-to-understand HTML report
6
- # So that I can quickly review my application dependencies and licenses
4
+ # As a non-technical product owner
5
+ # I want an HTML report
6
+ # So that I can easily review my application's dependencies and licenses
7
7
 
8
- let(:user) { LicenseFinder::TestingDSL::User.new }
8
+ let(:developer) { LicenseFinder::TestingDSL::User.new }
9
+ let(:product_owner) { LicenseFinder::TestingDSL::User.new }
9
10
 
10
11
  specify "shows basic dependency data" do
11
12
  gem_name = "a_gem"
@@ -18,11 +19,11 @@ describe "HTML report" do
18
19
  homepage: "http://a_gem.github.com"
19
20
  }
20
21
 
21
- project = user.create_ruby_app
22
- gem = user.create_gem gem_name, gem_attributes
22
+ project = developer.create_ruby_app
23
+ gem = developer.create_gem gem_name, gem_attributes
23
24
  project.depend_on gem, groups: [gem_group]
24
25
 
25
- user.view_html.in_dep(gem_name) do |section|
26
+ product_owner.view_html.in_dep(gem_name) do |section|
26
27
  expect(section.find("a[href='#{gem_attributes[:homepage]}']", text: gem_name)).to be
27
28
  expect(section).to have_content gem_attributes[:license]
28
29
  expect(section).to have_content gem_attributes[:summary]
@@ -33,12 +34,12 @@ describe "HTML report" do
33
34
  end
34
35
 
35
36
  specify "shows approval status of dependencies" do
36
- user.create_empty_project
37
- user.execute_command 'license_finder dependencies add gpl_dep GPL'
38
- user.execute_command 'license_finder dependencies add mit_dep MIT'
39
- user.execute_command 'license_finder whitelist add MIT'
37
+ developer.create_empty_project
38
+ developer.execute_command 'license_finder dependencies add gpl_dep GPL'
39
+ developer.execute_command 'license_finder dependencies add mit_dep MIT'
40
+ developer.execute_command 'license_finder whitelist add MIT'
40
41
 
41
- html = user.view_html
42
+ html = product_owner.view_html
42
43
  expect(html).to be_unapproved 'gpl_dep'
43
44
  expect(html).to be_approved 'mit_dep'
44
45
 
@@ -79,7 +79,7 @@ module LicenseFinder::TestingDSL
79
79
 
80
80
  class PipProject < Project
81
81
  def add_dep
82
- add_to_file("requirements.txt", 'argparse==1.2.1')
82
+ add_to_file("requirements.txt", 'rsa==3.1.4')
83
83
  end
84
84
 
85
85
  def install
@@ -6,21 +6,6 @@ module LicenseFinder
6
6
  BIN_PATH = ROOT_PATH.join("../../bin")
7
7
  end
8
8
 
9
- require 'license_finder/platform'
10
- require 'license_finder/version'
11
- require 'license_finder/logger'
12
- require 'license_finder/configuration'
13
-
14
- require 'license_finder/license'
15
-
16
- require 'license_finder/possible_license_file'
17
- require 'license_finder/possible_license_files'
18
- require 'license_finder/package'
19
- require 'license_finder/package_manager'
20
-
21
- require 'license_finder/decisions'
22
- require 'license_finder/decision_applier'
23
-
24
- require 'license_finder/report'
9
+ require 'license_finder/core'
25
10
 
26
11
  require 'license_finder/cli'
@@ -6,10 +6,9 @@ module LicenseFinder
6
6
 
7
7
  auditable
8
8
  desc "add DEPENDENCY...", "Approve one or more dependencies by name"
9
- def add(name, *other_names)
10
- names = modify_each(name, *other_names) do |name|
11
- decisions.approve(name, txn)
12
- end
9
+ def add(*names)
10
+ assert_some names
11
+ modifying { names.each { |name| decisions.approve(name, txn) } }
13
12
 
14
13
  say "The #{names.join(", ")} dependency has been approved!", :green
15
14
  end
@@ -1,3 +1,5 @@
1
+ require 'thor'
2
+
1
3
  module LicenseFinder
2
4
  module CLI
3
5
  class Base < Thor
@@ -5,14 +7,49 @@ module LicenseFinder
5
7
 
6
8
  no_commands do
7
9
  def decisions
8
- @decisions ||= Decisions.saved!(config.decisions_file)
10
+ license_finder.decisions
9
11
  end
10
12
  end
11
13
 
12
14
  private
13
15
 
14
- def config
15
- @config ||= Configuration.with_optional_saved_config(options)
16
+ def license_finder
17
+ @lf ||= LicenseFinder::Core.new(license_finder_config)
18
+ end
19
+
20
+ def license_finder_config
21
+ result = extract_options(:decisions_file, :gradle_command)
22
+ result[:logger] = logger_config
23
+ result[:project_path] = Pathname.pwd
24
+ result
25
+ end
26
+
27
+ def logger_config
28
+ @logger_config ||= extract_options(:quiet, :debug)
29
+ end
30
+
31
+ def say_each(coll)
32
+ if coll.any?
33
+ coll.each do |item|
34
+ say(block_given? ? yield(item) : item)
35
+ end
36
+ else
37
+ say '(none)'
38
+ end
39
+ end
40
+
41
+ def assert_some(things)
42
+ unless things.any?
43
+ raise ArgumentError, "wrong number of arguments (0 for 1+)", caller
44
+ end
45
+ end
46
+
47
+ def extract_options(*keys)
48
+ result = {}
49
+ keys.each do |key|
50
+ result[key.to_sym] = options[key.to_s] if options.has_key? key.to_s
51
+ end
52
+ result
16
53
  end
17
54
  end
18
55
  end
@@ -9,9 +9,9 @@ module LicenseFinder
9
9
  desc "add DEPENDENCY LICENSE [VERSION] [--approve]", "Add a dependency that is not managed by a package manager, optionally approving it at the same time"
10
10
  def add(name, license, version = nil)
11
11
  modifying {
12
- decisions.
13
- add_package(name, version, txn).
14
- license(name, license, txn)
12
+ decisions
13
+ .add_package(name, version, txn)
14
+ .license(name, license, txn)
15
15
  decisions.approve(name, txn) if options[:approve]
16
16
  }
17
17
  if options[:approve]
@@ -1,3 +1,6 @@
1
+ require 'license_finder/report'
2
+ require 'license_finder/version'
3
+
1
4
  module LicenseFinder
2
5
  module CLI
3
6
  class Main < Base
@@ -18,7 +21,7 @@ module LicenseFinder
18
21
  method_option :debug, type: :boolean, desc: "emit detailed info about what LicenseFinder is doing"
19
22
  desc "action_items", "List unapproved dependencies (the default action for `license_finder`)"
20
23
  def action_items
21
- unapproved = decision_applier.unapproved
24
+ unapproved = license_finder.unapproved
22
25
 
23
26
  if unapproved.empty?
24
27
  say "All dependencies are approved for use", :green
@@ -33,8 +36,8 @@ module LicenseFinder
33
36
 
34
37
  desc "report", "Print a report of the project's dependencies to stdout"
35
38
  def report
36
- dependencies = decision_applier(Logger.new(quiet: true))
37
- say report_of(dependencies.acknowledged)
39
+ logger_config[:quiet] = true
40
+ say report_of(license_finder.acknowledged)
38
41
  end
39
42
 
40
43
  desc "version", "Print the version of LicenseFinder"
@@ -52,30 +55,9 @@ module LicenseFinder
52
55
 
53
56
  private
54
57
 
55
- # The core of the system. The saved decisions are applied to the current
56
- # packages.
57
- def decision_applier(logger = Logger.new(options))
58
- DecisionApplier.new(
59
- decisions: decisions,
60
- packages: current_packages(logger)
61
- )
62
- end
63
-
64
- def current_packages(logger)
65
- PackageManager.current_packages(
66
- logger: logger,
67
- gradle_command: config.gradle_command,
68
- ignore_groups: decisions.ignored_groups
69
- )
70
- end
71
-
72
58
  def report_of(content)
73
59
  report = FORMATS[options[:format]]
74
- report.of(content, columns: options[:columns], project_name: fetch_project_name)
75
- end
76
-
77
- def fetch_project_name
78
- decisions.project_name || Pathname.pwd.basename.to_s
60
+ report.of(content, columns: options[:columns], project_name: license_finder.project_name)
79
61
  end
80
62
  end
81
63
  end
@@ -14,16 +14,6 @@ module LicenseFinder
14
14
 
15
15
  private
16
16
 
17
- def say_each(coll)
18
- if coll.any?
19
- coll.each do |item|
20
- say(block_given? ? yield(item) : item)
21
- end
22
- else
23
- say '(none)'
24
- end
25
- end
26
-
27
17
  def txn
28
18
  @txn ||= {
29
19
  who: options[:who],
@@ -32,17 +22,9 @@ module LicenseFinder
32
22
  }
33
23
  end
34
24
 
35
- def modifying
36
- # decisions = Decisions.saved! # is part of Base
37
- yield
38
- decisions.save!(config.decisions_file)
39
- end
40
-
41
- def modify_each(*things)
42
- modifying { things.each { |thing| yield thing } }
43
- things
25
+ def modifying(&block)
26
+ license_finder.modifying(&block)
44
27
  end
45
28
  end
46
29
  end
47
30
  end
48
-