From ffc6dcf8d1e388720f22d4e6bfeb6816cb2bd668 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Thu, 8 Apr 2010 02:32:22 +0200 Subject: [PATCH 2/2] support environment variables as part of extends values --- src/zc/buildout/buildout.py | 5 +++++ src/zc/buildout/tests.py | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 0 deletions(-) diff --git a/src/zc/buildout/buildout.py b/src/zc/buildout/buildout.py index eacc2be..00d6c10 100644 --- a/src/zc/buildout/buildout.py +++ b/src/zc/buildout/buildout.py @@ -1334,6 +1334,11 @@ def _open(base, filename, seen, dl_options, override): dl_options = _update_section(dl_options, result['buildout']) if extends: + extends = re.sub( + '\${env:([^}]+)}', + lambda m: os.environ[m.groups()[0]], + extends, + ) extends = extends.split() eresult = _open(base, extends.pop(0), seen, dl_options, override) for fname in extends: diff --git a/src/zc/buildout/tests.py b/src/zc/buildout/tests.py index 1b03286..54f1523 100644 --- a/src/zc/buildout/tests.py +++ b/src/zc/buildout/tests.py @@ -2656,6 +2656,32 @@ def increment_buildout_with_multiple_extended_files_421022_and_envvars(): recipe='zc.buildout:debug' """ +def env_vars_in_extends(): + r""" + >>> write('foo.cfg', ''' + ... [buildout] + ... foo-option = I + ... ''') + >>> write('buildout.cfg', ''' + ... [buildout] + ... parts = other + ... extends = ${env:to_extend}.cfg + ... foo-option += am + ... + ... [other] + ... recipe = zc.buildout:debug + ... foo-option = ${env:foo} fine + ... ''') + + >>> print system(buildout, env={ + ... 'to_extend':'foo', + ... 'foo':'${buildout:foo-option}', + ... }), + Installing other. + foo-option='I\nam fine' + recipe='zc.buildout:debug' + """ + def increment_on_command_line(): r""" >>> write('buildout.cfg', ''' -- 1.6.6.2