leftovers 0.2.3 → 0.4.3

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 (147) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +39 -0
  3. data/README.md +65 -49
  4. data/docs/Configuration.md +627 -0
  5. data/exe/leftovers +2 -2
  6. data/leftovers.gemspec +13 -6
  7. data/lib/config/attr_encrypted.yml +3 -4
  8. data/lib/config/audited.yml +9 -4
  9. data/lib/config/datagrid.yml +1 -1
  10. data/lib/config/flipper.yml +1 -3
  11. data/lib/config/graphql.yml +15 -13
  12. data/lib/config/okcomputer.yml +1 -3
  13. data/lib/config/parser.yml +89 -91
  14. data/lib/config/rails.yml +126 -107
  15. data/lib/config/redcarpet.yml +35 -38
  16. data/lib/config/rollbar.yml +1 -3
  17. data/lib/config/rspec.yml +18 -10
  18. data/lib/config/ruby.yml +42 -49
  19. data/lib/config/selenium-webdriver.yml +19 -0
  20. data/lib/config/sidekiq.yml +4 -8
  21. data/lib/config/will_paginate.yml +12 -14
  22. data/lib/leftovers.rb +66 -54
  23. data/lib/leftovers/ast.rb +8 -0
  24. data/lib/leftovers/ast/builder.rb +6 -3
  25. data/lib/leftovers/ast/node.rb +66 -107
  26. data/lib/leftovers/backports.rb +24 -40
  27. data/lib/leftovers/cli.rb +27 -15
  28. data/lib/leftovers/collector.rb +8 -11
  29. data/lib/leftovers/config.rb +38 -13
  30. data/lib/leftovers/config_validator.rb +60 -0
  31. data/lib/leftovers/config_validator/error_processor.rb +196 -0
  32. data/lib/leftovers/config_validator/schema_hash.rb +496 -0
  33. data/lib/leftovers/definition.rb +16 -41
  34. data/lib/leftovers/definition_node.rb +36 -0
  35. data/lib/leftovers/definition_set.rb +17 -24
  36. data/lib/leftovers/dynamic_processors.rb +11 -0
  37. data/lib/leftovers/dynamic_processors/call.rb +25 -0
  38. data/lib/leftovers/dynamic_processors/call_definition.rb +31 -0
  39. data/lib/leftovers/dynamic_processors/definition.rb +26 -0
  40. data/lib/leftovers/dynamic_processors/each.rb +19 -0
  41. data/lib/leftovers/dynamic_processors/null.rb +9 -0
  42. data/lib/leftovers/erb.rb +2 -2
  43. data/lib/leftovers/file.rb +3 -5
  44. data/lib/leftovers/file_collector.rb +79 -61
  45. data/lib/leftovers/file_list.rb +9 -15
  46. data/lib/leftovers/haml.rb +9 -12
  47. data/lib/leftovers/matcher_builders.rb +24 -0
  48. data/lib/leftovers/matcher_builders/and.rb +19 -0
  49. data/lib/leftovers/matcher_builders/and_not.rb +14 -0
  50. data/lib/leftovers/matcher_builders/argument_node_value.rb +21 -0
  51. data/lib/leftovers/matcher_builders/name.rb +29 -0
  52. data/lib/leftovers/matcher_builders/node.rb +40 -0
  53. data/lib/leftovers/matcher_builders/node_has_argument.rb +71 -0
  54. data/lib/leftovers/matcher_builders/node_has_keyword_argument.rb +22 -0
  55. data/lib/leftovers/matcher_builders/node_has_positional_argument.rb +24 -0
  56. data/lib/leftovers/matcher_builders/node_name.rb +15 -0
  57. data/lib/leftovers/matcher_builders/node_pair_name.rb +18 -0
  58. data/lib/leftovers/matcher_builders/node_pair_value.rb +16 -0
  59. data/lib/leftovers/matcher_builders/node_path.rb +14 -0
  60. data/lib/leftovers/matcher_builders/node_type.rb +28 -0
  61. data/lib/leftovers/matcher_builders/or.rb +73 -0
  62. data/lib/leftovers/matcher_builders/path.rb +15 -0
  63. data/lib/leftovers/matcher_builders/string.rb +11 -0
  64. data/lib/leftovers/matcher_builders/string_pattern.rb +19 -0
  65. data/lib/leftovers/matcher_builders/unless.rb +13 -0
  66. data/lib/leftovers/matchers.rb +26 -0
  67. data/lib/leftovers/matchers/all.rb +25 -0
  68. data/lib/leftovers/matchers/and.rb +24 -0
  69. data/lib/leftovers/matchers/any.rb +27 -0
  70. data/lib/leftovers/matchers/node_has_any_keyword_argument.rb +28 -0
  71. data/lib/leftovers/matchers/node_has_any_positional_argument_with_value.rb +25 -0
  72. data/lib/leftovers/matchers/node_has_positional_argument.rb +23 -0
  73. data/lib/leftovers/matchers/node_has_positional_argument_with_value.rb +25 -0
  74. data/lib/leftovers/matchers/node_name.rb +23 -0
  75. data/lib/leftovers/matchers/node_pair_value.rb +23 -0
  76. data/lib/leftovers/matchers/node_path.rb +23 -0
  77. data/lib/leftovers/matchers/node_scalar_value.rb +25 -0
  78. data/lib/leftovers/matchers/node_type.rb +23 -0
  79. data/lib/leftovers/matchers/not.rb +23 -0
  80. data/lib/leftovers/matchers/or.rb +26 -0
  81. data/lib/leftovers/merged_config.rb +29 -14
  82. data/lib/leftovers/parser.rb +1 -4
  83. data/lib/leftovers/processor_builders.rb +22 -0
  84. data/lib/leftovers/processor_builders/action.rb +63 -0
  85. data/lib/leftovers/processor_builders/add_prefix.rb +20 -0
  86. data/lib/leftovers/processor_builders/add_suffix.rb +20 -0
  87. data/lib/leftovers/processor_builders/argument.rb +25 -0
  88. data/lib/leftovers/processor_builders/dynamic.rb +27 -0
  89. data/lib/leftovers/processor_builders/each.rb +36 -0
  90. data/lib/leftovers/processor_builders/each_action.rb +51 -0
  91. data/lib/leftovers/processor_builders/each_dynamic.rb +54 -0
  92. data/lib/leftovers/processor_builders/each_for_definition_set.rb +36 -0
  93. data/lib/leftovers/processor_builders/itself.rb +13 -0
  94. data/lib/leftovers/processor_builders/keyword.rb +24 -0
  95. data/lib/leftovers/processor_builders/keyword_argument.rb +14 -0
  96. data/lib/leftovers/processor_builders/transform.rb +55 -0
  97. data/lib/leftovers/processor_builders/transform_chain.rb +24 -0
  98. data/lib/leftovers/processor_builders/transform_set.rb +47 -0
  99. data/lib/leftovers/processor_builders/value.rb +13 -0
  100. data/lib/leftovers/rake_task.rb +4 -4
  101. data/lib/leftovers/reporter.rb +56 -4
  102. data/lib/leftovers/todo_reporter.rb +124 -0
  103. data/lib/leftovers/value_processors.rb +40 -0
  104. data/lib/leftovers/value_processors/add_dynamic_prefix.rb +31 -0
  105. data/lib/leftovers/value_processors/add_dynamic_suffix.rb +31 -0
  106. data/lib/leftovers/value_processors/add_prefix.rb +20 -0
  107. data/lib/leftovers/value_processors/add_suffix.rb +20 -0
  108. data/lib/leftovers/value_processors/camelize.rb +24 -0
  109. data/lib/leftovers/value_processors/capitalize.rb +19 -0
  110. data/lib/leftovers/value_processors/deconstantize.rb +24 -0
  111. data/lib/leftovers/value_processors/delete_after.rb +22 -0
  112. data/lib/leftovers/value_processors/delete_before.rb +22 -0
  113. data/lib/leftovers/value_processors/delete_prefix.rb +26 -0
  114. data/lib/leftovers/value_processors/delete_suffix.rb +26 -0
  115. data/lib/leftovers/value_processors/demodulize.rb +24 -0
  116. data/lib/leftovers/value_processors/downcase.rb +19 -0
  117. data/lib/leftovers/value_processors/each.rb +21 -0
  118. data/lib/leftovers/value_processors/each_for_definition_set.rb +29 -0
  119. data/lib/leftovers/value_processors/each_keyword.rb +27 -0
  120. data/lib/leftovers/value_processors/each_keyword_argument.rb +27 -0
  121. data/lib/leftovers/value_processors/each_positional_argument.rb +24 -0
  122. data/lib/leftovers/value_processors/itself.rb +17 -0
  123. data/lib/leftovers/value_processors/keyword.rb +36 -0
  124. data/lib/leftovers/value_processors/keyword_argument.rb +36 -0
  125. data/lib/leftovers/value_processors/parameterize.rb +24 -0
  126. data/lib/leftovers/value_processors/placeholder.rb +18 -0
  127. data/lib/leftovers/value_processors/pluralize.rb +24 -0
  128. data/lib/leftovers/value_processors/positional_argument.rb +26 -0
  129. data/lib/leftovers/value_processors/replace_value.rb +18 -0
  130. data/lib/leftovers/value_processors/return_definition.rb +26 -0
  131. data/lib/leftovers/value_processors/return_string.rb +14 -0
  132. data/lib/leftovers/value_processors/singularize.rb +24 -0
  133. data/lib/leftovers/value_processors/split.rb +22 -0
  134. data/lib/leftovers/value_processors/swapcase.rb +19 -0
  135. data/lib/leftovers/value_processors/titleize.rb +24 -0
  136. data/lib/leftovers/value_processors/underscore.rb +24 -0
  137. data/lib/leftovers/value_processors/upcase.rb +19 -0
  138. data/lib/leftovers/version.rb +1 -1
  139. metadata +201 -25
  140. data/lib/config/selenium.yml +0 -21
  141. data/lib/leftovers/argument_rule.rb +0 -219
  142. data/lib/leftovers/core_ext.rb +0 -13
  143. data/lib/leftovers/hash_rule.rb +0 -40
  144. data/lib/leftovers/name_rule.rb +0 -53
  145. data/lib/leftovers/rule.rb +0 -74
  146. data/lib/leftovers/transform_rule.rb +0 -171
  147. data/lib/leftovers/value_rule.rb +0 -56
@@ -1,38 +1,35 @@
1
- ---
2
- rules:
3
- skip: true
4
- names:
5
- - block_code
6
- - block_quote
7
- - block_html
8
- - footnotes
9
- - footnote_def
10
- - header
11
- - hrule
12
- - list
13
- - list_item
14
- - paragraph
15
- - table
16
- - table_row
17
- - table_cell
18
- - autolink
19
- - codespan
20
- - double_emphasis
21
- - emphasis
22
- - image
23
- - linebreak
24
- - link
25
- - raw_html
26
- - triple_emphasis
27
- - strikethrough
28
- - superscript
29
- - underline
30
- - highlight
31
- - quote
32
- - footnote_ref
33
- - entity
34
- - normal_text
35
- - doc_header
36
- - doc_footer
37
- - preprocess
38
- - postprocess
1
+ keep:
2
+ - autolink
3
+ - block_code
4
+ - block_html
5
+ - block_quote
6
+ - codespan
7
+ - doc_footer
8
+ - doc_header
9
+ - double_emphasis
10
+ - emphasis
11
+ - entity
12
+ - footnote_def
13
+ - footnote_ref
14
+ - footnotes
15
+ - header
16
+ - highlight
17
+ - hrule
18
+ - image
19
+ - linebreak
20
+ - link
21
+ - list
22
+ - list_item
23
+ - normal_text
24
+ - paragraph
25
+ - postprocess
26
+ - preprocess
27
+ - quote
28
+ - raw_html
29
+ - strikethrough
30
+ - superscript
31
+ - table
32
+ - table_cell
33
+ - table_row
34
+ - triple_emphasis
35
+ - underline
@@ -1,3 +1 @@
1
- rules:
2
- skip: true
3
- name: current_user_for_rollbar
1
+ keep: current_user_for_rollbar
data/lib/config/rspec.yml CHANGED
@@ -1,8 +1,10 @@
1
1
  test_paths:
2
2
  - /spec/
3
3
 
4
- rules:
5
- - skip: true
4
+ # split into gems too
5
+
6
+ keep:
7
+ - path: /spec/
6
8
  name:
7
9
  # matchers
8
10
  - diffable?
@@ -22,28 +24,31 @@ rules:
22
24
  - dump_summary
23
25
  - seed
24
26
  - close
27
+ dynamic:
25
28
  - name:
26
29
  - have_attributes
27
30
  - has_attributes?
28
31
  - receive_messages
29
32
  calls:
30
- - keys: '*'
33
+ keywords: '**'
34
+ path: /spec/
31
35
  - name:
32
36
  - receive
33
37
  - respond_to
34
38
  calls:
35
- argument: 1
39
+ argument: 0
40
+ path: /spec/
36
41
  - name: define_negated_matcher
37
- defines:
38
- argument: 1
39
- calls:
40
- argument: 2
42
+ defines: 0
43
+ calls: 1
44
+ path: /spec/
41
45
  - name:
42
46
  has_prefix: be_
43
47
  calls:
44
48
  itself: true
45
49
  delete_prefix: be_
46
50
  add_suffix: '?'
51
+ path: /spec/
47
52
  - name:
48
53
  has_prefix: have_
49
54
  calls:
@@ -51,6 +56,9 @@ rules:
51
56
  add_suffix: '?'
52
57
  delete_prefix: have_
53
58
  add_prefix: has_
59
+ path: /spec/
54
60
  - name: let
55
- defines:
56
- argument: 1
61
+ unless:
62
+ has_argument: 1
63
+ defines: 0
64
+ path: /spec/
data/lib/config/ruby.yml CHANGED
@@ -1,48 +1,48 @@
1
1
  ---
2
2
  include_paths:
3
- - '*.rb'
4
- - Gemfile
5
- - '*.erb'
3
+ - '#!:ruby'
6
4
  - '*.gemspec'
7
5
  - .irbrc
8
6
  - irb.rc
9
7
  - _irbrc
10
8
  - $irbrc
9
+ - Gemfile
10
+ - '*.erb'
11
+ - '*.rb'
11
12
 
12
13
  test_paths:
13
14
  - /tests/
14
15
  - /test/
15
16
 
16
- rules:
17
- - skip: true
18
- name:
19
- - initialize # called by new
20
- - inspect # called by repl, to_s
21
- - respond_to_missing? # called by respond_to?
22
- - method_missing # called by method dispatch
23
- - coerce # called by Numeric
24
- - to_s # called by "#{}"
25
- - to_ary # called by Array(), []+
26
- - to_a # called by Array(), *splat
27
- - to_str # called by String(), ""+
28
- - to_hash # called by Hash(), **splat, {}.merge
29
- - to_int # called by Integer()
30
- - to_i # called by Integer()
31
- - to_f # called by Float()
32
- - <=> # called by Comparable
33
- - each # called by Enumerable
34
- - marshal_dump # called by Marshal.dump
35
- - marshal_load # called by Marshal.load
36
- - _dump # called by Marshal.dump
37
- - _load # called by Marshal.load
38
- - inherited # called by Subclass < Klass or Class.new(Klass)
39
- - extended # called by extend Module
40
- - included # called by include Module
41
- - $VERBOSE # called by whatever is outputting warnings i guess
42
- - === # called by when
43
- - == # called by Array value, Hash value equality, ===
44
- - hash # called by Hash key equality
45
- - eql? # called by Hash key equality
17
+ keep:
18
+ - initialize # called by new
19
+ - inspect # called by repl, to_s
20
+ - respond_to_missing? # called by respond_to?
21
+ - method_missing # called by method dispatch
22
+ - coerce # called by Numeric
23
+ - to_s # called by "#{}"
24
+ - to_ary # called by Array(), []+
25
+ - to_a # called by Array(), *splat
26
+ - to_str # called by String(), ""+
27
+ - to_hash # called by Hash(), **splat, {}.merge
28
+ - to_int # called by Integer()
29
+ - to_i # called by Integer()
30
+ - to_f # called by Float()
31
+ - <=> # called by Comparable
32
+ - each # called by Enumerable
33
+ - marshal_dump # called by Marshal.dump
34
+ - marshal_load # called by Marshal.load
35
+ - _dump # called by Marshal.dump
36
+ - _load # called by Marshal.load
37
+ - inherited # called by Subclass < Klass or Class.new(Klass)
38
+ - extended # called by extend Module
39
+ - included # called by include Module
40
+ - $VERBOSE # called by whatever is outputting warnings i guess
41
+ - === # called by when
42
+ - == # called by Array value, Hash value equality, ===
43
+ - hash # called by Hash key equality
44
+ - eql? # called by Hash key equality
45
+ dynamic:
46
46
  - name:
