annotaterb 4.0.0 → 4.1.0
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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/annotate_rb/model_annotator/annotation_decider.rb +62 -0
- data/lib/annotate_rb/model_annotator/annotation_generator.rb +94 -0
- data/lib/annotate_rb/model_annotator/annotator.rb +27 -31
- data/lib/annotate_rb/model_annotator/column_annotation_builder.rb +92 -0
- data/lib/annotate_rb/model_annotator/column_attributes_builder.rb +102 -0
- data/lib/annotate_rb/model_annotator/column_type_builder.rb +51 -0
- data/lib/annotate_rb/model_annotator/column_wrapper.rb +84 -0
- data/lib/annotate_rb/model_annotator/constants.rb +2 -2
- data/lib/annotate_rb/model_annotator/file_annotator.rb +6 -2
- data/lib/annotate_rb/model_annotator/file_annotator_instruction.rb +17 -0
- data/lib/annotate_rb/model_annotator/foreign_key_annotation_builder.rb +55 -0
- data/lib/annotate_rb/model_annotator/helper.rb +75 -22
- data/lib/annotate_rb/model_annotator/index_annotation_builder.rb +74 -0
- data/lib/annotate_rb/model_annotator/model_file_annotator.rb +21 -84
- data/lib/annotate_rb/model_annotator/model_files_getter.rb +4 -2
- data/lib/annotate_rb/model_annotator/model_wrapper.rb +155 -0
- data/lib/annotate_rb/model_annotator/related_files_list_builder.rb +137 -0
- data/lib/annotate_rb/model_annotator.rb +11 -1
- data/lib/annotate_rb/options.rb +16 -9
- data/lib/annotate_rb/parser.rb +0 -14
- data/lib/annotate_rb.rb +0 -1
- metadata +13 -4
- data/lib/annotate_rb/env.rb +0 -30
- data/lib/annotate_rb/model_annotator/schema_info.rb +0 -480
@@ -0,0 +1,137 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AnnotateRb
|
4
|
+
module ModelAnnotator
|
5
|
+
# Given a model file and options, this class will return a list of related files (e.g. fixture, controllers, etc)
|
6
|
+
# to also annotate
|
7
|
+
class RelatedFilesListBuilder
|
8
|
+
RELATED_TYPES = %w(test fixture factory serializer scaffold controller helper).freeze
|
9
|
+
|
10
|
+
def initialize(file, model_name, table_name, options)
|
11
|
+
@file = file
|
12
|
+
@model_name = model_name
|
13
|
+
@table_name = table_name
|
14
|
+
@options = options
|
15
|
+
end
|
16
|
+
|
17
|
+
def build
|
18
|
+
@list = []
|
19
|
+
|
20
|
+
add_related_test_files if !@options[:exclude_tests]
|
21
|
+
add_related_fixture_files if !@options[:exclude_fixtures]
|
22
|
+
add_related_factory_files if !@options[:exclude_factories]
|
23
|
+
add_related_serializer_files if !@options[:exclude_serializers]
|
24
|
+
add_related_scaffold_files if !@options[:exclude_scaffolds]
|
25
|
+
add_related_controller_files if !@options[:exclude_controllers]
|
26
|
+
add_related_helper_files if !@options[:exclude_helpers]
|
27
|
+
add_related_admin_files if !@options[:active_admin]
|
28
|
+
add_additional_file_patterns if !@options[:additional_file_patterns].present?
|
29
|
+
|
30
|
+
@list
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def related_files_for_pattern(pattern_type)
|
36
|
+
patterns = PatternGetter.call(@options, pattern_type)
|
37
|
+
|
38
|
+
_related_files = patterns
|
39
|
+
.map { |f| FileNameResolver.call(f, @model_name, @table_name) }
|
40
|
+
.map { |f| Dir.glob(f) }
|
41
|
+
.flatten
|
42
|
+
|
43
|
+
_related_files
|
44
|
+
end
|
45
|
+
|
46
|
+
def add_related_test_files
|
47
|
+
position_key = :position_in_test
|
48
|
+
pattern_type = 'test'
|
49
|
+
|
50
|
+
related_files = related_files_for_pattern(pattern_type)
|
51
|
+
files_with_position_key = related_files.map { |f| [f, position_key] }
|
52
|
+
|
53
|
+
@list.concat(files_with_position_key)
|
54
|
+
end
|
55
|
+
|
56
|
+
def add_related_fixture_files
|
57
|
+
position_key = :position_in_fixture
|
58
|
+
pattern_type = 'fixture'
|
59
|
+
|
60
|
+
related_files = related_files_for_pattern(pattern_type)
|
61
|
+
files_with_position_key = related_files.map { |f| [f, position_key] }
|
62
|
+
|
63
|
+
@list.concat(files_with_position_key)
|
64
|
+
end
|
65
|
+
|
66
|
+
def add_related_factory_files
|
67
|
+
position_key = :position_in_factory
|
68
|
+
pattern_type = 'factory'
|
69
|
+
|
70
|
+
related_files = related_files_for_pattern(pattern_type)
|
71
|
+
files_with_position_key = related_files.map { |f| [f, position_key] }
|
72
|
+
|
73
|
+
@list.concat(files_with_position_key)
|
74
|
+
end
|
75
|
+
|
76
|
+
def add_related_serializer_files
|
77
|
+
position_key = :position_in_serializer
|
78
|
+
pattern_type = 'serializer'
|
79
|
+
|
80
|
+
related_files = related_files_for_pattern(pattern_type)
|
81
|
+
files_with_position_key = related_files.map { |f| [f, position_key] }
|
82
|
+
|
83
|
+
@list.concat(files_with_position_key)
|
84
|
+
end
|
85
|
+
|
86
|
+
def add_related_scaffold_files
|
87
|
+
position_key = :position_in_scaffold # Key does not exist
|
88
|
+
pattern_type = 'scaffold'
|
89
|
+
|
90
|
+
related_files = related_files_for_pattern(pattern_type)
|
91
|
+
files_with_position_key = related_files.map { |f| [f, position_key] }
|
92
|
+
|
93
|
+
@list.concat(files_with_position_key)
|
94
|
+
end
|
95
|
+
|
96
|
+
def add_related_controller_files
|
97
|
+
position_key = :position_in_controller # Key does not exist
|
98
|
+
pattern_type = 'controller'
|
99
|
+
|
100
|
+
related_files = related_files_for_pattern(pattern_type)
|
101
|
+
files_with_position_key = related_files.map { |f| [f, position_key] }
|
102
|
+
|
103
|
+
@list.concat(files_with_position_key)
|
104
|
+
end
|
105
|
+
|
106
|
+
def add_related_helper_files
|
107
|
+
position_key = :position_in_helper # Key does not exist
|
108
|
+
pattern_type = 'helper'
|
109
|
+
|
110
|
+
related_files = related_files_for_pattern(pattern_type)
|
111
|
+
files_with_position_key = related_files.map { |f| [f, position_key] }
|
112
|
+
|
113
|
+
@list.concat(files_with_position_key)
|
114
|
+
end
|
115
|
+
|
116
|
+
def add_related_admin_files
|
117
|
+
position_key = :position_in_admin # Key does not exist
|
118
|
+
pattern_type = 'admin'
|
119
|
+
|
120
|
+
related_files = related_files_for_pattern(pattern_type)
|
121
|
+
files_with_position_key = related_files.map { |f| [f, position_key] }
|
122
|
+
|
123
|
+
@list.concat(files_with_position_key)
|
124
|
+
end
|
125
|
+
|
126
|
+
def add_additional_file_patterns
|
127
|
+
position_key = :position_in_additional_file_patterns # Key does not exist
|
128
|
+
pattern_type = 'additional_file_patterns'
|
129
|
+
|
130
|
+
related_files = related_files_for_pattern(pattern_type)
|
131
|
+
files_with_position_key = related_files.map { |f| [f, position_key] }
|
132
|
+
|
133
|
+
@list.concat(files_with_position_key)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
@@ -6,7 +6,6 @@ module AnnotateRb
|
|
6
6
|
autoload :Helper, 'annotate_rb/model_annotator/helper'
|
7
7
|
autoload :FilePatterns, 'annotate_rb/model_annotator/file_patterns'
|
8
8
|
autoload :Constants, 'annotate_rb/model_annotator/constants'
|
9
|
-
autoload :SchemaInfo, 'annotate_rb/model_annotator/schema_info'
|
10
9
|
autoload :PatternGetter, 'annotate_rb/model_annotator/pattern_getter'
|
11
10
|
autoload :BadModelFileError, 'annotate_rb/model_annotator/bad_model_file_error'
|
12
11
|
autoload :FileNameResolver, 'annotate_rb/model_annotator/file_name_resolver'
|
@@ -16,5 +15,16 @@ module AnnotateRb
|
|
16
15
|
autoload :ModelFilesGetter, 'annotate_rb/model_annotator/model_files_getter'
|
17
16
|
autoload :FileAnnotator, 'annotate_rb/model_annotator/file_annotator'
|
18
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'
|
19
29
|
end
|
20
30
|
end
|
data/lib/annotate_rb/options.rb
CHANGED
@@ -26,14 +26,14 @@ module AnnotateRb
|
|
26
26
|
|
27
27
|
FLAG_OPTIONS = {
|
28
28
|
classified_sort: true, # ModelAnnotator
|
29
|
-
exclude_controllers: true, #
|
30
|
-
exclude_factories: false, #
|
31
|
-
exclude_fixtures: false, #
|
32
|
-
exclude_helpers: true, #
|
33
|
-
exclude_scaffolds: true, #
|
34
|
-
exclude_serializers: false, #
|
29
|
+
exclude_controllers: true, # ModelAnnotator
|
30
|
+
exclude_factories: false, # ModelAnnotator
|
31
|
+
exclude_fixtures: false, # ModelAnnotator
|
32
|
+
exclude_helpers: true, # ModelAnnotator
|
33
|
+
exclude_scaffolds: true, # ModelAnnotator
|
34
|
+
exclude_serializers: false, # ModelAnnotator
|
35
35
|
exclude_sti_subclasses: false, # ModelAnnotator
|
36
|
-
exclude_tests: false, #
|
36
|
+
exclude_tests: false, # ModelAnnotator
|
37
37
|
force: false, # ModelAnnotator, but should be used by both
|
38
38
|
format_bare: true, # Unused
|
39
39
|
format_markdown: false, # ModelAnnotator, RouteAnnotator
|
@@ -59,10 +59,10 @@ module AnnotateRb
|
|
59
59
|
debug: false, # Core
|
60
60
|
|
61
61
|
# ModelAnnotator
|
62
|
-
hide_default_column_types: '
|
62
|
+
hide_default_column_types: '',
|
63
63
|
|
64
64
|
# ModelAnnotator
|
65
|
-
hide_limit_column_types: '
|
65
|
+
hide_limit_column_types: '',
|
66
66
|
|
67
67
|
ignore_columns: nil, # ModelAnnotator
|
68
68
|
ignore_routes: nil, # RouteAnnotator
|
@@ -95,7 +95,14 @@ module AnnotateRb
|
|
95
95
|
|
96
96
|
FLAG_OPTION_KEYS = [
|
97
97
|
:classified_sort,
|
98
|
+
:exclude_controllers,
|
99
|
+
:exclude_factories,
|
100
|
+
:exclude_fixtures,
|
101
|
+
:exclude_helpers,
|
102
|
+
:exclude_scaffolds,
|
103
|
+
:exclude_serializers,
|
98
104
|
:exclude_sti_subclasses,
|
105
|
+
:exclude_tests,
|
99
106
|
:force,
|
100
107
|
:format_markdown,
|
101
108
|
:format_rdoc,
|
data/lib/annotate_rb/parser.rb
CHANGED
@@ -156,13 +156,6 @@ module AnnotateRb
|
|
156
156
|
option_parser.separator(' ' * 4 + 'Usage: annotaterb models [options]')
|
157
157
|
option_parser.separator('')
|
158
158
|
|
159
|
-
# option_parser.on('-m',
|
160
|
-
# '--models',
|
161
|
-
# "Annotate ActiveRecord models") do
|
162
|
-
# @options[:models] = true
|
163
|
-
# @options[:command] = Commands::AnnotateModels.new
|
164
|
-
# end
|
165
|
-
|
166
159
|
option_parser.on('-a',
|
167
160
|
'--active-admin',
|
168
161
|
'Annotate active_admin models') do
|
@@ -232,13 +225,6 @@ module AnnotateRb
|
|
232
225
|
option_parser.separator(' ' * 4 + 'Usage: annotaterb routes [options]')
|
233
226
|
option_parser.separator('')
|
234
227
|
|
235
|
-
# option_parser.on('-r',
|
236
|
-
# '--routes',
|
237
|
-
# "Annotate routes.rb with the output of 'rails routes'") do
|
238
|
-
# @options[:routes] = true
|
239
|
-
# @options[:command] = Commands::AnnotateRoutes.new
|
240
|
-
# end
|
241
|
-
|
242
228
|
option_parser.on('--ignore-routes REGEX',
|
243
229
|
"don't annotate routes that match a given REGEX (i.e., `annotate -I '(mobile|resque|pghero)'`") do |regex|
|
244
230
|
@options[:ignore_routes] = regex
|
data/lib/annotate_rb.rb
CHANGED
@@ -18,7 +18,6 @@ require_relative 'annotate_rb/parser'
|
|
18
18
|
require_relative 'annotate_rb/runner'
|
19
19
|
require_relative 'annotate_rb/route_annotator'
|
20
20
|
require_relative 'annotate_rb/model_annotator'
|
21
|
-
require_relative 'annotate_rb/env'
|
22
21
|
require_relative 'annotate_rb/options'
|
23
22
|
require_relative 'annotate_rb/eager_loader'
|
24
23
|
require_relative 'annotate_rb/rake_bootstrapper'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: annotaterb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew W. Lee
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Annotates Rails/ActiveRecord Models, routes, fixtures, and others based
|
14
14
|
on the database schema.
|
@@ -35,22 +35,31 @@ files:
|
|
35
35
|
- lib/annotate_rb/config_loader.rb
|
36
36
|
- lib/annotate_rb/core.rb
|
37
37
|
- lib/annotate_rb/eager_loader.rb
|
38
|
-
- lib/annotate_rb/env.rb
|
39
38
|
- lib/annotate_rb/model_annotator.rb
|
39
|
+
- lib/annotate_rb/model_annotator/annotation_decider.rb
|
40
|
+
- lib/annotate_rb/model_annotator/annotation_generator.rb
|
40
41
|
- lib/annotate_rb/model_annotator/annotation_pattern_generator.rb
|
41
42
|
- lib/annotate_rb/model_annotator/annotator.rb
|
42
43
|
- lib/annotate_rb/model_annotator/bad_model_file_error.rb
|
44
|
+
- lib/annotate_rb/model_annotator/column_annotation_builder.rb
|
45
|
+
- lib/annotate_rb/model_annotator/column_attributes_builder.rb
|
46
|
+
- lib/annotate_rb/model_annotator/column_type_builder.rb
|
47
|
+
- lib/annotate_rb/model_annotator/column_wrapper.rb
|
43
48
|
- lib/annotate_rb/model_annotator/constants.rb
|
44
49
|
- lib/annotate_rb/model_annotator/file_annotation_remover.rb
|
45
50
|
- lib/annotate_rb/model_annotator/file_annotator.rb
|
51
|
+
- lib/annotate_rb/model_annotator/file_annotator_instruction.rb
|
46
52
|
- lib/annotate_rb/model_annotator/file_name_resolver.rb
|
47
53
|
- lib/annotate_rb/model_annotator/file_patterns.rb
|
54
|
+
- lib/annotate_rb/model_annotator/foreign_key_annotation_builder.rb
|
48
55
|
- lib/annotate_rb/model_annotator/helper.rb
|
56
|
+
- lib/annotate_rb/model_annotator/index_annotation_builder.rb
|
49
57
|
- lib/annotate_rb/model_annotator/model_class_getter.rb
|
50
58
|
- lib/annotate_rb/model_annotator/model_file_annotator.rb
|
51
59
|
- lib/annotate_rb/model_annotator/model_files_getter.rb
|
60
|
+
- lib/annotate_rb/model_annotator/model_wrapper.rb
|
52
61
|
- lib/annotate_rb/model_annotator/pattern_getter.rb
|
53
|
-
- lib/annotate_rb/model_annotator/
|
62
|
+
- lib/annotate_rb/model_annotator/related_files_list_builder.rb
|
54
63
|
- lib/annotate_rb/options.rb
|
55
64
|
- lib/annotate_rb/parser.rb
|
56
65
|
- lib/annotate_rb/rake_bootstrapper.rb
|
data/lib/annotate_rb/env.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module AnnotateRb
|
4
|
-
class Env
|
5
|
-
class << self
|
6
|
-
def read(key)
|
7
|
-
key = key.to_s unless key.is_a?(String)
|
8
|
-
|
9
|
-
ENV[key]
|
10
|
-
end
|
11
|
-
|
12
|
-
def write(key, value)
|
13
|
-
key = key.to_s unless key.is_a?(String)
|
14
|
-
|
15
|
-
ENV[key] = value.to_s
|
16
|
-
end
|
17
|
-
|
18
|
-
def fetch(key, default_value)
|
19
|
-
key = key.to_s unless key.is_a?(String)
|
20
|
-
val = read(key)
|
21
|
-
|
22
|
-
if val.nil?
|
23
|
-
default_value
|
24
|
-
else
|
25
|
-
val
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|