From 2b9c65a1de6e9df501853ea9498ff86f56c3d6fb Mon Sep 17 00:00:00 2001 From: Jeremie Dimino Date: Thu, 7 Feb 2008 23:13:38 +0100 Subject: [PATCH] un peu plus simple a utiliser darcs-hash:20080207221338-af139-51a04967da887735ec416a52ad2d61590c8ea60f.gz --- bcfg2/pygen.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) mode change 100644 => 100755 bcfg2/pygen.py 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)