10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/textus/manifest/entry/validators/publish_each.rb', line 10
def self.call(entry)
return if entry.publish_each.nil?
raise UsageError.new("entry '#{entry.key}': publish_each requires nested: true") unless entry.nested
raise UsageError.new("entry '#{entry.key}': publish_to and publish_each are mutually exclusive") unless entry.publish_to.empty?
raise UsageError.new("entry '#{entry.key}': publish_each must be a string") unless entry.publish_each.is_a?(String)
used_vars = entry.publish_each.scan(VAR_RE).flatten
unknown = used_vars - KNOWN_VARS
unless unknown.empty?
raise UsageError.new(
"entry '#{entry.key}': publish_each uses unknown template variable(s) " \
"#{unknown.map { |v| "{#{v}}" }.join(", ")}. Known: #{KNOWN_VARS.map { |v| "{#{v}}" }.join(", ")}.",
)
end
return if used_vars.any? { |v| REQUIRED_DISCRIMINATOR_VARS.include?(v) }
raise UsageError.new(
"entry '#{entry.key}': publish_each must reference at least one of {leaf}, {basename}, or {key} " \
"(else every leaf would clobber the same target).",
)
end
|