forked from Shopify/theme-check
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmissing_required_template_files.rb
46 lines (40 loc) · 1.64 KB
/
missing_required_template_files.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
44
45
46
# frozen_string_literal: true
module ThemeCheck
# Reports missing shopify required theme files
# required templates: https://shopify.dev/tutorials/review-theme-store-requirements-files
class MissingRequiredTemplateFiles < LiquidCheck
severity :error
category :liquid
doc docs_url(__FILE__)
REQUIRED_LIQUID_FILES = %w(layout/theme)
REQUIRED_LIQUID_TEMPLATE_FILES = %w(
gift_card customers/account customers/activate_account customers/addresses
customers/login customers/order customers/register customers/reset_password
).map { |file| "templates/#{file}" }
REQUIRED_JSON_TEMPLATE_FILES = %w(
index product collection cart blog article page list-collections search 404
password
).map { |file| "templates/#{file}" }
REQUIRED_TEMPLATE_FILES = (REQUIRED_LIQUID_TEMPLATE_FILES + REQUIRED_JSON_TEMPLATE_FILES)
def on_end
(REQUIRED_LIQUID_FILES - theme.liquid.map(&:name)).each do |file|
add_offense("'#{file}.liquid' is missing") do |corrector|
corrector.create_file(@theme.storage, "#{file}.liquid", "")
end
end
(REQUIRED_TEMPLATE_FILES - (theme.liquid + theme.json).map(&:name)).each do |file|
add_offense("'#{file}.liquid' or '#{file}.json' is missing") do |corrector|
if REQUIRED_LIQUID_TEMPLATE_FILES.include?(file)
corrector.create_file(@theme.storage, "#{file}.liquid", "")
else
corrector.create_file(@theme.storage, "#{file}.json", JSON.pretty_generate({
name: "TODO",
sections: {},
order: [],
}))
end
end
end
end
end
end