Description
While testing the CLI wrapper (bin/cli), I noticed that it doesn’t properly return the exit status of the commands it runs.
Right now, the wrapper only listens for the error event on the spawned process, which means it only catches cases where the process fails to start (like when a command isn’t found). However, it doesn’t handle exit or close events.
Because of this, if a subcommand runs but fails (returns a non-zero exit code), the main CLI still exits with 0, indicating success.
This can be misleading and may cause issues in scripts, CI/CD pipelines, or any automation that relies on correct exit codes to detect failures.
Error Details
node .\bin\cli capitalize; Write-Output "WRAPPED_EXIT:$LASTEXITCODE"
→ WRAPPED_EXIT:0
node .\node_modules\@stdlib\string\capitalize\bin\cli; Write-Output "DIRECT_EXIT:$LASTEXITCODE"
→ DIRECT_EXIT:1
Related Issues
None that I could find.
Questions
No.
Demo
No response
Reproduction
- Run a wrapped stdlib CLI subcommand with invalid input that should cause it to fail.
- Check the shell's exit code (echo $? on Linux/Mac or $LASTEXITCODE on Windows).
- Observe the discrepancy between the wrapped command and the direct module command.
Expected Results
The parent CLI process should catch the child's exit status and exit with the same non-zero code.
Actual Results
The parent CLI process exits with code 0.
Version
develop
Environments
Node.js
Browser Version
N/A
Node.js / npm Version
v22.17.1
Platform
Windows
Checklist
Description
While testing the CLI wrapper (bin/cli), I noticed that it doesn’t properly return the exit status of the commands it runs.
Right now, the wrapper only listens for the error event on the spawned process, which means it only catches cases where the process fails to start (like when a command isn’t found). However, it doesn’t handle exit or close events.
Because of this, if a subcommand runs but fails (returns a non-zero exit code), the main CLI still exits with 0, indicating success.
This can be misleading and may cause issues in scripts, CI/CD pipelines, or any automation that relies on correct exit codes to detect failures.
Error Details
Related Issues
None that I could find.
Questions
No.
Demo
No response
Reproduction
Expected Results
The parent CLI process should catch the child's exit status and exit with the same non-zero code.Actual Results
Version
develop
Environments
Node.js
Browser Version
N/A
Node.js / npm Version
v22.17.1
Platform
Windows
Checklist