theme-check 0.4.0 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/theme-check.yml +10 -3
- data/.rubocop.yml +12 -3
- data/CHANGELOG.md +40 -0
- data/CONTRIBUTING.md +5 -2
- data/Gemfile +5 -3
- data/LICENSE.md +2 -0
- data/README.md +12 -2
- data/RELEASING.md +10 -3
- data/Rakefile +6 -0
- data/config/default.yml +16 -0
- data/data/shopify_liquid/tags.yml +1 -0
- data/data/shopify_translation_keys.yml +850 -0
- data/docs/checks/CHECK_DOCS_TEMPLATE.md +47 -0
- data/docs/checks/asset_size_css.md +52 -0
- data/docs/checks/asset_size_javascript.md +79 -0
- data/docs/checks/convert_include_to_render.md +48 -0
- data/docs/checks/default_locale.md +46 -0
- data/docs/checks/deprecated_filter.md +46 -0
- data/docs/checks/img_width_and_height.md +79 -0
- data/docs/checks/liquid_tag.md +65 -0
- data/docs/checks/matching_schema_translations.md +93 -0
- data/docs/checks/matching_translations.md +72 -0
- data/docs/checks/missing_enable_comment.md +50 -0
- data/docs/checks/missing_required_template_files.md +26 -0
- data/docs/checks/missing_template.md +40 -0
- data/docs/checks/nested_snippet.md +69 -0
- data/docs/checks/parser_blocking_javascript.md +97 -0
- data/docs/checks/remote_asset.md +82 -0
- data/docs/checks/required_directories.md +25 -0
- data/docs/checks/required_layout_theme_object.md +28 -0
- data/docs/checks/space_inside_braces.md +63 -0
- data/docs/checks/syntax_error.md +49 -0
- data/docs/checks/template_length.md +50 -0
- data/docs/checks/translation_key_exists.md +63 -0
- data/docs/checks/undefined_object.md +53 -0
- data/docs/checks/unknown_filter.md +45 -0
- data/docs/checks/unused_assign.md +47 -0
- data/docs/checks/unused_snippet.md +32 -0
- data/docs/checks/valid_html_translation.md +53 -0
- data/docs/checks/valid_json.md +60 -0
- data/docs/checks/valid_schema.md +50 -0
- data/lib/theme_check.rb +4 -0
- data/lib/theme_check/asset_file.rb +34 -0
- data/lib/theme_check/check.rb +20 -10
- data/lib/theme_check/checks/asset_size_css.rb +89 -0
- data/lib/theme_check/checks/asset_size_javascript.rb +68 -0
- data/lib/theme_check/checks/convert_include_to_render.rb +1 -1
- data/lib/theme_check/checks/default_locale.rb +1 -0
- data/lib/theme_check/checks/deprecated_filter.rb +1 -1
- data/lib/theme_check/checks/img_width_and_height.rb +74 -0
- data/lib/theme_check/checks/liquid_tag.rb +3 -3
- data/lib/theme_check/checks/matching_schema_translations.rb +1 -0
- data/lib/theme_check/checks/matching_translations.rb +2 -1
- data/lib/theme_check/checks/missing_enable_comment.rb +1 -0
- data/lib/theme_check/checks/missing_required_template_files.rb +1 -2
- data/lib/theme_check/checks/missing_template.rb +1 -0
- data/lib/theme_check/checks/nested_snippet.rb +1 -0
- data/lib/theme_check/checks/parser_blocking_javascript.rb +8 -15
- data/lib/theme_check/checks/remote_asset.rb +99 -0
- data/lib/theme_check/checks/required_directories.rb +1 -1
- data/lib/theme_check/checks/required_layout_theme_object.rb +1 -1
- data/lib/theme_check/checks/space_inside_braces.rb +1 -0
- data/lib/theme_check/checks/syntax_error.rb +1 -0
- data/lib/theme_check/checks/template_length.rb +1 -0
- data/lib/theme_check/checks/translation_key_exists.rb +14 -1
- data/lib/theme_check/checks/undefined_object.rb +11 -5
- data/lib/theme_check/checks/unknown_filter.rb +1 -0
- data/lib/theme_check/checks/unused_assign.rb +1 -0
- data/lib/theme_check/checks/unused_snippet.rb +1 -0
- data/lib/theme_check/checks/valid_html_translation.rb +2 -1
- data/lib/theme_check/checks/valid_json.rb +1 -0
- data/lib/theme_check/checks/valid_schema.rb +1 -0
- data/lib/theme_check/cli.rb +29 -9
- data/lib/theme_check/config.rb +5 -2
- data/lib/theme_check/disabled_checks.rb +2 -2
- data/lib/theme_check/in_memory_storage.rb +13 -8
- data/lib/theme_check/language_server.rb +2 -0
- data/lib/theme_check/language_server/completion_engine.rb +3 -3
- data/lib/theme_check/language_server/completion_helper.rb +0 -10
- data/lib/theme_check/language_server/completion_provider.rb +5 -0
- data/lib/theme_check/language_server/completion_providers/filter_completion_provider.rb +6 -2
- data/lib/theme_check/language_server/completion_providers/object_completion_provider.rb +1 -1
- data/lib/theme_check/language_server/completion_providers/render_snippet_completion_provider.rb +43 -0
- data/lib/theme_check/language_server/completion_providers/tag_completion_provider.rb +2 -2
- data/lib/theme_check/language_server/constants.rb +10 -0
- data/lib/theme_check/language_server/document_link_engine.rb +48 -0
- data/lib/theme_check/language_server/handler.rb +67 -20
- data/lib/theme_check/language_server/server.rb +9 -4
- data/lib/theme_check/liquid_check.rb +11 -0
- data/lib/theme_check/node.rb +1 -2
- data/lib/theme_check/offense.rb +3 -1
- data/lib/theme_check/packager.rb +1 -1
- data/lib/theme_check/regex_helpers.rb +15 -0
- data/lib/theme_check/releaser.rb +39 -0
- data/lib/theme_check/remote_asset_file.rb +44 -0
- data/lib/theme_check/shopify_liquid/deprecated_filter.rb +10 -8
- data/lib/theme_check/shopify_liquid/filter.rb +3 -5
- data/lib/theme_check/shopify_liquid/object.rb +2 -6
- data/lib/theme_check/shopify_liquid/tag.rb +1 -3
- data/lib/theme_check/storage.rb +3 -3
- data/lib/theme_check/string_helpers.rb +47 -0
- data/lib/theme_check/tags.rb +1 -2
- data/lib/theme_check/theme.rb +7 -1
- data/lib/theme_check/version.rb +1 -1
- data/packaging/homebrew/theme_check.base.rb +1 -1
- data/theme-check.gemspec +1 -2
- metadata +46 -18
@@ -10,17 +10,19 @@ module ThemeCheck
|
|
10
10
|
all.fetch(filter, nil)
|
11
11
|
end
|
12
12
|
|
13
|
+
def labels
|
14
|
+
@labels ||= all.keys
|
15
|
+
end
|
16
|
+
|
13
17
|
private
|
14
18
|
|
15
19
|
def all
|
16
|
-
@all ||=
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|
20
|
+
@all ||= YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/deprecated_filters.yml"))
|
21
|
+
.values
|
22
|
+
.each_with_object({}) do |filters, acc|
|
23
|
+
filters.each do |(filter, alternatives)|
|
24
|
+
acc[filter] = alternatives
|
25
|
+
end
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
@@ -7,11 +7,9 @@ module ThemeCheck
|
|
7
7
|
extend self
|
8
8
|
|
9
9
|
def labels
|
10
|
-
@labels ||=
|
11
|
-
|
12
|
-
|
13
|
-
.flatten
|
14
|
-
end
|
10
|
+
@labels ||= YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/filters.yml"))
|
11
|
+
.values
|
12
|
+
.flatten
|
15
13
|
end
|
16
14
|
end
|
17
15
|
end
|
@@ -7,15 +7,11 @@ module ThemeCheck
|
|
7
7
|
extend self
|
8
8
|
|
9
9
|
def labels
|
10
|
-
@labels ||=
|
11
|
-
YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/objects.yml"))
|
12
|
-
end
|
10
|
+
@labels ||= YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/objects.yml"))
|
13
11
|
end
|
14
12
|
|
15
13
|
def plus_labels
|
16
|
-
@plus_labels ||=
|
17
|
-
YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/plus_objects.yml"))
|
18
|
-
end
|
14
|
+
@plus_labels ||= YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/plus_objects.yml"))
|
19
15
|
end
|
20
16
|
end
|
21
17
|
end
|
data/lib/theme_check/storage.rb
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
|
3
3
|
module ThemeCheck
|
4
4
|
class Storage
|
5
|
-
def
|
5
|
+
def path(relative_path)
|
6
6
|
raise NotImplementedError
|
7
7
|
end
|
8
8
|
|
9
|
-
def
|
9
|
+
def read(relative_path)
|
10
10
|
raise NotImplementedError
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def write(relative_path, content)
|
14
14
|
raise NotImplementedError
|
15
15
|
end
|
16
16
|
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ThemeCheck
|
4
|
+
module StringHelpers
|
5
|
+
extend self
|
6
|
+
|
7
|
+
# Removes the module part from the expression in the string.
|
8
|
+
# Ported from ActiveSupport
|
9
|
+
#
|
10
|
+
# demodulize('ActiveSupport::Inflector::Inflections') # => "Inflections"
|
11
|
+
# demodulize('Inflections') # => "Inflections"
|
12
|
+
# demodulize('::Inflections') # => "Inflections"
|
13
|
+
# demodulize('') # => ""
|
14
|
+
#
|
15
|
+
# See also #deconstantize.
|
16
|
+
def demodulize(path)
|
17
|
+
path = path.to_s
|
18
|
+
if (i = path.rindex("::"))
|
19
|
+
path[(i + 2)..-1]
|
20
|
+
else
|
21
|
+
path
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Makes an underscored, lowercase form from the expression in the string.
|
26
|
+
# Base on ActiveSupport's
|
27
|
+
#
|
28
|
+
# Changes '::' to '/' to convert namespaces to paths.
|
29
|
+
#
|
30
|
+
# underscore('ActiveModel') # => "active_model"
|
31
|
+
# underscore('ActiveModel::Errors') # => "active_model/errors"
|
32
|
+
#
|
33
|
+
# As a rule of thumb you can think of +underscore+ as the inverse of
|
34
|
+
# #camelize, though there are cases where that does not hold:
|
35
|
+
#
|
36
|
+
# camelize(underscore('SSLError')) # => "SslError"
|
37
|
+
def underscore(camel_cased_word)
|
38
|
+
return camel_cased_word unless /[A-Z-]|::/.match?(camel_cased_word)
|
39
|
+
word = camel_cased_word.to_s.gsub("::", "/")
|
40
|
+
word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
|
41
|
+
word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
|
42
|
+
word.tr!("-", "_")
|
43
|
+
word.downcase!
|
44
|
+
word
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/theme_check/tags.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require "active_support/core_ext/string/starts_ends_with"
|
3
2
|
|
4
3
|
module ThemeCheck
|
5
4
|
module Tags
|
@@ -19,7 +18,7 @@ module ThemeCheck
|
|
19
18
|
"Error in tag 'section' - Valid syntax: section '[type]'",
|
20
19
|
) unless match
|
21
20
|
@section_name = match[:section_name].tr(%('"), '')
|
22
|
-
@section_name.chomp!(".liquid") if @section_name.
|
21
|
+
@section_name.chomp!(".liquid") if @section_name.end_with?(".liquid")
|
23
22
|
end
|
24
23
|
end
|
25
24
|
|
data/lib/theme_check/theme.rb
CHANGED
@@ -11,6 +11,12 @@ module ThemeCheck
|
|
11
11
|
@storage = storage
|
12
12
|
end
|
13
13
|
|
14
|
+
def assets
|
15
|
+
@assets ||= @storage.files
|
16
|
+
.select { |path| path.start_with?("assets/") }
|
17
|
+
.map { |path| AssetFile.new(path, @storage) }
|
18
|
+
end
|
19
|
+
|
14
20
|
def liquid
|
15
21
|
@liquid ||= @storage.files
|
16
22
|
.select { |path| LIQUID_REGEX.match?(path) }
|
@@ -43,7 +49,7 @@ module ThemeCheck
|
|
43
49
|
end
|
44
50
|
|
45
51
|
def all
|
46
|
-
@all ||= json + liquid
|
52
|
+
@all ||= json + liquid + assets
|
47
53
|
end
|
48
54
|
|
49
55
|
def [](name)
|
data/lib/theme_check/version.rb
CHANGED
@@ -13,7 +13,7 @@ class ThemeCheck < Formula
|
|
13
13
|
class RubyGemsDownloadStrategy < AbstractDownloadStrategy
|
14
14
|
include RubyBin
|
15
15
|
|
16
|
-
def fetch
|
16
|
+
def fetch(_timeout: nil, **_options)
|
17
17
|
ohai("Fetching theme-check from gem source")
|
18
18
|
cache.cd do
|
19
19
|
ENV['GEM_SPEC_CACHE'] = "#{cache}/gem_spec_cache"
|
data/theme-check.gemspec
CHANGED
@@ -22,7 +22,6 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ["lib"]
|
24
24
|
|
25
|
-
spec.add_dependency('liquid', '>= 5')
|
26
|
-
spec.add_dependency('activesupport')
|
25
|
+
spec.add_dependency('liquid', '>= 5.0.1')
|
27
26
|
spec.add_dependency('nokogumbo')
|
28
27
|
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: 0.
|
4
|
+
version: 0.7.2
|
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-
|
11
|
+
date: 2021-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: liquid
|
@@ -16,28 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 5.0.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: activesupport
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
26
|
+
version: 5.0.1
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: nokogumbo
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,17 +67,51 @@ files:
|
|
81
67
|
- data/shopify_liquid/objects.yml
|
82
68
|
- data/shopify_liquid/plus_objects.yml
|
83
69
|
- data/shopify_liquid/tags.yml
|
70
|
+
- data/shopify_translation_keys.yml
|
84
71
|
- dev.yml
|
72
|
+
- docs/checks/CHECK_DOCS_TEMPLATE.md
|
73
|
+
- docs/checks/asset_size_css.md
|
74
|
+
- docs/checks/asset_size_javascript.md
|
75
|
+
- docs/checks/convert_include_to_render.md
|
76
|
+
- docs/checks/default_locale.md
|
77
|
+
- docs/checks/deprecated_filter.md
|
78
|
+
- docs/checks/img_width_and_height.md
|
79
|
+
- docs/checks/liquid_tag.md
|
80
|
+
- docs/checks/matching_schema_translations.md
|
81
|
+
- docs/checks/matching_translations.md
|
82
|
+
- docs/checks/missing_enable_comment.md
|
83
|
+
- docs/checks/missing_required_template_files.md
|
84
|
+
- docs/checks/missing_template.md
|
85
|
+
- docs/checks/nested_snippet.md
|
86
|
+
- docs/checks/parser_blocking_javascript.md
|
87
|
+
- docs/checks/remote_asset.md
|
88
|
+
- docs/checks/required_directories.md
|
89
|
+
- docs/checks/required_layout_theme_object.md
|
90
|
+
- docs/checks/space_inside_braces.md
|
91
|
+
- docs/checks/syntax_error.md
|
92
|
+
- docs/checks/template_length.md
|
93
|
+
- docs/checks/translation_key_exists.md
|
94
|
+
- docs/checks/undefined_object.md
|
95
|
+
- docs/checks/unknown_filter.md
|
96
|
+
- docs/checks/unused_assign.md
|
97
|
+
- docs/checks/unused_snippet.md
|
98
|
+
- docs/checks/valid_html_translation.md
|
99
|
+
- docs/checks/valid_json.md
|
100
|
+
- docs/checks/valid_schema.md
|
85
101
|
- docs/preview.png
|
86
102
|
- exe/theme-check
|
87
103
|
- exe/theme-check-language-server
|
88
104
|
- lib/theme_check.rb
|
89
105
|
- lib/theme_check/analyzer.rb
|
106
|
+
- lib/theme_check/asset_file.rb
|
90
107
|
- lib/theme_check/check.rb
|
91
108
|
- lib/theme_check/checks.rb
|
109
|
+
- lib/theme_check/checks/asset_size_css.rb
|
110
|
+
- lib/theme_check/checks/asset_size_javascript.rb
|
92
111
|
- lib/theme_check/checks/convert_include_to_render.rb
|
93
112
|
- lib/theme_check/checks/default_locale.rb
|
94
113
|
- lib/theme_check/checks/deprecated_filter.rb
|
114
|
+
- lib/theme_check/checks/img_width_and_height.rb
|
95
115
|
- lib/theme_check/checks/liquid_tag.rb
|
96
116
|
- lib/theme_check/checks/matching_schema_translations.rb
|
97
117
|
- lib/theme_check/checks/matching_translations.rb
|
@@ -100,6 +120,7 @@ files:
|
|
100
120
|
- lib/theme_check/checks/missing_template.rb
|
101
121
|
- lib/theme_check/checks/nested_snippet.rb
|
102
122
|
- lib/theme_check/checks/parser_blocking_javascript.rb
|
123
|
+
- lib/theme_check/checks/remote_asset.rb
|
103
124
|
- lib/theme_check/checks/required_directories.rb
|
104
125
|
- lib/theme_check/checks/required_layout_theme_object.rb
|
105
126
|
- lib/theme_check/checks/space_inside_braces.rb
|
@@ -129,7 +150,10 @@ files:
|
|
129
150
|
- lib/theme_check/language_server/completion_provider.rb
|
130
151
|
- lib/theme_check/language_server/completion_providers/filter_completion_provider.rb
|
131
152
|
- lib/theme_check/language_server/completion_providers/object_completion_provider.rb
|
153
|
+
- lib/theme_check/language_server/completion_providers/render_snippet_completion_provider.rb
|
132
154
|
- lib/theme_check/language_server/completion_providers/tag_completion_provider.rb
|
155
|
+
- lib/theme_check/language_server/constants.rb
|
156
|
+
- lib/theme_check/language_server/document_link_engine.rb
|
133
157
|
- lib/theme_check/language_server/handler.rb
|
134
158
|
- lib/theme_check/language_server/position_helper.rb
|
135
159
|
- lib/theme_check/language_server/protocol.rb
|
@@ -142,12 +166,16 @@ files:
|
|
142
166
|
- lib/theme_check/packager.rb
|
143
167
|
- lib/theme_check/parsing_helpers.rb
|
144
168
|
- lib/theme_check/printer.rb
|
169
|
+
- lib/theme_check/regex_helpers.rb
|
170
|
+
- lib/theme_check/releaser.rb
|
171
|
+
- lib/theme_check/remote_asset_file.rb
|
145
172
|
- lib/theme_check/shopify_liquid.rb
|
146
173
|
- lib/theme_check/shopify_liquid/deprecated_filter.rb
|
147
174
|
- lib/theme_check/shopify_liquid/filter.rb
|
148
175
|
- lib/theme_check/shopify_liquid/object.rb
|
149
176
|
- lib/theme_check/shopify_liquid/tag.rb
|
150
177
|
- lib/theme_check/storage.rb
|
178
|
+
- lib/theme_check/string_helpers.rb
|
151
179
|
- lib/theme_check/tags.rb
|
152
180
|
- lib/theme_check/template.rb
|
153
181
|
- lib/theme_check/theme.rb
|