Added JINJA_FILE_SEARCHPATH for Jinja file functions to make it easier for library projects to find their files.
This commit is contained in:
parent
2769fd801f
commit
9436d2c48d
@ -1,4 +1,5 @@
|
||||
|
||||
import os
|
||||
import pathlib
|
||||
|
||||
Import('env')
|
||||
@ -31,11 +32,24 @@ def _wrap_jinja(orig_jinja):
|
||||
return target
|
||||
return _wrapped
|
||||
|
||||
def _find_file(env, fname):
|
||||
for path in env['JINJA_FILE_SEARCHPATH']:
|
||||
fullpath = os.path.join(path.abspath, fname)
|
||||
if os.path.exists(fullpath):
|
||||
return env.File(fullpath)
|
||||
return None
|
||||
|
||||
def _file_size(env, fname: str) -> int:
|
||||
return env.File(fname).get_size()
|
||||
file = _find_file(env, fname)
|
||||
if not file:
|
||||
env.Error(f'File does not exist: {fname}. Searched in: {[d.abspath for d in env["JINJA_FILE_SEARCHPATH"]]}')
|
||||
return file.get_size()
|
||||
|
||||
def _file_content_hex(env, fname: str) -> str:
|
||||
bytes = env.File(fname).get_contents()
|
||||
file = _find_file(env, fname)
|
||||
if not file:
|
||||
env.Error(f'File does not exist: {fname}. Searched in: {[d.abspath for d in env["JINJA_FILE_SEARCHPATH"]]}')
|
||||
bytes = file.get_contents()
|
||||
return ','.join([hex(byte) for byte in bytes])
|
||||
|
||||
env.AddMethod(_wrap_jinja(env.Jinja), 'Jinja')
|
||||
@ -46,4 +60,5 @@ env.Append(JINJA_GLOBALS = {
|
||||
})
|
||||
env.Append(JINJA_TEMPLATE_SEARCHPATH = ['data/jinja'])
|
||||
env['JINJA_CONFIG_SEARCHPATH'] = [env.Dir('#data/config')]
|
||||
env['JINJA_FILE_SEARCHPATH'] = [env.Dir('#')]
|
||||
Return('env')
|
||||
|
Loading…
x
Reference in New Issue
Block a user