Skip to content
Snippets Groups Projects
Commit 3e3df9b1 authored by Phillip Smyth's avatar Phillip Smyth
Browse files

loadelement.py & loader: Added file suffix check

_loader/loader.py: Added Suffix check and warning for named elements
_loader/loadelement.py: Added Suffix check and warning for dependencies
parent 13419381
No related branches found
No related tags found
Loading
...@@ -97,6 +97,7 @@ class Loader(): ...@@ -97,6 +97,7 @@ class Loader():
# Returns: The toplevel LoadElement # Returns: The toplevel LoadElement
def load(self, targets, rewritable=False, ticker=None, fetch_subprojects=False): def load(self, targets, rewritable=False, ticker=None, fetch_subprojects=False):
invalid_elements = []
for filename in targets: for filename in targets:
if os.path.isabs(filename): if os.path.isabs(filename):
# XXX Should this just be an assertion ? # XXX Should this just be an assertion ?
...@@ -106,6 +107,18 @@ class Loader(): ...@@ -106,6 +107,18 @@ class Loader():
"path to the base project directory: {}" "path to the base project directory: {}"
.format(filename, self._basedir)) .format(filename, self._basedir))
if not filename.endswith(".bst") and not filename.endswith("/") and not filename.endswith(".conf"):
invalid_elements.append(filename)
if invalid_elements:
# TODO CoreWarnings should probably move somewhere else
from ..plugin import CoreWarnings
self._context.warn(self.project, None,
"Target elements '{}' do not have expected file extension `.bst` "
"Improperly named elements will not be discoverable by commands"
.format(invalid_elements),
warning_token=CoreWarnings.BAD_ELEMENT_SUFFIX)
# First pass, recursively load files and populate our table of LoadElements # First pass, recursively load files and populate our table of LoadElements
# #
deps = [] deps = []
...@@ -269,7 +282,12 @@ class Loader(): ...@@ -269,7 +282,12 @@ class Loader():
self._elements[filename] = element self._elements[filename] = element
# Load all dependency files for the new LoadElement # Load all dependency files for the new LoadElement
invalid_elements = []
for dep in element.deps: for dep in element.deps:
if not dep.name.endswith(".bst") and not dep.name.endswith("/") and not dep.name.endswith(".conf"):
invalid_elements.append(dep.name)
continue
if dep.junction: if dep.junction:
self._load_file(dep.junction, rewritable, ticker, fetch_subprojects, yaml_cache) self._load_file(dep.junction, rewritable, ticker, fetch_subprojects, yaml_cache)
loader = self._get_loader(dep.junction, rewritable=rewritable, ticker=ticker, loader = self._get_loader(dep.junction, rewritable=rewritable, ticker=ticker,
...@@ -278,12 +296,19 @@ class Loader(): ...@@ -278,12 +296,19 @@ class Loader():
loader = self loader = self
dep_element = loader._load_file(dep.name, rewritable, ticker, fetch_subprojects, yaml_cache) dep_element = loader._load_file(dep.name, rewritable, ticker, fetch_subprojects, yaml_cache)
if _yaml.node_get(dep_element.node, str, Symbol.KIND) == 'junction': if _yaml.node_get(dep_element.node, str, Symbol.KIND) == 'junction':
raise LoadError(LoadErrorReason.INVALID_DATA, raise LoadError(LoadErrorReason.INVALID_DATA,
"{}: Cannot depend on junction" "{}: Cannot depend on junction"
.format(dep.provenance)) .format(dep.provenance))
if invalid_elements:
# TODO CoreWarnings should probably move somewhere else
from ..plugin import CoreWarnings
self._context.warn(self.project, None,
"Target elements '{}' do not have expected file extension `.bst` "
"Improperly named elements will not be discoverable by commands"
.format(invalid_elements),
warning_token=CoreWarnings.BAD_ELEMENT_SUFFIX)
return element return element
# _check_circular_deps(): # _check_circular_deps():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment