annotaterb 4.1.1 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +68 -0
  3. data/VERSION +1 -1
  4. data/exe/annotaterb +7 -7
  5. data/lib/annotate_rb/active_record_patch.rb +2 -0
  6. data/lib/annotate_rb/commands/annotate_models.rb +0 -1
  7. data/lib/annotate_rb/commands/annotate_routes.rb +0 -1
  8. data/lib/annotate_rb/commands/print_help.rb +0 -1
  9. data/lib/annotate_rb/commands/print_version.rb +0 -1
  10. data/lib/annotate_rb/commands.rb +4 -4
  11. data/lib/annotate_rb/config_finder.rb +1 -1
  12. data/lib/annotate_rb/config_loader.rb +2 -2
  13. data/lib/annotate_rb/core.rb +3 -3
  14. data/lib/annotate_rb/helper.rb +16 -0
  15. data/lib/annotate_rb/model_annotator/{annotation_generator.rb → annotation_builder.rb} +18 -14
  16. data/lib/annotate_rb/model_annotator/annotation_decider.rb +10 -12
  17. data/lib/annotate_rb/model_annotator/annotation_diff.rb +1 -1
  18. data/lib/annotate_rb/model_annotator/annotation_diff_generator.rb +9 -9
  19. data/lib/annotate_rb/model_annotator/annotation_pattern_generator.rb +3 -3
  20. data/lib/annotate_rb/model_annotator/annotator.rb +12 -53
  21. data/lib/annotate_rb/model_annotator/column_annotation/annotation_builder.rb +135 -0
  22. data/lib/annotate_rb/model_annotator/column_annotation/attributes_builder.rb +104 -0
  23. data/lib/annotate_rb/model_annotator/column_annotation/column_wrapper.rb +103 -0
  24. data/lib/annotate_rb/model_annotator/column_annotation/type_builder.rb +54 -0
  25. data/lib/annotate_rb/model_annotator/column_annotation.rb +12 -0
  26. data/lib/annotate_rb/model_annotator/file_builder.rb +58 -0
  27. data/lib/annotate_rb/model_annotator/file_components.rb +78 -0
  28. data/lib/annotate_rb/model_annotator/file_name_resolver.rb +3 -3
  29. data/lib/annotate_rb/model_annotator/foreign_key_annotation/annotation_builder.rb +57 -0
  30. data/lib/annotate_rb/model_annotator/foreign_key_annotation.rb +9 -0
  31. data/lib/annotate_rb/model_annotator/index_annotation/annotation_builder.rb +113 -0
  32. data/lib/annotate_rb/model_annotator/index_annotation.rb +9 -0
  33. data/lib/annotate_rb/model_annotator/magic_comment_parser.rb +32 -0
  34. data/lib/annotate_rb/model_annotator/model_class_getter.rb +6 -6
  35. data/lib/annotate_rb/model_annotator/model_files_getter.rb +12 -10
  36. data/lib/annotate_rb/model_annotator/model_wrapper.rb +44 -37
  37. data/lib/annotate_rb/model_annotator/pattern_getter.rb +142 -10
  38. data/lib/annotate_rb/model_annotator/project_annotation_remover.rb +65 -0
  39. data/lib/annotate_rb/model_annotator/project_annotator.rb +63 -0
  40. data/lib/annotate_rb/model_annotator/related_files_list_builder.rb +16 -18
  41. data/lib/annotate_rb/model_annotator/single_file_annotation_remover.rb +37 -0
  42. data/lib/annotate_rb/model_annotator/single_file_annotator.rb +49 -0
  43. data/lib/annotate_rb/model_annotator/{file_annotator_instruction.rb → single_file_annotator_instruction.rb} +2 -2
  44. data/lib/annotate_rb/model_annotator/single_file_remove_annotation_instruction.rb +15 -0
  45. data/lib/annotate_rb/model_annotator.rb +25 -26
  46. data/lib/annotate_rb/options.rb +20 -25
  47. data/lib/annotate_rb/parser.rb +150 -142
  48. data/lib/annotate_rb/rake_bootstrapper.rb +8 -8
  49. data/lib/annotate_rb/route_annotator/annotation_processor.rb +7 -8
  50. data/lib/annotate_rb/route_annotator/annotator.rb +2 -2
  51. data/lib/annotate_rb/route_annotator/base_processor.rb +3 -3
  52. data/lib/annotate_rb/route_annotator/header_generator.rb +15 -15
  53. data/lib/annotate_rb/route_annotator/helper.rb +9 -9
  54. data/lib/annotate_rb/route_annotator/removal_processor.rb +4 -4
  55. data/lib/annotate_rb/route_annotator.rb +6 -6
  56. data/lib/annotate_rb/runner.rb +0 -4
  57. data/lib/annotate_rb/tasks/annotate_models_migrate.rake +5 -5
  58. data/lib/annotate_rb.rb +19 -19
  59. data/lib/generators/annotate_rb/install/install_generator.rb +3 -2
  60. data/lib/generators/annotate_rb/install/templates/annotate_rb.rake +1 -1
  61. metadata +22 -16
  62. data/lib/annotate_rb/model_annotator/column_annotation_builder.rb +0 -92
  63. data/lib/annotate_rb/model_annotator/column_attributes_builder.rb +0 -102
  64. data/lib/annotate_rb/model_annotator/column_type_builder.rb +0 -51
  65. data/lib/annotate_rb/model_annotator/column_wrapper.rb +0 -84
  66. data/lib/annotate_rb/model_annotator/constants.rb +0 -22
  67. data/lib/annotate_rb/model_annotator/file_annotation_remover.rb +0 -25
  68. data/lib/annotate_rb/model_annotator/file_annotator.rb +0 -77
  69. data/lib/annotate_rb/model_annotator/file_patterns.rb +0 -129
  70. data/lib/annotate_rb/model_annotator/foreign_key_annotation_builder.rb +0 -55
  71. data/lib/annotate_rb/model_annotator/helper.rb +0 -107
  72. data/lib/annotate_rb/model_annotator/index_annotation_builder.rb +0 -74
  73. data/lib/annotate_rb/model_annotator/model_file_annotator.rb +0 -55
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AnnotateRb
4
+ module ModelAnnotator
5
+ # A plain old Ruby object (PORO) that contains all necessary information for SingleFileAnnotationRemover
6
+ class SingleFileRemoveAnnotationInstruction
7
+ def initialize(file, options = {})
8
+ @file = file # Path to file
9
+ @options = options
10
+ end
11
+
12
+ attr_reader :file, :options
13
+ end
14
+ end
15
+ end
@@ -2,31 +2,30 @@
2
2
 
3
3
  module AnnotateRb
4
4
  module ModelAnnotator
5
- autoload :Annotator, 'annotate_rb/model_annotator/annotator'
6
- autoload :Helper, 'annotate_rb/model_annotator/helper'
7
- autoload :FilePatterns, 'annotate_rb/model_annotator/file_patterns'
8
- autoload :Constants, 'annotate_rb/model_annotator/constants'
9
- autoload :PatternGetter, 'annotate_rb/model_annotator/pattern_getter'
10
- autoload :BadModelFileError, 'annotate_rb/model_annotator/bad_model_file_error'
11
- autoload :FileNameResolver, 'annotate_rb/model_annotator/file_name_resolver'
12
- autoload :FileAnnotationRemover, 'annotate_rb/model_annotator/file_annotation_remover'
13
- autoload :AnnotationPatternGenerator, 'annotate_rb/model_annotator/annotation_pattern_generator'
14
- autoload :ModelClassGetter, 'annotate_rb/model_annotator/model_class_getter'
15
- autoload :ModelFilesGetter, 'annotate_rb/model_annotator/model_files_getter'
16
- autoload :FileAnnotator, 'annotate_rb/model_annotator/file_annotator'
17
- autoload :ModelFileAnnotator, 'annotate_rb/model_annotator/model_file_annotator'
18
- autoload :ModelWrapper, 'annotate_rb/model_annotator/model_wrapper'
19
- autoload :AnnotationGenerator, 'annotate_rb/model_annotator/annotation_generator'
20
- autoload :ColumnAttributesBuilder, 'annotate_rb/model_annotator/column_attributes_builder'
21
- autoload :ColumnTypeBuilder, 'annotate_rb/model_annotator/column_type_builder'
22
- autoload :ColumnWrapper, 'annotate_rb/model_annotator/column_wrapper'
23
- autoload :ColumnAnnotationBuilder, 'annotate_rb/model_annotator/column_annotation_builder'
24
- autoload :IndexAnnotationBuilder, 'annotate_rb/model_annotator/index_annotation_builder'
25
- autoload :ForeignKeyAnnotationBuilder, 'annotate_rb/model_annotator/foreign_key_annotation_builder'
26
- autoload :RelatedFilesListBuilder, 'annotate_rb/model_annotator/related_files_list_builder'
27
- autoload :AnnotationDecider, 'annotate_rb/model_annotator/annotation_decider'
28
- autoload :FileAnnotatorInstruction, 'annotate_rb/model_annotator/file_annotator_instruction'
29
- autoload :AnnotationDiffGenerator, 'annotate_rb/model_annotator/annotation_diff_generator'
30
- autoload :AnnotationDiff, 'annotate_rb/model_annotator/annotation_diff'
5
+ autoload :Annotator, "annotate_rb/model_annotator/annotator"
6
+ autoload :PatternGetter, "annotate_rb/model_annotator/pattern_getter"
7
+ autoload :BadModelFileError, "annotate_rb/model_annotator/bad_model_file_error"
8
+ autoload :FileNameResolver, "annotate_rb/model_annotator/file_name_resolver"
9
+ autoload :SingleFileAnnotationRemover, "annotate_rb/model_annotator/single_file_annotation_remover"
10
+ autoload :AnnotationPatternGenerator, "annotate_rb/model_annotator/annotation_pattern_generator"
11
+ autoload :ModelClassGetter, "annotate_rb/model_annotator/model_class_getter"
12
+ autoload :ModelFilesGetter, "annotate_rb/model_annotator/model_files_getter"
13
+ autoload :SingleFileAnnotator, "annotate_rb/model_annotator/single_file_annotator"
14
+ autoload :ModelWrapper, "annotate_rb/model_annotator/model_wrapper"
15
+ autoload :AnnotationBuilder, "annotate_rb/model_annotator/annotation_builder"
16
+ autoload :ColumnAnnotation, "annotate_rb/model_annotator/column_annotation"
17
+ autoload :IndexAnnotation, "annotate_rb/model_annotator/index_annotation"
18
+ autoload :ForeignKeyAnnotation, "annotate_rb/model_annotator/foreign_key_annotation"
19
+ autoload :RelatedFilesListBuilder, "annotate_rb/model_annotator/related_files_list_builder"
20
+ autoload :AnnotationDecider, "annotate_rb/model_annotator/annotation_decider"
21
+ autoload :SingleFileAnnotatorInstruction, "annotate_rb/model_annotator/single_file_annotator_instruction"
22
+ autoload :SingleFileRemoveAnnotationInstruction, "annotate_rb/model_annotator/single_file_remove_annotation_instruction"
23
+ autoload :AnnotationDiffGenerator, "annotate_rb/model_annotator/annotation_diff_generator"
24
+ autoload :AnnotationDiff, "annotate_rb/model_annotator/annotation_diff"
25
+ autoload :FileBuilder, "annotate_rb/model_annotator/file_builder"
26
+ autoload :MagicCommentParser, "annotate_rb/model_annotator/magic_comment_parser"
27
+ autoload :FileComponents, "annotate_rb/model_annotator/file_components"
28
+ autoload :ProjectAnnotator, "annotate_rb/model_annotator/project_annotator"
29
+ autoload :ProjectAnnotationRemover, "annotate_rb/model_annotator/project_annotation_remover"
31
30
  end
32
31
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'forwardable'
3
+ require "forwardable"
4
4
 
5
5
  module AnnotateRb
6
6
  # Used to hold all of the options when annotating models and routes.
@@ -16,12 +16,13 @@ module AnnotateRb
16
16
 
17
17
  POSITION_OPTIONS = {
18
18
  position: nil, # ModelAnnotator, RouteAnnotator
19
+ position_in_additional_file_patterns: nil, # ModelAnnotator
19
20
  position_in_class: nil, # ModelAnnotator
20
- position_in_factory: nil, # Unused
21
- position_in_fixture: nil, # Unused
21
+ position_in_factory: nil, # ModelAnnotator
22
+ position_in_fixture: nil, # ModelAnnotator
22
23
  position_in_routes: nil, # RouteAnnotator
23
- position_in_serializer: nil, # Unused
24
- position_in_test: nil, # Unused
24
+ position_in_serializer: nil, # ModelAnnotator
25
+ position_in_test: nil # ModelAnnotator
25
26
  }.freeze
26
27
 
27
28
  FLAG_OPTIONS = {
@@ -50,7 +51,7 @@ module AnnotateRb
50
51
  sort: false, # ModelAnnotator
51
52
  timestamp: false, # RouteAnnotator
52
53
  trace: false, # ModelAnnotator, but is part of Core
53
- with_comment: true, # ModelAnnotator
54
+ with_comment: true # ModelAnnotator
54
55
  }.freeze
55
56
 
