|
|
|
@ -279,29 +279,30 @@ class TaskExecutor:
|
|
|
|
|
# This gets the information to check whether the name field
|
|
|
|
|
# contains a template that we can squash for
|
|
|
|
|
template_no_item = template_with_item = None
|
|
|
|
|
if templar._contains_vars(name):
|
|
|
|
|
variables['item'] = '\0$'
|
|
|
|
|
template_no_item = templar.template(name, variables, cache=False)
|
|
|
|
|
variables['item'] = '\0@'
|
|
|
|
|
template_with_item = templar.template(name, variables, cache=False)
|
|
|
|
|
del variables['item']
|
|
|
|
|
|
|
|
|
|
# Check if the user is doing some operation that doesn't take
|
|
|
|
|
# name/pkg or the name/pkg field doesn't have any variables
|
|
|
|
|
# and thus the items can't be squashed
|
|
|
|
|
if name and (template_no_item != template_with_item):
|
|
|
|
|
for item in items:
|
|
|
|
|
variables['item'] = item
|
|
|
|
|
if self._task.evaluate_conditional(templar, variables):
|
|
|
|
|
new_item = templar.template(name, cache=False)
|
|
|
|
|
final_items.append(new_item)
|
|
|
|
|
self._task.args['name'] = final_items
|
|
|
|
|
# Wrap this in a list so that the calling function loop
|
|
|
|
|
# executes exactly once
|
|
|
|
|
return [final_items]
|
|
|
|
|
else:
|
|
|
|
|
# Restore the name parameter
|
|
|
|
|
self._task.args['name'] = name
|
|
|
|
|
if name:
|
|
|
|
|
if templar._contains_vars(name):
|
|
|
|
|
variables['item'] = '\0$'
|
|
|
|
|
template_no_item = templar.template(name, variables, cache=False)
|
|
|
|
|
variables['item'] = '\0@'
|
|
|
|
|
template_with_item = templar.template(name, variables, cache=False)
|
|
|
|
|
del variables['item']
|
|
|
|
|
|
|
|
|
|
# Check if the user is doing some operation that doesn't take
|
|
|
|
|
# name/pkg or the name/pkg field doesn't have any variables
|
|
|
|
|
# and thus the items can't be squashed
|
|
|
|
|
if template_no_item != template_with_item:
|
|
|
|
|
for item in items:
|
|
|
|
|
variables['item'] = item
|
|
|
|
|
if self._task.evaluate_conditional(templar, variables):
|
|
|
|
|
new_item = templar.template(name, cache=False)
|
|
|
|
|
final_items.append(new_item)
|
|
|
|
|
self._task.args['name'] = final_items
|
|
|
|
|
# Wrap this in a list so that the calling function loop
|
|
|
|
|
# executes exactly once
|
|
|
|
|
return [final_items]
|
|
|
|
|
else:
|
|
|
|
|
# Restore the name parameter
|
|
|
|
|
self._task.args['name'] = name
|
|
|
|
|
#elif:
|
|
|
|
|
# Right now we only optimize single entries. In the future we
|
|
|
|
|
# could optimize more types:
|
|
|
|
|