|
|
@ -39,6 +39,7 @@ from calculate.variables.datavars import (
|
|
|
|
FloatType,
|
|
|
|
FloatType,
|
|
|
|
ListType
|
|
|
|
ListType
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
from calculate.utils.fs import readFile
|
|
|
|
from calculate.variables.loader import Datavars
|
|
|
|
from calculate.variables.loader import Datavars
|
|
|
|
|
|
|
|
|
|
|
|
import calculate.templates.template_filters as template_filters
|
|
|
|
import calculate.templates.template_filters as template_filters
|
|
|
@ -970,6 +971,7 @@ class CalculateExtension(Extension):
|
|
|
|
self.package_atom_parser = PackageAtomParser(chroot_path=chroot_path)
|
|
|
|
self.package_atom_parser = PackageAtomParser(chroot_path=chroot_path)
|
|
|
|
|
|
|
|
|
|
|
|
self.environment.globals.update({'pkg': self.pkg})
|
|
|
|
self.environment.globals.update({'pkg': self.pkg})
|
|
|
|
|
|
|
|
self.environment.globals.update({'grep': self.grep})
|
|
|
|
|
|
|
|
|
|
|
|
self._datavars = datavars_module
|
|
|
|
self._datavars = datavars_module
|
|
|
|
self.parameters_processor = parameters_processor
|
|
|
|
self.parameters_processor = parameters_processor
|
|
|
@ -1472,6 +1474,36 @@ class CalculateExtension(Extension):
|
|
|
|
return Version()
|
|
|
|
return Version()
|
|
|
|
return package.version
|
|
|
|
return package.version
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@contextfunction
|
|
|
|
|
|
|
|
def grep(self, context, fname, regpattern) -> str:
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
Метод реализующий функция grep
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
|
|
reg = re.compile(regpattern)
|
|
|
|
|
|
|
|
except re.error:
|
|
|
|
|
|
|
|
raise TemplateSyntaxError(_("Wrong regular expression"))
|
|
|
|
|
|
|
|
# TODO: добавить получение домашней директории пользователя
|
|
|
|
|
|
|
|
#if fname[0] == "~":
|
|
|
|
|
|
|
|
# # Получаем директорию пользователя
|
|
|
|
|
|
|
|
# fname = os.path.join(self.homeDir,
|
|
|
|
|
|
|
|
# fname.partition("/")[2], "")[:-1]
|
|
|
|
|
|
|
|
# TODO: учитывать также root_path
|
|
|
|
|
|
|
|
fname = os.path.join(
|
|
|
|
|
|
|
|
self.parameters_processor.chroot_path,
|
|
|
|
|
|
|
|
fname.lstrip("/"))
|
|
|
|
|
|
|
|
fileContent = readFile(fname)
|
|
|
|
|
|
|
|
if not fileContent:
|
|
|
|
|
|
|
|
return ""
|
|
|
|
|
|
|
|
match_data = reg.search(fileContent)
|
|
|
|
|
|
|
|
if match_data:
|
|
|
|
|
|
|
|
md_groups = match_data.groups()
|
|
|
|
|
|
|
|
if md_groups:
|
|
|
|
|
|
|
|
return md_groups[0] or ""
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
return match_data.group()
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
return ""
|
|
|
|
|
|
|
|
|
|
|
|
class TemplateEngine:
|
|
|
|
class TemplateEngine:
|
|
|
|
def __init__(self, directory_path=None,
|
|
|
|
def __init__(self, directory_path=None,
|
|
|
|