diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2024-06-06 01:45:29 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2024-06-06 01:56:11 +0300 |
commit | bcc6b8fc7f29a22c37b867854c71b2b6f85642dd (patch) | |
tree | d6baaf5bd750a87ddbaa6bb4c8edbcd01929d24a | |
parent | 6e903ff513003db32d13f88978a23fd9502b726f (diff) | |
download | ydb-bcc6b8fc7f29a22c37b867854c71b2b6f85642dd.tar.gz |
Intermediate changes
-rw-r--r-- | library/recipes/docker_compose/lib/__init__.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/library/recipes/docker_compose/lib/__init__.py b/library/recipes/docker_compose/lib/__init__.py index 93fe7133e7..affdb08369 100644 --- a/library/recipes/docker_compose/lib/__init__.py +++ b/library/recipes/docker_compose/lib/__init__.py @@ -24,7 +24,28 @@ class DockerComposeRecipeException(Exception): super(DockerComposeRecipeException, self).__init__("[[bad]]{}[[rst]]".format(msg)) +def avoid_env_interpolation(env=None): + # For more info see + # - https://docs.docker.com/compose/compose-file/12-interpolation + # - https://github.com/docker/compose/issues/9704 + # - https://st.yandex-team.ru/YA-1810 + + env = env or os.environ + replaced = [] + + for key, val in env.items(): + if "$" in val: + replaced.append(key) + env[key] = re.sub(r"((^\$$)|([^\$]\$$)|(\$[^\$\{A-Za-z]))", r"\1$", val) + + if replaced: + logger.debug("Replacing $ with $$ to avoid incorrect interpolation for %s. Fore more info see https://docs.docker.com/compose/compose-file/12-interpolation", replaced) + return env + + def start(argv): + avoid_env_interpolation(env=os.environ) + args = _parse_args(argv) yml_file, cwd = get_compose_file_and_cwd(argv) @@ -78,6 +99,8 @@ def start(argv): def stop(argv): + avoid_env_interpolation(env=os.environ) + if yatest.common.get_param("docker-pause"): library.python.testing.recipe.tty() try: |