@smallfishworld/open-code-review-svn 1.11.2-svn.1 → 1.11.2-svn.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja-JP.md +6 -6
- package/README.ko-KR.md +6 -6
- package/README.md +6 -6
- package/README.ru-RU.md +6 -6
- package/README.zh-CN.md +6 -6
- package/bin/ocr.js +60 -4
- package/package.json +8 -8
package/README.ja-JP.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
</a>
|
|
15
15
|
</p>
|
|
16
16
|
<p align="center">
|
|
17
|
-
<a href="https://www.npmjs.com/package/@
|
|
17
|
+
<a href="https://www.npmjs.com/package/@alibaba-group/open-code-review"><img alt="npm" src="https://img.shields.io/npm/v/@alibaba-group/open-code-review?style=flat-square" /></a>
|
|
18
18
|
<a href="https://github.com/alibaba/open-code-review/actions/workflows/release.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/alibaba/open-code-review/release.yml?style=flat-square" /></a>
|
|
19
19
|
<a href="https://github.com/alibaba/open-code-review/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/alibaba/open-code-review?style=flat-square" /></a>
|
|
20
20
|
<a href="https://deepwiki.com/alibaba/open-code-review"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg" /></a>
|
|
@@ -106,7 +106,7 @@ Open Code Reviewのコア哲学は、決定論的エンジニアリングとエ
|
|
|
106
106
|
#### インストール
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
|
-
npm install -g @
|
|
109
|
+
npm install -g @alibaba-group/open-code-review
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
インストール後、`ocr`コマンドがグローバルに利用可能になります。
|
|
@@ -138,7 +138,7 @@ cd your-project
|
|
|
138
138
|
# ワークスペースモード — ステージ済み・未ステージ・未追跡のすべての変更をレビュー
|
|
139
139
|
ocr review
|
|
140
140
|
|
|
141
|
-
# SVN ワークスペースモード —
|
|
141
|
+
# SVN ワークスペースモード — 変更、追加、削除ファイルをレビュー
|
|
142
142
|
# 範囲モードと単一コミットモードは現在 Git 専用です。
|
|
143
143
|
ocr review --repo /path/to/svn-working-copy
|
|
144
144
|
|
|
@@ -173,7 +173,7 @@ ocr delegate rule src/main.go src/handler.go
|
|
|
173
173
|
SVN ワークスペースモードでサポートされる内容:
|
|
174
174
|
|
|
175
175
|
- `svn status` が報告する変更済み、追加予定、削除予定のファイル。
|
|
176
|
-
-
|
|
176
|
+
- `svn diff` が報告するバージョン管理対象の変更。新しいファイルをレビューするには、先に `svn add <path>` を実行してください。未管理(`?`)のファイルは意図的に除外されます。
|
|
177
177
|
- テキストおよびバイナリの変更、空白を含むファイル名、Git ワークスペースレビューと同じルールおよび出力形式。
|
|
178
178
|
|
|
179
179
|
コミット前に現在の SVN ワーキングコピーをレビューします:
|
|
@@ -214,7 +214,7 @@ ocr review --repo /path/to/svn-working-copy --format json --output svn-review.js
|
|
|
214
214
|
- [デフォルト(OCR が管理)](https://open-codereview.ai/docs/configuration) — OCR が設定済みの LLM を使用してレビューを実行
|
|
215
215
|
- [デリゲートモード](https://open-codereview.ai/docs/delegate) — コーディングエージェントが自身の LLM を使用してレビューを実行。OCR の API キーは不要
|
|
216
216
|
- [CI/CD 連携](https://open-codereview.ai/docs/cicd) — GitHub Actions、GitLab CI、GitFlic CI、Gerrit との統合
|
|
217
|
-
- [セッションビューアー](https://open-codereview.ai/docs/viewer) —
|
|
217
|
+
- [セッションビューアー](https://open-codereview.ai/docs/viewer) — ブラウザでレビューセッションを閲覧・再生、コメントを修正済み/無視としてマークして非表示にできます
|
|
218
218
|
- [テレメトリー](https://open-codereview.ai/docs/telemetry) — 可観測性のためのOpenTelemetry統合
|
|
219
219
|
- [FAQ](https://open-codereview.ai/docs/faq) — よくある質問とトラブルシューティング
|
|
220
220
|
|
|
@@ -228,4 +228,4 @@ ocr review --repo /path/to/svn-working-copy --format json --output svn-review.js
|
|
|
228
228
|
|
|
229
229
|
## ライセンス
|
|
230
230
|
|
|
231
|
-
[Apache-2.0](LICENSE) — Copyright 2026 Alibaba
|
|
231
|
+
[Apache-2.0](LICENSE) — Copyright 2026 Alibaba
|
package/README.ko-KR.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
</a>
|
|
15
15
|
</p>
|
|
16
16
|
<p align="center">
|
|
17
|
-
<a href="https://www.npmjs.com/package/@
|
|
17
|
+
<a href="https://www.npmjs.com/package/@alibaba-group/open-code-review"><img alt="npm" src="https://img.shields.io/npm/v/@alibaba-group/open-code-review?style=flat-square" /></a>
|
|
18
18
|
<a href="https://github.com/alibaba/open-code-review/actions/workflows/release.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/alibaba/open-code-review/release.yml?style=flat-square" /></a>
|
|
19
19
|
<a href="https://github.com/alibaba/open-code-review/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/alibaba/open-code-review?style=flat-square" /></a>
|
|
20
20
|
<a href="https://deepwiki.com/alibaba/open-code-review"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg" /></a>
|
|
@@ -106,7 +106,7 @@ agent의 강점은 동적 판단과 동적 context 검색이 중요한 지점에
|
|
|
106
106
|
#### 설치
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
|
-
npm install -g @
|
|
109
|
+
npm install -g @alibaba-group/open-code-review
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
설치 후 `ocr` 명령을 전역에서 사용할 수 있습니다.
|
|
@@ -138,7 +138,7 @@ cd your-project
|
|
|
138
138
|
# Workspace mode: staged, unstaged, untracked 변경을 모두 리뷰
|
|
139
139
|
ocr review
|
|
140
140
|
|
|
141
|
-
# SVN workspace mode: 수정,
|
|
141
|
+
# SVN workspace mode: 수정, 추가 및 삭제 파일 리뷰
|
|
142
142
|
# Range와 단일 commit mode는 현재 Git에서만 지원합니다.
|
|
143
143
|
ocr review --repo /path/to/svn-working-copy
|
|
144
144
|
|
|
@@ -173,7 +173,7 @@ ocr delegate rule src/main.go src/handler.go
|
|
|
173
173
|
SVN 작업 공간 모드에서 지원되는 항목:
|
|
174
174
|
|
|
175
175
|
- `svn status`가 보고하는 수정됨, 추가 예정 및 삭제 예정 파일.
|
|
176
|
-
- 버전
|
|
176
|
+
- `svn diff`가 보고하는 버전 관리 변경 사항. 새 파일은 리뷰 전에 `svn add <path>`를 실행해야 하며, 버전 관리되지 않는(`?`) 파일은 의도적으로 제외됩니다.
|
|
177
177
|
- 텍스트 및 바이너리 변경, 공백이 포함된 파일 이름, Git 작업 공간 리뷰와 동일한 리뷰 규칙 및 출력 형식.
|
|
178
178
|
|
|
179
179
|
커밋하기 전에 현재 SVN 작업 사본을 리뷰합니다:
|
|
@@ -214,7 +214,7 @@ ocr review --repo /path/to/svn-working-copy --format json --output svn-review.js
|
|
|
214
214
|
- [기본 모드(OCR 관리)](https://open-codereview.ai/docs/configuration) — OCR이 설정된 LLM을 사용해 리뷰 수행
|
|
215
215
|
- [위임 모드](https://open-codereview.ai/docs/delegate) — 코딩 에이전트가 자체 LLM을 사용해 리뷰 수행; OCR API 키 불필요
|
|
216
216
|
- [CI/CD 연동](https://open-codereview.ai/docs/cicd) — GitHub Actions, GitLab CI, GitFlic CI, Gerrit 통합
|
|
217
|
-
- [세션 뷰어](https://open-codereview.ai/docs/viewer) — 브라우저에서 리뷰 세션 탐색 및
|
|
217
|
+
- [세션 뷰어](https://open-codereview.ai/docs/viewer) — 브라우저에서 리뷰 세션 탐색 및 재생, 코멘트를 수정됨/무시됨으로 표시하고 숨길 수 있습니다
|
|
218
218
|
- [텔레메트리](https://open-codereview.ai/docs/telemetry) — 관측성을 위한 OpenTelemetry 통합
|
|
219
219
|
- [FAQ](https://open-codereview.ai/docs/faq) — 자주 묻는 질문과 문제 해결
|
|
220
220
|
|
|
@@ -228,4 +228,4 @@ ocr review --repo /path/to/svn-working-copy --format json --output svn-review.js
|
|
|
228
228
|
|
|
229
229
|
## License
|
|
230
230
|
|
|
231
|
-
[Apache-2.0](LICENSE) Copyright 2026 Alibaba
|
|
231
|
+
[Apache-2.0](LICENSE) Copyright 2026 Alibaba
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
</a>
|
|
15
15
|
</p>
|
|
16
16
|
<p align="center">
|
|
17
|
-
<a href="https://www.npmjs.com/package/@
|
|
17
|
+
<a href="https://www.npmjs.com/package/@alibaba-group/open-code-review"><img alt="npm" src="https://img.shields.io/npm/v/@alibaba-group/open-code-review?style=flat-square" /></a>
|
|
18
18
|
<a href="https://github.com/alibaba/open-code-review/actions/workflows/release.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/alibaba/open-code-review/release.yml?style=flat-square" /></a>
|
|
19
19
|
<a href="https://github.com/alibaba/open-code-review/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/alibaba/open-code-review?style=flat-square" /></a>
|
|
20
20
|
<a href="https://deepwiki.com/alibaba/open-code-review"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg" /></a>
|
|
@@ -106,7 +106,7 @@ The agent's strengths are concentrated where they matter most — dynamic decisi
|
|
|
106
106
|
#### Install
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
|
-
npm install -g @
|
|
109
|
+
npm install -g @alibaba-group/open-code-review
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
After installation, the `ocr` command is available globally.
|
|
@@ -138,7 +138,7 @@ cd your-project
|
|
|
138
138
|
# Workspace mode — review all staged, unstaged, and untracked changes
|
|
139
139
|
ocr review
|
|
140
140
|
|
|
141
|
-
# SVN workspace mode — review modified, added,
|
|
141
|
+
# SVN workspace mode — review modified, added, and deleted files
|
|
142
142
|
# Range and commit modes are currently Git-only.
|
|
143
143
|
ocr review --repo /path/to/svn-working-copy
|
|
144
144
|
|
|
@@ -173,7 +173,7 @@ This fork supports pre-commit review of uncommitted changes in an SVN (Apache Su
|
|
|
173
173
|
Supported in SVN workspace mode:
|
|
174
174
|
|
|
175
175
|
- Modified, scheduled-for-add, and scheduled-for-delete files reported by `svn status`.
|
|
176
|
-
-
|
|
176
|
+
- Versioned changes reported by `svn diff`. Run `svn add <path>` before review when a new file should be included; unversioned (`?`) files are intentionally skipped.
|
|
177
177
|
- Text and binary changes, file names containing spaces, and the same review rules and output formats used by Git workspace reviews.
|
|
178
178
|
|
|
179
179
|
Review the current SVN working copy before committing:
|
|
@@ -214,7 +214,7 @@ Full documentation lives at **[open-codereview.ai/docs](https://open-codereview.
|
|
|
214
214
|
- [Default (OCR-managed)](https://open-codereview.ai/docs/configuration) — OCR runs the review using its configured LLM
|
|
215
215
|
- [Delegation Mode](https://open-codereview.ai/docs/delegate) — your coding agent runs the review using its own LLM; no OCR API key required
|
|
216
216
|
- [CI/CD Integration](https://open-codereview.ai/docs/cicd) — GitHub Actions, GitLab CI, GitFlic CI, and Gerrit integration
|
|
217
|
-
- [Session Viewer](https://open-codereview.ai/docs/viewer) — browse and replay review sessions in browser
|
|
217
|
+
- [Session Viewer](https://open-codereview.ai/docs/viewer) — browse and replay review sessions in browser, mark comments as fixed or ignored and hide them while you work through the findings
|
|
218
218
|
- [Telemetry](https://open-codereview.ai/docs/telemetry) — OpenTelemetry integration for observability
|
|
219
219
|
- [FAQ](https://open-codereview.ai/docs/faq) — common questions and troubleshooting
|
|
220
220
|
|
|
@@ -228,4 +228,4 @@ This project exists thanks to all the people who contribute. See [CONTRIBUTING.m
|
|
|
228
228
|
|
|
229
229
|
## License
|
|
230
230
|
|
|
231
|
-
[Apache-2.0](LICENSE) — Copyright 2026 Alibaba
|
|
231
|
+
[Apache-2.0](LICENSE) — Copyright 2026 Alibaba
|
package/README.ru-RU.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
</a>
|
|
15
15
|
</p>
|
|
16
16
|
<p align="center">
|
|
17
|
-
<a href="https://www.npmjs.com/package/@
|
|
17
|
+
<a href="https://www.npmjs.com/package/@alibaba-group/open-code-review"><img alt="npm" src="https://img.shields.io/npm/v/@alibaba-group/open-code-review?style=flat-square" /></a>
|
|
18
18
|
<a href="https://github.com/alibaba/open-code-review/actions/workflows/release.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/alibaba/open-code-review/release.yml?style=flat-square" /></a>
|
|
19
19
|
<a href="https://github.com/alibaba/open-code-review/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/alibaba/open-code-review?style=flat-square" /></a>
|
|
20
20
|
<a href="https://deepwiki.com/alibaba/open-code-review"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg" /></a>
|
|
@@ -106,7 +106,7 @@ Open Code Review — это CLI-инструмент для код-ревью н
|
|
|
106
106
|
#### Установка
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
|
-
npm install -g @
|
|
109
|
+
npm install -g @alibaba-group/open-code-review
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
После установки команда `ocr` доступна глобально.
|
|
@@ -138,7 +138,7 @@ cd your-project
|
|
|
138
138
|
# Режим рабочей копии — ревью всех staged, unstaged и untracked изменений
|
|
139
139
|
ocr review
|
|
140
140
|
|
|
141
|
-
# Режим рабочей копии SVN — ревью изменённых,
|
|
141
|
+
# Режим рабочей копии SVN — ревью изменённых, добавленных и удалённых файлов
|
|
142
142
|
# Режимы диапазона и отдельного коммита пока доступны только для Git.
|
|
143
143
|
ocr review --repo /path/to/svn-working-copy
|
|
144
144
|
|
|
@@ -173,7 +173,7 @@ ocr delegate rule src/main.go src/handler.go
|
|
|
173
173
|
В режиме рабочей копии SVN поддерживаются:
|
|
174
174
|
|
|
175
175
|
- Изменённые, запланированные к добавлению и запланированные к удалению файлы из `svn status`.
|
|
176
|
-
-
|
|
176
|
+
- Версионируемые изменения из `svn diff`. Чтобы новый файл попал в ревью, сначала выполните `svn add <path>`; неотслеживаемые (`?`) файлы намеренно пропускаются.
|
|
177
177
|
- Текстовые и бинарные изменения, имена файлов с пробелами, а также те же правила ревью и форматы вывода, что и для рабочей копии Git.
|
|
178
178
|
|
|
179
179
|
Проверка текущей рабочей копии SVN перед коммитом:
|
|
@@ -214,7 +214,7 @@ ocr review --repo /path/to/svn-working-copy --format json --output svn-review.js
|
|
|
214
214
|
- [По умолчанию (под управлением OCR)](https://open-codereview.ai/docs/configuration) — OCR выполняет ревью с помощью настроенной LLM
|
|
215
215
|
- [Режим делегирования](https://open-codereview.ai/docs/delegate) — кодинг-агент выполняет ревью с помощью собственной LLM; API-ключ для OCR не требуется
|
|
216
216
|
- [Интеграция с CI/CD](https://open-codereview.ai/docs/cicd) — GitHub Actions, GitLab CI, GitFlic CI и Gerrit
|
|
217
|
-
- [Просмотр сессий](https://open-codereview.ai/docs/viewer) — просмотр и воспроизведение сессий ревью в
|
|
217
|
+
- [Просмотр сессий](https://open-codereview.ai/docs/viewer) — просмотр и воспроизведение сессий ревью в браузере, отметка комментариев как исправленных/игнорируемых и их скрытие
|
|
218
218
|
- [Телеметрия](https://open-codereview.ai/docs/telemetry) — интеграция с OpenTelemetry для наблюдаемости
|
|
219
219
|
- [FAQ](https://open-codereview.ai/docs/faq) — частые вопросы и устранение неполадок
|
|
220
220
|
|
|
@@ -228,4 +228,4 @@ ocr review --repo /path/to/svn-working-copy --format json --output svn-review.js
|
|
|
228
228
|
|
|
229
229
|
## Лицензия
|
|
230
230
|
|
|
231
|
-
[Apache-2.0](LICENSE) — Copyright 2026 Alibaba
|
|
231
|
+
[Apache-2.0](LICENSE) — Copyright 2026 Alibaba
|
package/README.zh-CN.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
</a>
|
|
15
15
|
</p>
|
|
16
16
|
<p align="center">
|
|
17
|
-
<a href="https://www.npmjs.com/package/@
|
|
17
|
+
<a href="https://www.npmjs.com/package/@alibaba-group/open-code-review"><img alt="npm" src="https://img.shields.io/npm/v/@alibaba-group/open-code-review?style=flat-square" /></a>
|
|
18
18
|
<a href="https://github.com/alibaba/open-code-review/actions/workflows/release.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/alibaba/open-code-review/release.yml?style=flat-square" /></a>
|
|
19
19
|
<a href="https://github.com/alibaba/open-code-review/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/alibaba/open-code-review?style=flat-square" /></a>
|
|
20
20
|
<a href="https://deepwiki.com/alibaba/open-code-review"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg" /></a>
|
|
@@ -106,7 +106,7 @@ Open Code Review 的核心设计理念是将确定性工程与 Agent 结合,
|
|
|
106
106
|
#### 安装
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
|
-
npm install -g @
|
|
109
|
+
npm install -g @alibaba-group/open-code-review
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
安装后,`ocr` 命令即可全局使用。
|
|
@@ -138,7 +138,7 @@ cd your-project
|
|
|
138
138
|
# 工作区模式 —— 审查所有暂存、未暂存和未跟踪的变更
|
|
139
139
|
ocr review
|
|
140
140
|
|
|
141
|
-
# SVN 工作区模式 ——
|
|
141
|
+
# SVN 工作区模式 —— 审查修改、新增及删除的文件
|
|
142
142
|
# 区间和单提交模式目前仅支持 Git。
|
|
143
143
|
ocr review --repo /path/to/svn-working-copy
|
|
144
144
|
|
|
@@ -173,7 +173,7 @@ ocr delegate rule src/main.go src/handler.go
|
|
|
173
173
|
SVN 工作区模式当前支持:
|
|
174
174
|
|
|
175
175
|
- `svn status` 报告的已修改、计划新增和计划删除文件。
|
|
176
|
-
-
|
|
176
|
+
- 审查 `svn diff` 报告的版本化变更。新文件需要先执行 `svn add <路径>` 才会参与审查;未版本控制的(`?`)文件会被有意跳过。
|
|
177
177
|
- 文本及二进制变更、包含空格的文件名,以及 Git 工作区审查所使用的相同规则与输出格式。
|
|
178
178
|
|
|
179
179
|
提交前审查当前 SVN 工作副本:
|
|
@@ -214,7 +214,7 @@ SVN 当前仅支持工作区审查。`--from`、`--to`、`--commit` 和会话恢
|
|
|
214
214
|
- [默认模式(OCR 驱动)](https://open-codereview.ai/docs/configuration) —— OCR 使用其已配置的 LLM 执行评审
|
|
215
215
|
- [委托模式](https://open-codereview.ai/docs/delegate) —— 编程 Agent 使用自身的 LLM 执行评审;无需 OCR API Key
|
|
216
216
|
- [CI/CD 集成](https://open-codereview.ai/docs/cicd) —— 支持 GitHub Actions、GitLab CI、GitFlic CI、Gerrit 集成
|
|
217
|
-
- [会话查看器](https://open-codereview.ai/docs/viewer) ——
|
|
217
|
+
- [会话查看器](https://open-codereview.ai/docs/viewer) —— 在浏览器中浏览和回放评审会话,可将评审意见标记为已修复/已忽略并在处理时隐藏
|
|
218
218
|
- [遥测](https://open-codereview.ai/docs/telemetry) —— OpenTelemetry 集成,用于可观测性
|
|
219
219
|
- [FAQ](https://open-codereview.ai/docs/faq) —— 常见问题与故障排查
|
|
220
220
|
|
|
@@ -228,4 +228,4 @@ SVN 当前仅支持工作区审查。`--from`、`--to`、`--commit` 和会话恢
|
|
|
228
228
|
|
|
229
229
|
## 许可证
|
|
230
230
|
|
|
231
|
-
[Apache-2.0](LICENSE) — Copyright 2026 Alibaba
|
|
231
|
+
[Apache-2.0](LICENSE) — Copyright 2026 Alibaba
|
package/bin/ocr.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const {
|
|
8
|
+
const { spawn } = require("child_process");
|
|
9
9
|
const path = require("path");
|
|
10
10
|
const fs = require("fs");
|
|
11
11
|
const os = require("os");
|
|
@@ -25,7 +25,39 @@ function launcherExitCode(result) {
|
|
|
25
25
|
return result.status ?? (result.error ? 1 : 0);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
// Returns a signal handler that forwards the signal to a child process.
|
|
29
|
+
function forwardSignal(child, signal) {
|
|
30
|
+
return () => {
|
|
31
|
+
child.kill(signal);
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function installSignalHandlers(child, platform, signalTarget) {
|
|
36
|
+
const handlers = [];
|
|
37
|
+
function add(signal, handler) {
|
|
38
|
+
handlers.push([signal, handler]);
|
|
39
|
+
signalTarget.on(signal, handler);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Windows sends console Ctrl+C to both attached processes. Keep the wrapper
|
|
43
|
+
// alive so it can wait for the binary, but do not call child.kill("SIGINT"):
|
|
44
|
+
// Node maps that operation to an abrupt TerminateProcess call on Windows.
|
|
45
|
+
if (platform === "win32") {
|
|
46
|
+
add("SIGINT", () => {});
|
|
47
|
+
} else {
|
|
48
|
+
for (const signal of ["SIGINT", "SIGTERM"]) {
|
|
49
|
+
add(signal, forwardSignal(child, signal));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return () => {
|
|
54
|
+
for (const [signal, handler] of handlers) {
|
|
55
|
+
signalTarget.removeListener(signal, handler);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
module.exports = { launcherExitCode, forwardSignal, installSignalHandlers };
|
|
29
61
|
|
|
30
62
|
if (require.main !== module) {
|
|
31
63
|
// Required as a module (tests); the launcher body below must not run.
|
|
@@ -77,9 +109,33 @@ if (!process.env.OCR_NO_UPDATE) {
|
|
|
77
109
|
}
|
|
78
110
|
}
|
|
79
111
|
|
|
80
|
-
const
|
|
112
|
+
const child = spawn(binaryPath, process.argv.slice(2), {
|
|
81
113
|
stdio: "inherit",
|
|
82
114
|
env: process.env,
|
|
83
115
|
});
|
|
84
116
|
|
|
85
|
-
|
|
117
|
+
const removeSignalHandlers = installSignalHandlers(
|
|
118
|
+
child,
|
|
119
|
+
process.platform,
|
|
120
|
+
process
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
let settled = false;
|
|
124
|
+
function settle(result) {
|
|
125
|
+
if (settled) return;
|
|
126
|
+
settled = true;
|
|
127
|
+
removeSignalHandlers();
|
|
128
|
+
process.exitCode = launcherExitCode(result);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Spawn failures surface through "error", not "close" alone. Setting
|
|
132
|
+
// exitCode lets a piped diagnostic drain before the wrapper terminates.
|
|
133
|
+
child.on("error", (err) => {
|
|
134
|
+
console.error(`[ERROR] Failed to start ${binaryPath}: ${err.message}`);
|
|
135
|
+
settle({ error: err });
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
// Wait for child to exit and propagate its exit status
|
|
139
|
+
child.on("close", (code, signal) => {
|
|
140
|
+
settle({ status: code, signal: signal });
|
|
141
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smallfishworld/open-code-review-svn",
|
|
3
|
-
"version": "1.11.2-svn.
|
|
3
|
+
"version": "1.11.2-svn.3",
|
|
4
4
|
"description": "OpenCodeReview CLI fork with SVN workspace review support",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ocr": "bin/ocr.js"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
],
|
|
16
16
|
"scripts": {
|
|
17
17
|
"postinstall": "node scripts/install.js",
|
|
18
|
-
"test:github-actions": "node scripts/github-actions/post-review-comments.test.js && node scripts/github-actions/check-translation-sync.test.js && node scripts/github-actions/action-contract.test.js",
|
|
18
|
+
"test:github-actions": "node scripts/github-actions/post-review-comments.test.js && node scripts/github-actions/check-translation-sync.test.js && node scripts/github-actions/action-contract.test.js && node scripts/github-actions/check-plugin-contract.test.js",
|
|
19
19
|
"test:update": "node scripts/version.test.js",
|
|
20
20
|
"test:launcher": "node bin/ocr.test.js"
|
|
21
21
|
},
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
"checksumPattern": "https://github.com/smallfishworld/open-code-review-svn/releases/download/v{version}/sha256sum.txt"
|
|
32
32
|
},
|
|
33
33
|
"optionalDependencies": {
|
|
34
|
-
"@smallfishworld/ocr-darwin-arm64": "1.11.2-svn.
|
|
35
|
-
"@smallfishworld/ocr-darwin-x64": "1.11.2-svn.
|
|
36
|
-
"@smallfishworld/ocr-linux-arm64": "1.11.2-svn.
|
|
37
|
-
"@smallfishworld/ocr-linux-x64": "1.11.2-svn.
|
|
38
|
-
"@smallfishworld/ocr-win32-arm64": "1.11.2-svn.
|
|
39
|
-
"@smallfishworld/ocr-win32-x64": "1.11.2-svn.
|
|
34
|
+
"@smallfishworld/ocr-darwin-arm64": "1.11.2-svn.3",
|
|
35
|
+
"@smallfishworld/ocr-darwin-x64": "1.11.2-svn.3",
|
|
36
|
+
"@smallfishworld/ocr-linux-arm64": "1.11.2-svn.3",
|
|
37
|
+
"@smallfishworld/ocr-linux-x64": "1.11.2-svn.3",
|
|
38
|
+
"@smallfishworld/ocr-win32-arm64": "1.11.2-svn.3",
|
|
39
|
+
"@smallfishworld/ocr-win32-x64": "1.11.2-svn.3"
|
|
40
40
|
},
|
|
41
41
|
"engines": {
|
|
42
42
|
"node": ">=14"
|