theme-check 1.2.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/theme-check.yml +3 -3
  3. data/.gitignore +1 -0
  4. data/CHANGELOG.md +47 -0
  5. data/CONTRIBUTING.md +59 -1
  6. data/Gemfile +3 -0
  7. data/bin/theme-check +29 -0
  8. data/bin/theme-check-language-server +29 -0
  9. data/config/default.yml +15 -1
  10. data/config/theme_app_extension.yml +15 -0
  11. data/data/shopify_liquid/objects.yml +1 -0
  12. data/docs/checks/app_block_valid_tags.md +40 -0
  13. data/docs/checks/asset_size_app_block_css.md +1 -1
  14. data/docs/checks/deprecate_lazysizes.md +0 -3
  15. data/docs/checks/deprecated_global_app_block_type.md +65 -0
  16. data/docs/checks/missing_template.md +25 -0
  17. data/docs/checks/pagination_size.md +44 -0
  18. data/docs/checks/template_length.md +1 -1
  19. data/docs/checks/undefined_object.md +5 -0
  20. data/docs/flamegraph.svg +18488 -0
  21. data/lib/theme_check/analyzer.rb +1 -0
  22. data/lib/theme_check/check.rb +2 -2
  23. data/lib/theme_check/checks/app_block_valid_tags.rb +36 -0
  24. data/lib/theme_check/checks/asset_size_css.rb +3 -3
  25. data/lib/theme_check/checks/asset_size_javascript.rb +2 -2
  26. data/lib/theme_check/checks/convert_include_to_render.rb +3 -1
  27. data/lib/theme_check/checks/default_locale.rb +3 -1
  28. data/lib/theme_check/checks/deprecate_bgsizes.rb +1 -1
  29. data/lib/theme_check/checks/deprecate_lazysizes.rb +7 -4
  30. data/lib/theme_check/checks/deprecated_global_app_block_type.rb +57 -0
  31. data/lib/theme_check/checks/img_lazy_loading.rb +1 -1
  32. data/lib/theme_check/checks/img_width_and_height.rb +3 -3
  33. data/lib/theme_check/checks/missing_template.rb +21 -5
  34. data/lib/theme_check/checks/pagination_size.rb +84 -0
  35. data/lib/theme_check/checks/parser_blocking_javascript.rb +1 -1
  36. data/lib/theme_check/checks/remote_asset.rb +3 -3
  37. data/lib/theme_check/checks/space_inside_braces.rb +26 -6
  38. data/lib/theme_check/checks/template_length.rb +1 -1
  39. data/lib/theme_check/checks/undefined_object.rb +1 -1
  40. data/lib/theme_check/checks/valid_html_translation.rb +1 -1
  41. data/lib/theme_check/checks.rb +11 -1
  42. data/lib/theme_check/cli.rb +42 -3
  43. data/lib/theme_check/corrector.rb +9 -0
  44. data/lib/theme_check/file_system_storage.rb +12 -0
  45. data/lib/theme_check/html_check.rb +0 -1
  46. data/lib/theme_check/html_node.rb +37 -16
  47. data/lib/theme_check/html_visitor.rb +17 -3
  48. data/lib/theme_check/json_check.rb +2 -2
  49. data/lib/theme_check/json_file.rb +11 -0
  50. data/lib/theme_check/json_printer.rb +31 -0
  51. data/lib/theme_check/language_server/constants.rb +18 -11
  52. data/lib/theme_check/language_server/document_link_engine.rb +3 -67
  53. data/lib/theme_check/language_server/document_link_provider.rb +71 -0
  54. data/lib/theme_check/language_server/document_link_providers/asset_document_link_provider.rb +11 -0
  55. data/lib/theme_check/language_server/document_link_providers/include_document_link_provider.rb +11 -0
  56. data/lib/theme_check/language_server/document_link_providers/render_document_link_provider.rb +11 -0
  57. data/lib/theme_check/language_server/document_link_providers/section_document_link_provider.rb +11 -0
  58. data/lib/theme_check/language_server/handler.rb +17 -9
  59. data/lib/theme_check/language_server/server.rb +11 -13
  60. data/lib/theme_check/language_server/uri_helper.rb +37 -0
  61. data/lib/theme_check/language_server.rb +6 -0
  62. data/lib/theme_check/node.rb +6 -4
  63. data/lib/theme_check/offense.rb +56 -3
  64. data/lib/theme_check/parsing_helpers.rb +4 -3
  65. data/lib/theme_check/position.rb +98 -14
  66. data/lib/theme_check/printer.rb +9 -5
  67. data/lib/theme_check/regex_helpers.rb +5 -2
  68. data/lib/theme_check/theme.rb +3 -0
  69. data/lib/theme_check/version.rb +1 -1
  70. data/lib/theme_check.rb +1 -0
  71. data/theme-check.gemspec +1 -1
  72. metadata +21 -10
  73. data/bin/liquid-server +0 -4
  74. data/exe/theme-check-language-server.bat +0 -3
  75. data/exe/theme-check.bat +0 -3
