diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2013-02-20 10:38:38 -0500 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2013-02-20 10:38:38 -0500 |
commit | 69ebf49d54aac70a42142d0d04e562496bce58ea (patch) | |
tree | ad0f346ff95a14ad49440128ff76d7e2b3f0816a /src/lib/Bcfg2/Server/Lint/Genshi.py | |
parent | 602ba6af6bd1c9b3910940dee766660ab8e81a19 (diff) | |
parent | e17e41dcff096ead7e129a0db063f75de44aaa2b (diff) | |
download | bcfg2-69ebf49d54aac70a42142d0d04e562496bce58ea.tar.gz bcfg2-69ebf49d54aac70a42142d0d04e562496bce58ea.tar.bz2 bcfg2-69ebf49d54aac70a42142d0d04e562496bce58ea.zip |
Merge branch 'master' into 1.4.x
Conflicts:
doc/appendix/contributors.txt
schemas/bundle.xsd
src/lib/Bcfg2/Client/Tools/__init__.py
src/lib/Bcfg2/Server/Encryption.py
src/lib/Bcfg2/Server/Lint/Genshi.py
src/lib/Bcfg2/Server/Plugins/Bundler.py
src/lib/Bcfg2/Server/Plugins/Decisions.py
src/lib/Bcfg2/Server/Plugins/TemplateHelper.py
src/sbin/bcfg2-test
testsuite/Testsrc/Testlib/TestClient/TestTools/TestPOSIX/Test__init.py
testsuite/Testsrc/Testlib/TestClient/TestTools/TestPOSIXUsers.py
testsuite/Testsrc/Testlib/TestServer/TestPlugin/Testhelpers.py
testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestProperties.py
tools/bcfg2-profile-templates.py
Diffstat (limited to 'src/lib/Bcfg2/Server/Lint/Genshi.py')
-rwxr-xr-x | src/lib/Bcfg2/Server/Lint/Genshi.py | 48 |
1 files changed, 31 insertions, 17 deletions
diff --git a/src/lib/Bcfg2/Server/Lint/Genshi.py b/src/lib/Bcfg2/Server/Lint/Genshi.py index 437e69d82..ed0d9930f 100755 --- a/src/lib/Bcfg2/Server/Lint/Genshi.py +++ b/src/lib/Bcfg2/Server/Lint/Genshi.py @@ -1,8 +1,11 @@ """ Check Genshi templates for syntax errors """ import sys -import genshi.template import Bcfg2.Server.Lint +from genshi.template import TemplateLoader, NewTextTemplate, MarkupTemplate, \ + TemplateSyntaxError +from Bcfg2.Server.Plugins.Bundler import BundleTemplateFile +from Bcfg2.Server.Plugins.Cfg.CfgGenshiGenerator import CfgGenshiGenerator class Genshi(Bcfg2.Server.Lint.ServerPlugin): @@ -10,29 +13,40 @@ class Genshi(Bcfg2.Server.Lint.ServerPlugin): def Run(self): """ run plugin """ - loader = genshi.template.TemplateLoader() if 'Cfg' in self.core.plugins: - self.check_files(self.core.plugins['Cfg'].entries, - loader=loader) + self.check_cfg() + if 'Bundler' in self.core.plugins: + self.check_bundler() @classmethod def Errors(cls): return {"genshi-syntax-error": "error"} - def check_files(self, entries, loader=None): - """ Check genshi templates in a list of entries for syntax - errors """ - if loader is None: - loader = genshi.template.TemplateLoader() - - for eset in entries.values(): - for fname, sdata in list(eset.entries.items()): - if (self.HandlesFile(fname) and - (fname.endswith(".genshi") or fname.endswith(".newtxt"))): + def check_cfg(self): + """ Check genshi templates in Cfg for syntax errors """ + for entryset in self.core.plugins['Cfg'].entries.values(): + for entry in entryset.entries.values(): + if (self.HandlesFile(entry.name) and + isinstance(entry, CfgGenshiGenerator) and + not entry.template): try: - loader.load(sdata.name, - cls=genshi.template.NewTextTemplate) - except genshi.template.TemplateSyntaxError: + entry.loader.load(entry.name, + cls=NewTextTemplate) + except TemplateSyntaxError: err = sys.exc_info()[1] self.LintError("genshi-syntax-error", "Genshi syntax error: %s" % err) + + def check_bundler(self): + """ Check templates in Bundler for syntax errors """ + loader = TemplateLoader() + + for entry in self.core.plugins['Bundler'].entries.values(): + if (self.HandlesFile(entry.name) and + isinstance(entry, BundleTemplateFile)): + try: + loader.load(entry.name, cls=MarkupTemplate) + except TemplateSyntaxError: + err = sys.exc_info()[1] + self.LintError("genshi-syntax-error", + "Genshi syntax error: %s" % err) |