Build system CLI: behavior that disagrees with the help text

オープン
#9,242 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@cknitt がすでに取り組んでいます。

2026年11月6日 から。

  • #9248 @cknitt による — オープン

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
43/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
ocaml
領域
cli

調査の方向性

Start with the listed entry points in rewatch-ocaml/: build.ml, build_report.ml, rescript_ocaml.ml, after_build.ml, project_context.ml, cli.ml, and compiler_args_command.ml. Reproduce each behavior with ReScript 13.0.0-alpha.8 and trace its command handling and diagnostics. Done means the reported mismatches are corrected consistently; the issue does not name tests to run.

索引モデルが issue の本文から書いたものです。

説明

CLI behavior that disagrees with the help text or with common conventions. All reproduce with rescript 13.0.0-alpha.8 (found while reviewing #9238); paths are in rewatch-ocaml/.

  • --no-timing prints zero timings instead of none. In a terminal, rescript build -n prints Parsed 1 source files in 0.00s … Finished compilation in 0.00s. The times are zeroed (build.ml:305, build_report.ml:79, :108) instead of left out.
  • watch exits 0 when interrupted. rescript watch, then SIGINT or SIGTERM: prints Exiting..., exit 0. rescript watch --help says 129-143 when interrupted by a signal. rescript_ocaml.ml:84 maps Watcher.Stop to 0.
  • --after-build does not use a shell. rescript build --after-build 'echo hi; exit 3' prints hi; exit 3 and exits 0; quotes are passed literally ('echo "a b" c' prints "a b" c). after_build.ml:5 splits on whitespace. Either run the command through the shell or document that it is split on whitespace.
  • A missing dependency is a usage error and blocks clean. With "dependencies": ["missing-dep"] and nothing installed, both rescript build and rescript clean print Could not build package tree reading dependency 'missing-dep' at path '<project root>'. Error: Could not resolve dependency missing-dep and exit 2, the code for command-line usage errors. clean deletes nothing. The "at path" is the requesting project, not the dependency. (project_context.ml:169-173, rescript_ocaml.ml:73-76)
  • An unknown subcommand is reported as a lockfile problem. rescript bogus prints Could not start Rescript build: Could not write lockfile because the specified project folder does not exist: bogus, exit 1. A bare word is taken as the build folder (normalize_argv in cli.ml); the message should say that neither a command nor a folder of that name exists.
  • Invalid --features and --warn-error values are accepted silently. rescript build --features nope and rescript build --warn-error zzz exit 0 without a diagnostic; zzz is ignored (cli.ml:63-80 and the --warn-error option).
  • Some usage errors lack the Usage: line. rescript -v -q (rescript: --verbose cannot be used together with --quiet) and rescript format -c -s .res (rescript: --stdin conflicts with --check) exit 2 without it, unlike rescript build --unknown-option; they use Term.term_result without ~usage:true (cli.ml:42-47, :192-196). rescript compiler-args rescript.json prints compiler-args expects a .res or .resi source file without the rescript: prefix and exits 1 (compiler_args_command.ml:50).
  • -h and -V are undocumented. Both work, but rescript --help lists only --help[=FMT] and --version: cli.ml:286-336 rewrites them before Cmdliner sees them.
主要言語
OCaml
スター
7.5k
フォーク
485
平均マージ
16時間 51分
マージ済み PR(30日)
268

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

rescript-lang/rescript のほかの issue

rescript-lang/rescript の issue をすべて見る

似ている issue

CLI の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。