Skip to content

Add run-command support for dotenv-injected envs - #34

Merged
MikeGarde merged 4 commits into
mainfrom
feat/run-command
Jul 20, 2026
Merged

Add run-command support for dotenv-injected envs#34
MikeGarde merged 4 commits into
mainfrom
feat/run-command

Conversation

@MikeGarde

Copy link
Copy Markdown
Owner
  • Implement run_command handler to execute external commands using EnvObject-provided environment with optional debug output.
  • Treat trailing arguments after -- as the command to run (e.g., dotenv -- npm run start).
  • Do not override existing env vars; apply only missing ones and log skips when debugging.
  • Return correct exit codes: 128+n for terminated-by-signal and 127 on startup failure; propagate the command’s exit status.
  • Enable verbose debugging trace of the command path and environment actions when debug is enabled.
  • Wire in CLI: resolve dotenv file, parse the env file, and invoke run_command; enforce mutual exclusion between a command and keys/set/delete/json.
  • Update tests to cover env injection (including nested resolution), exit status propagation, missing env file, missing binary, and misuse of command with a key.
  • Update README with usage, env merging semantics, compatibility options (--file, DOTENV_FILE), and exit code propagation.
  • Vendor the release binary and adapt packaging: add vendor/dotenv and adjust Taskfile.yaml; fix bin path in package.json.
  • Introduce new modules: add src/handlers/run_command.rs, register in src/handlers/mod.rs, and wire in src/main.rs.

- Implement run_command handler to execute external commands using EnvObject-provided environment with optional debug output.
- Treat trailing arguments after `--` as the command to run (e.g., `dotenv -- npm run start`).
- Do not override existing env vars; apply only missing ones and log skips when debugging.
- Return correct exit codes: 128+n for terminated-by-signal and 127 on startup failure; propagate the command’s exit status.
- Enable verbose debugging trace of the command path and environment actions when debug is enabled.
- Wire in CLI: resolve dotenv file, parse the env file, and invoke run_command; enforce mutual exclusion between a command and keys/set/delete/json.
- Update tests to cover env injection (including nested resolution), exit status propagation, missing env file, missing binary, and misuse of command with a key.
- Update README with usage, env merging semantics, compatibility options (--file, DOTENV_FILE), and exit code propagation.
- Vendor the release binary and adapt packaging: add vendor/dotenv and adjust Taskfile.yaml; fix bin path in package.json.
- Introduce new modules: add `src/handlers/run_command.rs`, register in `src/handlers/mod.rs`, and wire in `src/main.rs`.
@codecov

codecov Bot commented Jul 20, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Files with missing lines Coverage Δ
src/handlers/get_value.rs 86.66% <100.00%> (ø)
src/handlers/run_command.rs 100.00% <100.00%> (ø)
src/main.rs 97.61% <100.00%> (+24.64%) ⬆️

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

- Change get_value.rs to use the explicit return_all_keys flag to determine if all env keys should be returned, instead of inferring from target_keys being empty.
- In tests/debug.rs, add integration tests to verify dotenv CLI debug output includes keys, file paths, and option assembly; ensure debug surfaces wildcard handling and JSON-defaulting behavior; validate file insights during validation and the exact pre-run command; confirm messages about skipping a variable already set in the environment.
- In tests/wildcard.rs, add a comprehensive wildcard test suite covering prefix, suffix, and middle wildcards with JSON-key outputs; ensure nested variable resolution, empty JSON object when no matches, and that --no-json disables expansion; verify failures for missing literals; deterministic environment via tests/.env.test.
Use explicit return_all_keys flag; expand tests
@MikeGarde
MikeGarde merged commit 6e9b62b into main Jul 20, 2026
6 checks passed
@MikeGarde
MikeGarde deleted the feat/run-command branch July 20, 2026 03:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant