diff --git a/bcfg2/pygen.py b/bcfg2/pygen.py old mode 100644 new mode 100755 index 3b7d8400..897671af --- a/bcfg2/pygen.py +++ b/bcfg2/pygen.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python # -*- mode: python; coding: utf-8 -*- # # pygen.py @@ -96,7 +97,7 @@ class Environment(dict): # Cette fonction pourrait être écrite directement dans les scripts # mais elle est pratique donc on la met pour tout le monde - def export(variable): + def export(self, variable): '''Exporte une variable''' self["exports"].add(variable) @@ -152,10 +153,16 @@ def generate(code, environment=None): if not environment: environment = Environment() environment.stream = StringIO() + save_stdout = sys.stdout + sys.stdout = environment.stream try: exec(code, environment) except Done, _: pass + except Exception, exn: + sys.stdout = save_stdout + raise exn + sys.stdout = save_stdout return environment.stream.getvalue() def load(fname, cfname=None): @@ -171,3 +178,11 @@ def load(fname, cfname=None): marshal.dump(code, cfile) cfile.close() return code + +if __name__ == "__main__": + import sys + + result = generate(load(sys.argv[1])) + + print "resultat:" + sys.stdout.write(result)