47
47
  - send
48
48
  - public_send
@@ -50,8 +50,7 @@ rules:
50
50
  - method
51
51
  - respond_to?
52
52
  - instance_method
53
- calls:
54
- argument: 1
53
+ calls: 0
55
54
  - name: attr_reader
56
55
  defines:
57
56
  argument: '*'
@@ -65,27 +64,21 @@ rules:
65
64
  - name: attr_accessor
66
65
  defines:
67
66
  - argument: '*'
68
- transforms:
69
- - original
70
- - add_suffix: '='
67
+ add_suffix: '='
68
+ - argument: '*'
71
69
  calls:
72
70
  argument: '*'
73
71
  add_prefix: '@'
74
72
  - name: define_method
75
- defines:
76
- argument: 1
73
+ defines: 0
77
74
  - name: alias_method
78
- defines:
79
- argument: 1
80
- calls:
81
- argument: 2
75
+ defines: 0
76
+ calls: 1
82
77
  - name:
83
78
  - instance_variable_get
84
- - class_variable_set
85
- calls:
86
- argument: 1
79
+ - class_variable_get
80
+ calls: 0
87
81
  - name:
88
82
  - instance_variable_set
89
83
  - class_variable_set
90
- defines:
91
- argument: 1
84
+ defines: 0
@@ -0,0 +1,19 @@
1
+ keep:
2
+ - before_navigate_to
3
+ - before_navigate_back
4
+ - after_navigate_back
5
+ - before_navigate_forward
6
+ - after_navigate_forward
7
+ - before_find
8
+ - after_find
9
+ - before_click
10
+ - before_change_value_of
11
+ - after_change_value_of
12
+ - before_execute_script
13
+ - after_execute_script
14
+ - before_quit
15
+ - before_close
16
+ - after_navigate_to
17
+ - after_click
18
+ - after_quit
19
+ - after_close
@@ -1,13 +1,9 @@
1
- rules:
2
- - skip: true
3
- names:
4
- - on_complete
1
+ keep: on_complete
2
+ dynamic:
5
3
  - names:
6
4
  - perform_async
7
5
  calls:
8
- itself: true
9
- delete_suffix: _async
6
+ value: perform
10
7
  - name: register
11
8
  calls:
12
- argument: 2
13
-
9
+ argument: 1
@@ -1,14 +1,12 @@
1
- rules:
2
- skip: true
3
- name:
4
- # WillPaginate::ViewHelpers::LinkRenderer
5
- - page_number
6
- - gap
7
- - previous_page
8
- - next_page
9
- - previous_or_next_page
10
- - html_container
11
- - url
12
- - prepare
13
- - to_html
14
- - container_attributes
1
+ keep:
2
+ # WillPaginate::ViewHelpers::LinkRenderer
3
+ - page_number
4
+ - gap
5
+ - previous_page
6
+ - next_page
7
+ - previous_or_next_page
8
+ - html_container
9
+ - url
10
+ - prepare
11
+ - to_html
12
+ - container_attributes
data/lib/leftovers.rb CHANGED
@@ -1,22 +1,39 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './leftovers/core_ext'
4
- require_relative './leftovers/backports'
5
- require_relative './leftovers/collector'
6
- require_relative './leftovers/merged_config'
7
- require_relative './leftovers/reporter'
8
-
9
3
  module Leftovers # rubocop:disable Metrics/ModuleLength
4
+ class Error < ::StandardError; end
5
+
10
6
  module_function
11
7
 
8
+ autoload(:AST, "#{__dir__}/leftovers/ast")
9
+ autoload(:Backports, "#{__dir__}/leftovers/backports")
10
+ autoload(:CLI, "#{__dir__}/leftovers/cli")
11
+ autoload(:Collector, "#{__dir__}/leftovers/collector")
12
+ autoload(:ConfigValidator, "#{__dir__}/leftovers/config_validator")
13
+ autoload(:Config, "#{__dir__}/leftovers/config")
14
+ autoload(:DefinitionNode, "#{__dir__}/leftovers/definition_node")
15
+ autoload(:DefinitionSet, "#{__dir__}/leftovers/definition_set")
16
+ autoload(:Definition, "#{__dir__}/leftovers/definition")
17
+ autoload(:ERB, "#{__dir__}/leftovers/erb")
18
+ autoload(:FileCollector, "#{__dir__}/leftovers/file_collector")
19
+ autoload(:FileList, "#{__dir__}/leftovers/file_list")
20
+ autoload(:File, "#{__dir__}/leftovers/file")
21
+ autoload(:Haml, "#{__dir__}/leftovers/haml")
22
+ autoload(:MatcherBuilders, "#{__dir__}/leftovers/matcher_builders")
23
+ autoload(:Matchers, "#{__dir__}/leftovers/matchers")
24
+ autoload(:MergedConfig, "#{__dir__}/leftovers/merged_config")
25
+ autoload(:Parser, "#{__dir__}/leftovers/parser")
26
+ autoload(:ProcessorBuilders, "#{__dir__}/leftovers/processor_builders")
27
+ autoload(:RakeTask, "#{__dir__}/leftovers/rake_task")
28
+ autoload(:Reporter, "#{__dir__}/leftovers/reporter")
29
+ autoload(:TodoReporter, "#{__dir__}/leftovers/todo_reporter")
30
+ autoload(:DynamicProcessors, "#{__dir__}/leftovers/dynamic_processors")
31
+ autoload(:ValueProcessors, "#{__dir__}/leftovers/value_processors")
32
+ autoload(:VERSION, "#{__dir__}/leftovers/version")
33
+
12
34
  class << self
13
- attr_accessor :parallel
35
+ attr_accessor :parallel, :progress, :reporter
14
36
  alias_method :parallel?, :parallel
15
-
16
- attr_accessor :quiet
17
- alias_method :quiet?, :quiet
18
-
19
- attr_accessor :progress
20
37
  alias_method :progress?, :progress
21
38
  end
22
39
 
@@ -29,7 +46,7 @@ module Leftovers # rubocop:disable Metrics/ModuleLength
29
46
  end
30
47
 
31
48
  def config
32
- @config ||= Leftovers::MergedConfig.new
49
+ @config ||= Leftovers::MergedConfig.new(load_defaults: true)
33
50
  end
34
51
 
35
52
  def collector
@@ -40,24 +57,21 @@ module Leftovers # rubocop:disable Metrics/ModuleLength
40
57
  @reporter ||= Leftovers::Reporter.new
41
58
  end
42
59
 
43
- def leftovers # rubocop:disable Metrics/MethodLength
60
+ def leftovers
44
61
  @leftovers ||= begin
45
62
  collector.collect
46
- collector.definitions.reject do |definition|
47
- definition.skipped? || definition.in_collection?
48
- end
63
+ collector.definitions.reject(&:in_collection?)
49
64
  end
50
65
  end
51
66
 
52
- def run(stdout: StringIO.new, stderr: StringIO.new) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
53
- reset
67
+ def run(stdout: StringIO.new, stderr: StringIO.new) # rubocop:disable Metrics/MethodLength
54
68
  @stdout = stdout
55
69
  @stderr = stderr
56
- return 0 if leftovers.empty?
70
+ return reporter.report_success if leftovers.empty?
57
71
 
58
72
  only_test = []
59
73
  none = []
60
- leftovers.sort.each do |definition|
74
+ leftovers.sort_by(&:location_s).each do |definition|
61
75
  if !definition.test? && definition.in_test_collection?
62
76
  only_test << definition
63
77
  else
@@ -65,20 +79,10 @@ module Leftovers # rubocop:disable Metrics/ModuleLength
65
79
  end
66
80
  end
67
81
 
68
- unless only_test.empty?
69
- puts "\e[31mOnly directly called in tests:\e[0m"
70
- only_test.each { |definition| reporter.call(definition) }
71
- end
72
-
73
- unless none.empty?
74
- puts "\e[31mNot directly called at all:\e[0m"
75
- none.each { |definition| reporter.call(definition) }
76
- end
77
-
78
- 1
82
+ reporter.report(only_test: only_test, none: none)
79
83
  end
80
84
 
81
- def reset # rubocop:disable Metrics/MethodLength, Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity
85
+ def reset # rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity
82
86
  remove_instance_variable(:@config) if defined?(@config)
83
87
  remove_instance_variable(:@collector) if defined?(@collector)
84
88
  remove_instance_variable(:@reporter) if defined?(@reporter)
@@ -87,20 +91,28 @@ module Leftovers # rubocop:disable Metrics/ModuleLength
87
91
  remove_instance_variable(:@stdout) if defined?(@stdout)
88
92
  remove_instance_variable(:@stderr) if defined?(@stderr)
89
93
  remove_instance_variable(:@parallel) if defined?(@parallel)
90
- remove_instance_variable(:@quiet) if defined?(@quiet)
91
94
  remove_instance_variable(:@pwd) if defined?(@pwd)
92
95
  end
93
96
 
97
+ def resolution_instructions_link
98
+ "https://github.com/robotdana/leftovers/tree/v#{Leftovers::VERSION}/README.md#how_to_resolve"
99
+ end
100
+
94
101
  def warn(message)
95
- stderr.puts("\e[2K#{message}") unless quiet?
102
+ stderr.puts("\e[2K#{message}")
103
+ end
104
+
105
+ def error(message)
106
+ warn(message)
107
+ exit 1
96
108
  end
97
109
 
98
110
  def puts(message)
99
- stdout.puts("\e[2K#{message}") unless quiet?
111
+ stdout.puts("\e[2K#{message}")
100
112
  end
101
113
 
102
114
  def print(message)
103
- stdout.print(message) unless quiet?
115
+ stdout.print(message)
104
116
  end
105
117
 
106
118
  def newline
@@ -111,18 +123,26 @@ module Leftovers # rubocop:disable Metrics/ModuleLength
111
123
  @pwd ||= Pathname.new(Dir.pwd + '/')
112
124
  end
113
125
 
114
- def try_require(*requirables, message: nil) # rubocop:disable Metrics/MethodLength
126
+ def exit(status = 0)
127
+ throw :leftovers_exit, status
128
+ end
129
+
130
+ def try_require(requirable, message: nil) # rubocop:disable Metrics/MethodLength
115
131
  @try_require ||= {}
116
- requirables.each do |requirable|
117
- begin
118
- return @try_require[requirable] if @try_require.key?(requirable)
119
-
120
- @try_require[requirable] = require requirable
121
- rescue LoadError
122
- warn message if message
123
- @try_require[requirable] = false
132
+
133
+ @try_require[requirable] = begin
134
+ if @try_require.key?(requirable)
135
+ @try_require[requirable]
136
+ else
137
+ require requirable
138
+ true
124
139
  end
140
+ rescue LoadError
141
+ false
125
142
  end
143
+
144
+ warn message if !@try_require[requirable] && message
145
+ @try_require[requirable]
126
146
  end
127
147
 
128
148
  def each_or_self(value, &block)
@@ -132,12 +152,4 @@ module Leftovers # rubocop:disable Metrics/ModuleLength
132
152
  else yield(value)
133
153
  end
134
154
  end
135
-
136
- def array_wrap(value)
137
- case value
138
- when nil then [].freeze
139
- when Array then value
140
- else [value]
141
- end
142
- end
143
155
  end