Added file_size and file_content_hex Jinja filters.

Added check if Jinja module exists and appropriate error message to
project generation.
This commit is contained in:
Patrick 2025-03-28 11:35:39 +01:00
parent 5f11d64744
commit 2769fd801f
2 changed files with 16 additions and 1 deletions

View File

@ -3,7 +3,6 @@ import copy
import enum import enum
import glob import glob
import inspect import inspect
import jinja2
import json import json
import multiprocessing import multiprocessing
import os import os
@ -540,6 +539,11 @@ def _target_entry(target_value):
return target_value[0] return target_value[0]
def _generate_project(project_type: str) -> None: def _generate_project(project_type: str) -> None:
try:
import jinja2
except ImportError:
_error(None, 'Project generation requires the jinja2 to be installed.')
source_folder, target_folder = { source_folder, target_folder = {
'clion': (os.path.join(_spp_dir.abspath, 'util', 'clion_project_template'), Dir('#.idea').abspath), 'clion': (os.path.join(_spp_dir.abspath, 'util', 'clion_project_template'), Dir('#.idea').abspath),
'vscode': (os.path.join(_spp_dir.abspath, 'util', 'vscode_project_template'), Dir('#.vscode').abspath) 'vscode': (os.path.join(_spp_dir.abspath, 'util', 'vscode_project_template'), Dir('#.vscode').abspath)

View File

@ -31,8 +31,19 @@ def _wrap_jinja(orig_jinja):
return target return target
return _wrapped return _wrapped
def _file_size(env, fname: str) -> int:
return env.File(fname).get_size()
def _file_content_hex(env, fname: str) -> str:
bytes = env.File(fname).get_contents()
return ','.join([hex(byte) for byte in bytes])
env.AddMethod(_wrap_jinja(env.Jinja), 'Jinja') env.AddMethod(_wrap_jinja(env.Jinja), 'Jinja')
env.Append(JINJA_FILTERS = {'load_config': _jinja_load_config}) env.Append(JINJA_FILTERS = {'load_config': _jinja_load_config})
env.Append(JINJA_GLOBALS = {
'file_size': lambda *args: _file_size(env, *args),
'file_content_hex': lambda *args: _file_content_hex(env, *args)
})
env.Append(JINJA_TEMPLATE_SEARCHPATH = ['data/jinja']) env.Append(JINJA_TEMPLATE_SEARCHPATH = ['data/jinja'])
env['JINJA_CONFIG_SEARCHPATH'] = [env.Dir('#data/config')] env['JINJA_CONFIG_SEARCHPATH'] = [env.Dir('#data/config')]
Return('env') Return('env')