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 pathlib
|
||||||
|
|
||||||
Import('env')
|
Import('env')
|
||||||
@ -31,11 +32,24 @@ def _wrap_jinja(orig_jinja):
|
|||||||
return target
|
return target
|
||||||
return _wrapped
|
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:
|
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:
|
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])
|
return ','.join([hex(byte) for byte in bytes])
|
||||||
|
|
||||||
env.AddMethod(_wrap_jinja(env.Jinja), 'Jinja')
|
env.AddMethod(_wrap_jinja(env.Jinja), 'Jinja')
|
||||||
@ -46,4 +60,5 @@ env.Append(JINJA_GLOBALS = {
|
|||||||
})
|
})
|
||||||
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')]
|
||||||
|
env['JINJA_FILE_SEARCHPATH'] = [env.Dir('#')]
|
||||||
Return('env')
|
Return('env')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user