56
57
  OTHER_OPTIONS = {
@@ -59,10 +60,10 @@ module AnnotateRb
59
60
  debug: false, # Core
60
61
 
61
62
  # ModelAnnotator
62
- hide_default_column_types: '',
63
+ hide_default_column_types: "",
63
64
 
64
65
  # ModelAnnotator
65
- hide_limit_column_types: '',
66
+ hide_limit_column_types: "",
66
67
 
67
68
  ignore_columns: nil, # ModelAnnotator
68
69
  ignore_routes: nil, # RouteAnnotator
@@ -73,26 +74,20 @@ module AnnotateRb
73
74
  target_action: :do_annotations, # Core; Possible values: :do_annotations, :remove_annotations
74
75
  wrapper: nil, # ModelAnnotator, RouteAnnotator
75
76
  wrapper_close: nil, # ModelAnnotator, RouteAnnotator
76
- wrapper_open: nil, # ModelAnnotator, RouteAnnotator
77
+ wrapper_open: nil # ModelAnnotator, RouteAnnotator
77
78
  }.freeze
78
79
 
79
80
  PATH_OPTIONS = {
80
81
  additional_file_patterns: [], # ModelAnnotator
81
- model_dir: ['app/models'], # ModelAnnotator
82
+ model_dir: ["app/models"], # ModelAnnotator
82
83
  require: [], # Core
83
- root_dir: [''], # Core; Old model Annotate code depends on it being empty when not provided another value
84
+ root_dir: [""] # Core; Old model Annotate code depends on it being empty when not provided another value
84
85
  # `root_dir` can also be a string but should get converted into an array with that string as the sole element when
85
86
  # that happens.
86
87
  }.freeze
87
88
 
88
89
  DEFAULT_OPTIONS = {}.merge(POSITION_OPTIONS, FLAG_OPTIONS, OTHER_OPTIONS, PATH_OPTIONS).freeze
89
90
 
90
- POSITION_OPTION_KEYS = [
91
- :position,
92
- :position_in_class,
93
- :position_in_routes,
94
- ].freeze
95
-
96
91
  FLAG_OPTION_KEYS = [
97
92
  :classified_sort,
98
93
  :exclude_controllers,
@@ -118,7 +113,7 @@ module AnnotateRb
118
113
  :sort,
119
114
  :timestamp,
120
115
  :trace,
121
- :with_comment,
116
+ :with_comment
122
117
  ].freeze
123
118
 
124
119
  OTHER_OPTION_KEYS = [
@@ -136,21 +131,21 @@ module AnnotateRb
136
131
  :target_action,
137
132
  :wrapper,
138
133
  :wrapper_close,
139
- :wrapper_open,
134
+ :wrapper_open
140
135
  ].freeze
141
136
 
142
137
  PATH_OPTION_KEYS = [
143
138
  :additional_file_patterns,
144
139
  :model_dir,
145
140
  :require,
146
- :root_dir,
141
+ :root_dir
147
142
  ].freeze
148
143
 
149
144
  ALL_OPTION_KEYS = [
150
- POSITION_OPTION_KEYS, FLAG_OPTION_KEYS, OTHER_OPTION_KEYS, PATH_OPTION_KEYS
145
+ POSITION_OPTIONS.keys, FLAG_OPTION_KEYS, OTHER_OPTION_KEYS, PATH_OPTION_KEYS
151
146
  ].flatten.freeze
152
147
 
153
- POSITION_DEFAULT = 'before'
148
+ POSITION_DEFAULT = "before"
154
149
 
155
150
  # Want this to be read only after initializing
156
151
  def_delegator :@options, :[]
@@ -175,8 +170,8 @@ module AnnotateRb
175
170
  # 1) Use the value if it's defined
176
171
  # 2) Use value from :position if it's defined
177
172
  # 3) Use default
178
- POSITION_OPTION_KEYS.each do |key|
179
- @options[key] = ModelAnnotator::Helper.fallback(
173
+ POSITION_OPTIONS.keys.each do |key|
174
+ @options[key] = Helper.fallback(
180
175
  @options[key], @options[:position], POSITION_DEFAULT
181
176
  )
182
177
  end
@@ -184,7 +179,7 @@ module AnnotateRb
184
179
  # Unpack path options if we're passed in a String
185
180
  PATH_OPTION_KEYS.each do |key|
186
181
  if @options[key].is_a?(String)
187
- @options[key] = @options[key].split(',').map(&:strip).reject(&:empty?)
182
+ @options[key] = @options[key].split(",").map(&:strip).reject(&:empty?)
188
183
  end
189
184
  end
190
185