Skip to content

feat(cli): inventory URL list, warn-and-skip invalid lines instead of hard-error #99

Description

@YusukeHirao

現状

`crawl --inventory <urls.txt>` で、URL リストに 1 件でも無効な行があると CLI が即 hard error で落ちる。

Error: Invalid URL: \"<invalid-line-content>\". Please provide a valid URL (e.g., https://example.com)
    at validateUrls (packages/@nitpicker/cli/src/commands/crawl.ts:459)
    at inventoryCrawl (packages/@nitpicker/cli/src/commands/crawl.ts:360)

行番号も列も表示されず、リスト中の何行目を直せばいいのか分からない。サーバの doc-root を `ls` して取った 1000 行クラスの URL リストで 1 行でもタブ区切りやスプレッドシートのヘッダが混入すると、全件 abort される。

期待挙動

inventory モードは「離れ小島の発見」が目的なので、不正行 1 件で全件捨てるのは合わない。

  1. 無効な行は 警告メッセージで除外、続行
  2. 警告メッセージに 不正な文字列 + ファイルパス + line:col を含める
[nitpicker] inventory list: skipping invalid URL at urls.txt:3:1 — \"<offending-line>\"
[nitpicker] inventory list: 12 of 1234 lines skipped as invalid; continuing with 1222 URLs

範囲

  • `crawl --inventory` 経路のみ (それ以外の `validateUrls` 呼び出し箇所 — 位置引数 / `--list` / `--list-file` の起点 URL — は hard error のまま、最初に直すべき入力なので)
  • `readList` ヘルパが現状 `string[]` を返すだけなので、行番号を保持する形にリファクタする必要がある (列は基本 1 で OK)

関連箇所

  • `packages/@nitpicker/cli/src/commands/crawl.ts:354` `inventoryCrawl`
  • `packages/@nitpicker/cli/src/commands/crawl.ts:453` `validateUrls`
  • `@d-zero/readtext/list` (要 line メタ拡張、または CLI 側で re-parse)

補足

`inventory_runs` 監査ログ (Phase 1) には `scope_skipped` 列があるので、`invalid_skipped` 列を追加 すれば「いつ・どの run で何行落としたか」も archive 内に記録できる (オプション、Phase 2 候補)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions