From 238531f1ab6be8ff5d47dbc164962bcd58ba704d Mon Sep 17 00:00:00 2001 From: Scott Motte Date: Fri, 2 May 2025 10:30:34 -0700 Subject: [PATCH 1/3] add `dotenv_path` and `override` arguments --- src/dotenvx/main.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/dotenvx/main.py b/src/dotenvx/main.py index 8dab16a..5fb153a 100644 --- a/src/dotenvx/main.py +++ b/src/dotenvx/main.py @@ -8,21 +8,37 @@ ERROR_MISSING_BINARY = "[MISSING_BINARY] missing dotenvx binary\n[MISSING_BINARY] https://github.com/dotenvx/dotenvx/issues/576" -def load_dotenvx(): - output = get() +def load_dotenvx( + dotenv_path=None, + override=False +): + output = dotenvx_get( + dotenv_path=dotenv_path, + override=override + ) try: parsed = json.loads(output) for key, value in parsed.items(): os.environ[key] = value - return parsed + return True except Exception as e: raise RuntimeError(f"Failed to parse dotenvx output: {e}") -def get(): +def dotenvx_get( + dotenv_path=None, + override=False +): binpath = binary() + cmd = [binpath, "get", "-pp"] + + if dotenv_path: + cmd += ["-f", dotenv_path] + if override: + cmd.append("--overload") + output = subprocess.run( - [binpath, "get", "-pp"], + cmd, capture_output=True, text=True, check=True From 5d3a092d87a0466e23eae0f21f6ca648c0e15500 Mon Sep 17 00:00:00 2001 From: Scott Motte Date: Fri, 2 May 2025 10:32:04 -0700 Subject: [PATCH 2/3] =?UTF-8?q?changelog=20=F0=9F=AA=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc50d9e..b7c2db6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. -## [Unreleased](https://github.com/dotenvx/python-dotenvx/compare/v0.2.6...main) +## [Unreleased](https://github.com/dotenvx/python-dotenvx/compare/v0.3.0...main) + +## [0.3.0](https://github.com/dotenvx/dotenvx/compare/v0.2.6...v0.3.0) + +### Added + +* Add `dotenv_path` and `override` arguments ([#4](https://github.com/dotenvx/python-dotenvx/pull/4)) ## [0.2.6](https://github.com/dotenvx/dotenvx/compare/v0.2.5...v0.2.6) From 3c80747e1a8bbc2894155581b70e43625a82783d Mon Sep 17 00:00:00 2001 From: Scott Motte Date: Fri, 2 May 2025 10:34:08 -0700 Subject: [PATCH 3/3] return the parsed object like node dotenvx does --- src/dotenvx/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dotenvx/main.py b/src/dotenvx/main.py index 5fb153a..efbed54 100644 --- a/src/dotenvx/main.py +++ b/src/dotenvx/main.py @@ -21,7 +21,7 @@ def load_dotenvx( parsed = json.loads(output) for key, value in parsed.items(): os.environ[key] = value - return True + return parsed except Exception as e: raise RuntimeError(f"Failed to parse dotenvx output: {e}")