@@ -2,14 +2,18 @@
2
2
 
3
3
  module ThemeCheck
4
4
  class Printer
5
+ def initialize(out_stream = STDOUT)
6
+ @out = out_stream
7
+ end
8
+
5
9
  def print(theme, offenses, auto_correct)
6
10
  offenses.each do |offense|
7
11
  print_offense(offense, auto_correct)
8
- puts
12
+ @out.puts
9
13
  end
10
14
 
11
15
  correctable = offenses.select(&:correctable?)
12
- puts "#{theme.all.size} files inspected, #{red(offenses.size.to_s + ' offenses')} detected, \
16
+ @out.puts "#{theme.all.size} files inspected, #{red(offenses.size.to_s + ' offenses')} detected, \
13
17
  #{yellow(correctable.size.to_s + ' offenses')} #{auto_correct ? 'corrected' : 'auto-correctable'}"
14
18
  end
15
19
 
@@ -26,15 +30,15 @@ module ThemeCheck
26
30
  ""
27
31
  end
28
32
 
29
- puts location +
33
+ @out.puts location +
30
34
  colorized_severity(offense.severity) + ": " +
31
35
  yellow(offense.check_name) + ": " +
32
36
  corrected +
33
37
  offense.message + "."
34
38
  if offense.source_excerpt
35
- puts "\t#{offense.source_excerpt}"
39
+ @out.puts "\t#{offense.source_excerpt}"
36
40
  if offense.markup_start_in_excerpt
37
- puts "\t" + (" " * offense.markup_start_in_excerpt) + ("^" * offense.markup.size)
41
+ @out.puts "\t" + (" " * offense.markup_start_in_excerpt) + ("^" * offense.markup.size)
38
42
  end
39
43
  end
40
44
  end
@@ -2,8 +2,11 @@
2
2
 
3
3
  module ThemeCheck
4
4
  module RegexHelpers
5
- VARIABLE = /#{Liquid::VariableStart}.*?#{Liquid::VariableEnd}/om
5
+ LIQUID_TAG = /#{Liquid::TagStart}.*?#{Liquid::TagEnd}/om
6
+ LIQUID_VARIABLE = /#{Liquid::VariableStart}.*?#{Liquid::VariableEnd}/om
7
+ LIQUID_TAG_OR_VARIABLE = /#{LIQUID_TAG}|#{LIQUID_VARIABLE}/om
6
8
  START_OR_END_QUOTE = /(^['"])|(['"]$)/
9
+
7
10
  def matches(s, re)
8
11
  start_at = 0
9
12
  matches = []
@@ -16,7 +19,7 @@ module ThemeCheck
16
19
 
17
20
  def href_to_file_size(href)
18
21
  # asset_url (+ optional stylesheet_tag) variables
19
- if href =~ /^#{VARIABLE}$/o && href =~ /asset_url/ && href =~ Liquid::QuotedString
22
+ if href =~ /^#{LIQUID_VARIABLE}$/o && href =~ /asset_url/ && href =~ Liquid::QuotedString
20
23
  asset_id = Regexp.last_match(0).gsub(START_OR_END_QUOTE, "")
21
24
  asset = @theme.assets.find { |a| a.name.end_with?("/" + asset_id) }
22
25
  return if asset.nil?
@@ -7,6 +7,9 @@ module ThemeCheck
7
7
  LIQUID_REGEX = /\.liquid$/i
8
8
  JSON_REGEX = /\.json$/i
9
9
 
10
+ attr_reader :storage
11
+ attr_writer :default_locale_json
12
+
10
13
  def initialize(storage)
11
14
  @storage = storage
12
15
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module ThemeCheck
3
- VERSION = "1.2.0"
3
+ VERSION = "1.5.1"
4
4
  end
data/lib/theme_check.rb CHANGED
@@ -27,6 +27,7 @@ require_relative "theme_check/config"
27
27
  require_relative "theme_check/node"
28
28
  require_relative "theme_check/offense"
29
29
  require_relative "theme_check/printer"
30
+ require_relative "theme_check/json_printer"
30
31
  require_relative "theme_check/shopify_liquid"
31
32
  require_relative "theme_check/storage"
32
33
  require_relative "theme_check/string_helpers"
data/theme-check.gemspec CHANGED
@@ -25,5 +25,5 @@ Gem::Specification.new do |spec|
25
25
  spec.require_paths = ["lib"]
26
26
 
27
27
  spec.add_dependency('liquid', '>= 5.0.1')
28
- spec.add_dependency('nokogumbo')
28
+ spec.add_dependency('nokogiri', '>= 1.12')
29
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: theme-check
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marc-André Cournoyer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-15 00:00:00.000000000 Z
11
+ date: 2021-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: liquid
@@ -25,27 +25,25 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 5.0.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: nokogumbo
28
+ name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '1.12'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '1.12'
41
41
  description:
42
42
  email:
43
43
  - marcandre.cournoyer@shopify.com
44
44
  executables:
45
45
  - theme-check
46
46
  - theme-check-language-server
47
- - theme-check-language-server.bat
48
- - theme-check.bat
49
47
  extensions: []
50
48
  extra_rdoc_files: []
51
49
  files:
@@ -62,7 +60,8 @@ files:
62
60
  - README.md
63
61
  - RELEASING.md
64
62
  - Rakefile
65
- - bin/liquid-server
63
+ - bin/theme-check
64
+ - bin/theme-check-language-server
66
65
  - config/default.yml
67
66
  - config/nothing.yml
68
67
  - config/theme_app_extension.yml
@@ -78,6 +77,7 @@ files:
78
77
  - docs/api/json_check.md
79
78
  - docs/api/liquid_check.md
80
79
  - docs/checks/TEMPLATE.md.erb
80
+ - docs/checks/app_block_valid_tags.md
81
81
  - docs/checks/asset_size_app_block_css.md
82
82
  - docs/checks/asset_size_app_block_javascript.md
83
83
  - docs/checks/asset_size_css.md
@@ -90,6 +90,7 @@ files:
90
90
  - docs/checks/deprecate_bgsizes.md
91
91
  - docs/checks/deprecate_lazysizes.md
92
92
  - docs/checks/deprecated_filter.md
93
+ - docs/checks/deprecated_global_app_block_type.md
93
94
  - docs/checks/html_parsing_error.md
94
95
  - docs/checks/img_lazy_loading.md
95
96
  - docs/checks/img_width_and_height.md
@@ -100,6 +101,7 @@ files:
100
101
  - docs/checks/missing_required_template_files.md
101
102
  - docs/checks/missing_template.md
102
103
  - docs/checks/nested_snippet.md
104
+ - docs/checks/pagination_size.md
103
105
  - docs/checks/parser_blocking_javascript.md
104
106
  - docs/checks/parser_blocking_script_tag.md
105
107
  - docs/checks/remote_asset.md
@@ -116,11 +118,10 @@ files:
116
118
  - docs/checks/valid_html_translation.md
117
119
  - docs/checks/valid_json.md
118
120
  - docs/checks/valid_schema.md
121
+ - docs/flamegraph.svg
119
122
  - docs/preview.png
120
123
  - exe/theme-check
121
124
  - exe/theme-check-language-server
122
- - exe/theme-check-language-server.bat
123
- - exe/theme-check.bat
124
125
  - lib/theme_check.rb
125
126
  - lib/theme_check/analyzer.rb
126
127
  - lib/theme_check/asset_file.rb
@@ -128,6 +129,7 @@ files:
128
129
  - lib/theme_check/check.rb
129
130
  - lib/theme_check/checks.rb
130
131
  - lib/theme_check/checks/TEMPLATE.rb.erb
132
+ - lib/theme_check/checks/app_block_valid_tags.rb
131
133
  - lib/theme_check/checks/asset_size_app_block_css.rb
132
134
  - lib/theme_check/checks/asset_size_app_block_javascript.rb
133
135
  - lib/theme_check/checks/asset_size_css.rb
@@ -140,6 +142,7 @@ files:
140
142
  - lib/theme_check/checks/deprecate_bgsizes.rb
141
143
  - lib/theme_check/checks/deprecate_lazysizes.rb
142
144
  - lib/theme_check/checks/deprecated_filter.rb
145
+ - lib/theme_check/checks/deprecated_global_app_block_type.rb
143
146
  - lib/theme_check/checks/html_parsing_error.rb
144
147
  - lib/theme_check/checks/img_lazy_loading.rb
145
148
  - lib/theme_check/checks/img_width_and_height.rb
@@ -150,6 +153,7 @@ files:
150
153
  - lib/theme_check/checks/missing_required_template_files.rb
151
154
  - lib/theme_check/checks/missing_template.rb
152
155
  - lib/theme_check/checks/nested_snippet.rb
156
+ - lib/theme_check/checks/pagination_size.rb
153
157
  - lib/theme_check/checks/parser_blocking_javascript.rb
154
158
  - lib/theme_check/checks/parser_blocking_script_tag.rb
155
159
  - lib/theme_check/checks/remote_asset.rb
@@ -181,6 +185,7 @@ files:
181
185
  - lib/theme_check/json_check.rb
182
186
  - lib/theme_check/json_file.rb
183
187
  - lib/theme_check/json_helpers.rb
188
+ - lib/theme_check/json_printer.rb
184
189
  - lib/theme_check/language_server.rb
185
190
  - lib/theme_check/language_server/completion_engine.rb
186
191
  - lib/theme_check/language_server/completion_helper.rb
@@ -192,10 +197,16 @@ files:
192
197
  - lib/theme_check/language_server/constants.rb
193
198
  - lib/theme_check/language_server/diagnostics_tracker.rb
194
199
  - lib/theme_check/language_server/document_link_engine.rb
200
+ - lib/theme_check/language_server/document_link_provider.rb
201
+ - lib/theme_check/language_server/document_link_providers/asset_document_link_provider.rb
202
+ - lib/theme_check/language_server/document_link_providers/include_document_link_provider.rb
203
+ - lib/theme_check/language_server/document_link_providers/render_document_link_provider.rb
204
+ - lib/theme_check/language_server/document_link_providers/section_document_link_provider.rb
195
205
  - lib/theme_check/language_server/handler.rb
196
206
  - lib/theme_check/language_server/protocol.rb
197
207
  - lib/theme_check/language_server/server.rb
198
208
  - lib/theme_check/language_server/tokens.rb
209
+ - lib/theme_check/language_server/uri_helper.rb
199
210
  - lib/theme_check/language_server/variable_lookup_finder.rb
200
211
  - lib/theme_check/liquid_check.rb
201
212
  - lib/theme_check/locale_diff.rb
data/bin/liquid-server DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env bash
2
- dev="/opt/dev/bin/dev"
3
- cd "$($dev project-path theme-check)"
4
- "$dev" language-server
@@ -1,3 +0,0 @@
1
- @ECHO OFF
2
-
3
- ruby "%~dp0\theme-check-language-server" %*
data/exe/theme-check.bat DELETED
@@ -1,3 +0,0 @@
1
- @ECHO OFF
2
-
3
- ruby "%~dp0\theme-check" %*