annotate 2.7.1 → 2.7.2
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/CHANGELOG.rdoc +3 -0
- data/README.rdoc +5 -4
- data/annotate.gemspec +37 -28
- data/bin/annotate +16 -12
- data/lib/annotate.rb +22 -14
- data/lib/annotate/annotate_models.rb +229 -176
- data/lib/annotate/annotate_routes.rb +46 -18
- data/lib/annotate/version.rb +1 -1
- data/lib/generators/annotate/templates/auto_annotate_models.rake +40 -35
- data/lib/tasks/annotate_models.rake +6 -3
- data/lib/tasks/{migrate.rake → annotate_models_migrate.rake} +0 -0
- metadata +6 -7
@@ -18,33 +18,61 @@
|
|
18
18
|
# Released under the same license as Ruby. No Support. No Warranty.
|
19
19
|
#
|
20
20
|
module AnnotateRoutes
|
21
|
-
PREFIX = '
|
21
|
+
PREFIX = '== Route Map'.freeze
|
22
|
+
PREFIX_MD = '## Route Map'.freeze
|
23
|
+
HEADER_ROW = ['Prefix', 'Verb', 'URI Pattern', 'Controller#Action']
|
22
24
|
|
23
|
-
|
24
|
-
|
25
|
+
class << self
|
26
|
+
def content(line, maxs, options = {})
|
27
|
+
return line.rstrip unless options[:format_markdown]
|
25
28
|
|
26
|
-
|
29
|
+
line.each_with_index.map do |elem, index|
|
30
|
+
min_length = maxs.map { |arr| arr[index] }.max || 0
|
27
31
|
|
28
|
-
|
29
|
-
|
30
|
-
|
32
|
+
sprintf("%-#{min_length}.#{min_length}s", elem.tr('|', '-'))
|
33
|
+
end.join(' | ')
|
34
|
+
end
|
35
|
+
|
36
|
+
def header(options = {})
|
37
|
+
routes_map = app_routes_map(options)
|
38
|
+
|
39
|
+
out = ["# #{options[:format_markdown] ? PREFIX_MD : PREFIX}" + (options[:timestamp] ? " (Updated #{Time.now.strftime('%Y-%m-%d %H:%M')})" : '')]
|
40
|
+
out += ['#']
|
41
|
+
return out if routes_map.size.zero?
|
42
|
+
|
43
|
+
maxs = [HEADER_ROW.map(&:size)] + routes_map[1..-1].map { |line| line.split.map(&:size) }
|
31
44
|
|
32
|
-
|
45
|
+
if options[:format_markdown]
|
46
|
+
max = maxs.map(&:max).compact.max
|
33
47
|
|
34
|
-
|
35
|
-
|
48
|
+
out += ["# #{content(HEADER_ROW, maxs, options)}"]
|
49
|
+
out += ["# #{content(['-' * max, '-' * max, '-' * max, '-' * max], maxs, options)}"]
|
50
|
+
else
|
51
|
+
out += ["# #{content(routes_map[0], maxs, options)}"]
|
52
|
+
end
|
53
|
+
|
54
|
+
out + routes_map[1..-1].map { |line| "# #{content(options[:format_markdown] ? line.split(' ') : line, maxs, options)}" }
|
36
55
|
end
|
37
|
-
end
|
38
56
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
57
|
+
def do_annotations(options = {})
|
58
|
+
return unless routes_exists?
|
59
|
+
existing_text = File.read(routes_file)
|
60
|
+
|
61
|
+
if write_contents(existing_text, header(options), options)
|
62
|
+
puts "#{routes_file} annotated."
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def remove_annotations(options={})
|
67
|
+
return unless routes_exists?
|
68
|
+
existing_text = File.read(routes_file)
|
69
|
+
content, where_header_found = strip_annotations(existing_text)
|
43
70
|
|
44
|
-
|
71
|
+
content = strip_on_removal(content, where_header_found)
|
45
72
|
|
46
|
-
|
47
|
-
|
73
|
+
if write_contents(existing_text, content, options)
|
74
|
+
puts "Removed annotations from #{routes_file}."
|
75
|
+
end
|
48
76
|
end
|
49
77
|
end
|
50
78
|
|
data/lib/annotate/version.rb
CHANGED
@@ -2,45 +2,50 @@
|
|
2
2
|
# NOTE: are sensitive to local FS writes, and besides -- it's just not proper
|
3
3
|
# NOTE: to have a dev-mode tool do its thing in production.
|
4
4
|
if Rails.env.development?
|
5
|
+
require 'annotate'
|
5
6
|
task :set_annotation_options do
|
6
7
|
# You can override any of these by setting an environment variable of the
|
7
8
|
# same name.
|
8
9
|
Annotate.set_defaults(
|
9
|
-
'routes'
|
10
|
-
'position_in_routes'
|
11
|
-
'position_in_class'
|
12
|
-
'position_in_test'
|
13
|
-
'position_in_fixture'
|
14
|
-
'position_in_factory'
|
15
|
-
'position_in_serializer'
|
16
|
-
'show_foreign_keys'
|
17
|
-
'
|
18
|
-
'
|
19
|
-
'
|
20
|
-
'
|
21
|
-
'
|
22
|
-
'
|
23
|
-
'
|
24
|
-
'
|
25
|
-
'
|
26
|
-
'
|
27
|
-
'
|
28
|
-
'
|
29
|
-
'
|
30
|
-
'
|
31
|
-
'
|
32
|
-
'
|
33
|
-
'
|
34
|
-
'
|
35
|
-
'
|
36
|
-
'
|
37
|
-
'
|
38
|
-
'
|
39
|
-
'
|
40
|
-
'
|
41
|
-
'
|
42
|
-
'
|
43
|
-
'
|
10
|
+
'routes' => 'false',
|
11
|
+
'position_in_routes' => 'before',
|
12
|
+
'position_in_class' => 'before',
|
13
|
+
'position_in_test' => 'before',
|
14
|
+
'position_in_fixture' => 'before',
|
15
|
+
'position_in_factory' => 'before',
|
16
|
+
'position_in_serializer' => 'before',
|
17
|
+
'show_foreign_keys' => 'true',
|
18
|
+
'show_complete_foreign_keys' => 'false',
|
19
|
+
'show_indexes' => 'true',
|
20
|
+
'simple_indexes' => 'false',
|
21
|
+
'model_dir' => 'app/models',
|
22
|
+
'root_dir' => '',
|
23
|
+
'include_version' => 'false',
|
24
|
+
'require' => '',
|
25
|
+
'exclude_tests' => 'false',
|
26
|
+
'exclude_fixtures' => 'false',
|
27
|
+
'exclude_factories' => 'false',
|
28
|
+
'exclude_serializers' => 'false',
|
29
|
+
'exclude_scaffolds' => 'true',
|
30
|
+
'exclude_controllers' => 'true',
|
31
|
+
'exclude_helpers' => 'true',
|
32
|
+
'exclude_sti_subclasses' => 'false',
|
33
|
+
'ignore_model_sub_dir' => 'false',
|
34
|
+
'ignore_columns' => nil,
|
35
|
+
'ignore_routes' => nil,
|
36
|
+
'ignore_unknown_models' => 'false',
|
37
|
+
'hide_limit_column_types' => '<%= AnnotateModels::NO_LIMIT_COL_TYPES.join(",") %>',
|
38
|
+
'hide_default_column_types' => '<%= AnnotateModels::NO_DEFAULT_COL_TYPES.join(",") %>',
|
39
|
+
'skip_on_db_migrate' => 'false',
|
40
|
+
'format_bare' => 'true',
|
41
|
+
'format_rdoc' => 'false',
|
42
|
+
'format_markdown' => 'false',
|
43
|
+
'sort' => 'false',
|
44
|
+
'force' => 'false',
|
45
|
+
'trace' => 'false',
|
46
|
+
'wrapper_open' => nil,
|
47
|
+
'wrapper_close' => nil,
|
48
|
+
'with_comment' => true
|
44
49
|
)
|
45
50
|
end
|
46
51
|
|
@@ -10,7 +10,7 @@ task annotate_models: :environment do
|
|
10
10
|
require "#{annotate_lib}/annotate/annotate_models"
|
11
11
|
require "#{annotate_lib}/annotate/active_record_patch"
|
12
12
|
|
13
|
-
options={is_rake: true}
|
13
|
+
options = {is_rake: true}
|
14
14
|
ENV['position'] = options[:position] = Annotate.fallback(ENV['position'], 'before')
|
15
15
|
options[:position_in_class] = Annotate.fallback(ENV['position_in_class'], ENV['position'])
|
16
16
|
options[:position_in_fixture] = Annotate.fallback(ENV['position_in_fixture'], ENV['position'])
|
@@ -18,10 +18,11 @@ task annotate_models: :environment do
|
|
18
18
|
options[:position_in_test] = Annotate.fallback(ENV['position_in_test'], ENV['position'])
|
19
19
|
options[:position_in_serializer] = Annotate.fallback(ENV['position_in_serializer'], ENV['position'])
|
20
20
|
options[:show_foreign_keys] = Annotate.true?(ENV['show_foreign_keys'])
|
21
|
+
options[:show_complete_foreign_keys] = Annotate.true?(ENV['show_complete_foreign_keys'])
|
21
22
|
options[:show_indexes] = Annotate.true?(ENV['show_indexes'])
|
22
23
|
options[:simple_indexes] = Annotate.true?(ENV['simple_indexes'])
|
23
24
|
options[:model_dir] = ENV['model_dir'] ? ENV['model_dir'].split(',') : ['app/models']
|
24
|
-
options[:root_dir] = ENV['root_dir']
|
25
|
+
options[:root_dir] = ENV['root_dir']
|
25
26
|
options[:include_version] = Annotate.true?(ENV['include_version'])
|
26
27
|
options[:require] = ENV['require'] ? ENV['require'].split(',') : []
|
27
28
|
options[:exclude_tests] = Annotate.true?(ENV['exclude_tests'])
|
@@ -31,6 +32,7 @@ task annotate_models: :environment do
|
|
31
32
|
options[:exclude_scaffolds] = Annotate.true?(ENV['exclude_scaffolds'])
|
32
33
|
options[:exclude_controllers] = Annotate.true?(ENV.fetch('exclude_controllers', 'true'))
|
33
34
|
options[:exclude_helpers] = Annotate.true?(ENV.fetch('exclude_helpers', 'true'))
|
35
|
+
options[:exclude_sti_subclasses] = Annotate.true?(ENV['exclude_sti_subclasses'])
|
34
36
|
options[:ignore_model_sub_dir] = Annotate.true?(ENV['ignore_model_sub_dir'])
|
35
37
|
options[:format_bare] = Annotate.true?(ENV['format_bare'])
|
36
38
|
options[:format_rdoc] = Annotate.true?(ENV['format_rdoc'])
|
@@ -44,6 +46,7 @@ task annotate_models: :environment do
|
|
44
46
|
options[:ignore_columns] = ENV.fetch('ignore_columns', nil)
|
45
47
|
options[:ignore_routes] = ENV.fetch('ignore_routes', nil)
|
46
48
|
options[:hide_limit_column_types] = Annotate.fallback(ENV['hide_limit_column_types'], '')
|
49
|
+
options[:hide_default_column_types] = Annotate.fallback(ENV['hide_default_column_types'], '')
|
47
50
|
|
48
51
|
AnnotateModels.do_annotations(options)
|
49
52
|
end
|
@@ -53,7 +56,7 @@ task remove_annotation: :environment do
|
|
53
56
|
require "#{annotate_lib}/annotate/annotate_models"
|
54
57
|
require "#{annotate_lib}/annotate/active_record_patch"
|
55
58
|
|
56
|
-
options={is_rake: true}
|
59
|
+
options = {is_rake: true}
|
57
60
|
options[:model_dir] = ENV['model_dir']
|
58
61
|
options[:root_dir] = ENV['root_dir']
|
59
62
|
options[:require] = ENV['require'] ? ENV['require'].split(',') : []
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: annotate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.7.
|
4
|
+
version: 2.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Chaffee
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2017-06-02 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rake
|
@@ -23,7 +23,7 @@ dependencies:
|
|
23
23
|
version: '10.4'
|
24
24
|
- - "<"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '13.0'
|
27
27
|
type: :runtime
|
28
28
|
prerelease: false
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -33,7 +33,7 @@ dependencies:
|
|
33
33
|
version: '10.4'
|
34
34
|
- - "<"
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: '
|
36
|
+
version: '13.0'
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: activerecord
|
39
39
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,8 +87,8 @@ files:
|
|
87
87
|
- lib/generators/annotate/install_generator.rb
|
88
88
|
- lib/generators/annotate/templates/auto_annotate_models.rake
|
89
89
|
- lib/tasks/annotate_models.rake
|
90
|
+
- lib/tasks/annotate_models_migrate.rake
|
90
91
|
- lib/tasks/annotate_routes.rake
|
91
|
-
- lib/tasks/migrate.rake
|
92
92
|
homepage: http://github.com/ctran/annotate_models
|
93
93
|
licenses:
|
94
94
|
- Ruby
|
@@ -109,10 +109,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
109
|
version: '0'
|
110
110
|
requirements: []
|
111
111
|
rubyforge_project: annotate
|
112
|
-
rubygems_version: 2.
|
112
|
+
rubygems_version: 2.6.8
|
113
113
|
signing_key:
|
114
114
|
specification_version: 4
|
115
115
|
summary: Annotates Rails Models, routes, fixtures, and others based on the database
|
116
116
|
schema.
|
117
117
|
test_files: []
|
118
|
-
has_rdoc:
|