|
|
@@ -739,20 +739,28 @@ class Template:
|
|
|
debug: Enable debug mode with verbose output
|
|
|
|
|
|
Returns:
|
|
|
- Tuple of (rendered_files, variable_values) where variable_values includes autogenerated values
|
|
|
+ Tuple of (rendered_files, variable_values) where variable_values includes autogenerated values.
|
|
|
+ Empty files (files with only whitespace) are excluded from the returned dict.
|
|
|
"""
|
|
|
variable_values = variables.get_satisfied_values()
|
|
|
self._generate_autogenerated_values(variables, variable_values)
|
|
|
self._log_render_start(debug, variable_values)
|
|
|
|
|
|
rendered_files = {}
|
|
|
+ skipped_files = []
|
|
|
available_vars = set(variable_values.keys())
|
|
|
|
|
|
for template_file in self.template_files:
|
|
|
if template_file.file_type == "j2":
|
|
|
try:
|
|
|
content = self._render_jinja2_file(template_file, variable_values, available_vars, debug)
|
|
|
- rendered_files[str(template_file.output_path)] = content
|
|
|
+ # Skip empty files (only whitespace or empty string)
|
|
|
+ if content.strip():
|
|
|
+ rendered_files[str(template_file.output_path)] = content
|
|
|
+ else:
|
|
|
+ skipped_files.append(str(template_file.output_path))
|
|
|
+ if debug:
|
|
|
+ logger.info(f"Skipping empty file: {template_file.output_path}")
|
|
|
except (
|
|
|
UndefinedError,
|
|
|
Jinja2TemplateSyntaxError,
|
|
|
@@ -773,8 +781,12 @@ class Template:
|
|
|
) from e
|
|
|
elif template_file.file_type == "static":
|
|
|
content = self._render_static_file(template_file, debug)
|
|
|
+ # Static files are always included, even if empty
|
|
|
rendered_files[str(template_file.output_path)] = content
|
|
|
|
|
|
+ if skipped_files:
|
|
|
+ logger.debug(f"Skipped {len(skipped_files)} empty file(s): {', '.join(skipped_files)}")
|
|
|
+
|
|
|
return rendered_files, variable_values
|
|
|
|
|
|
def _sanitize_content(self, content: str, _file_path: Path) -> str:
|