stdlib-js / stdlib-js/stdlib

CLI wrapper swallows subcommand exit codes

Đang mở
#11,293 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
Bug
Ngôn ngữ chính
JavaScript
Star
6k
Fork
1.3k
Merge trung bình
1 ngày 3 giờ
Pull request đã merge (30 ngày)
611

Mô tả

### 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

```bash
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

```shell
- 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

```shell
The parent CLI process should catch the child's exit status and exit with the same non-zero code.
```

### Actual Results

```shell
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

- [x] Read and understood the [Code of Conduct](https://github.com/stdlib-js/stdlib/blob/develop/CODE_OF_CONDUCT.md).
- [x] Searched for existing issues and pull requests.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Start by reading bin/cli and reproduce the wrapped and direct command cases from the issue, checking the parent process exit status on the available shell. Trace how the spawned subcommand currently reports errors and exits. Done means a failing subcommand causes the wrapper to return the same non-zero status while command-not-found behavior remains covered.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
javascript, node.js
Lĩnh vực
cli
Loại issue
Lỗi
Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
55/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.