FIXES #370: bug-for-bug hanlding of .env

This commit is contained in:
Muayyad alsadi 2021-12-10 01:01:45 +02:00
parent 85244272ff
commit 8cd97682d0
4 changed files with 17 additions and 7 deletions

View File

@ -6,7 +6,13 @@ This project focus on:
* rootless * rootless
* daemon-less process model, we directly execute podman, no running daemon. * daemon-less process model, we directly execute podman, no running daemon.
This project only depend on `podman` and Python3 and [PyYAML](https://pyyaml.org/). This project only depend on:
* `podman`
* Python3
* [PyYAML](https://pyyaml.org/)
* [python-dotenv](https://pypi.org/project/python-dotenv/)
And it's formed as a single python file script that you can drop into your PATH and run. And it's formed as a single python file script that you can drop into your PATH and run.
## References: ## References:

View File

@ -32,8 +32,8 @@ except ImportError:
# import fnmatch # import fnmatch
# fnmatch.fnmatchcase(env, "*_HOST") # fnmatch.fnmatchcase(env, "*_HOST")
import json
import yaml import yaml
from dotenv import dotenv_values
__version__ = '1.0.1' __version__ = '1.0.1'
@ -908,6 +908,10 @@ def resolve_extends(services, service_names, environ):
new_service = rec_merge({}, from_service, service) new_service = rec_merge({}, from_service, service)
services[name] = new_service services[name] = new_service
def dotenv_to_dict(dotenv_path):
if not os.path.isfile(dotenv_path):
return {}
return dotenv_values(dotenv_path)
class PodmanCompose: class PodmanCompose:
def __init__(self): def __init__(self):
@ -1021,10 +1025,7 @@ class PodmanCompose:
dotenv_path = os.path.join(dirname, ".env") dotenv_path = os.path.join(dirname, ".env")
self.environ = dict(os.environ) self.environ = dict(os.environ)
if os.path.isfile(dotenv_path): self.environ.update(dotenv_to_dict(dotenv_path))
with open(dotenv_path, 'r') as f:
dotenv_ls = [l.strip() for l in f if l.strip() and not l.startswith('#')]
self.environ.update(dict([l.split("=", 1) for l in dotenv_ls if "=" in l]))
# TODO: should read and respect those env variables # TODO: should read and respect those env variables
# see: https://docs.docker.com/compose/reference/envvars/ # see: https://docs.docker.com/compose/reference/envvars/
# see: https://docs.docker.com/compose/env-file/ # see: https://docs.docker.com/compose/env-file/

View File

@ -3,3 +3,5 @@
# process, which may cause wedges in the gate later. # process, which may cause wedges in the gate later.
pyyaml pyyaml
python-dotenv

View File

@ -36,7 +36,8 @@ setup(
include_package_data=True, include_package_data=True,
license='GPL-2.0-only', license='GPL-2.0-only',
install_requires=[ install_requires=[
'pyyaml' 'pyyaml',
'python-dotenv',
], ],
# test_suite='tests', # test_suite='tests',
# tests_require=[ # tests_require=[