Class: VivlioStarter::CLI::Guards::OrphanFileCheck

Inherits:
BaseCheck
  • Object
show all
Defined in:
lib/vivlio_starter/cli/guards/orphan_file_check.rb

Overview

contents/ にあるが config/catalog.yml に未登録の原稿(孤立ファイル)を検出する。

catalog.yml で章をコメントアウトして除外するのは正規のワークフローのため、 警告のみ(preflight 専用)とし、1件ずつではなく1つの警告にまとめて列挙する。

Instance Method Summary collapse

Instance Method Details

#validateObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/vivlio_starter/cli/guards/orphan_file_check.rb', line 11

def validate
  return [] unless File.file?(Build::CatalogLoader::CATALOG_FILE)

  # macOS は濁点付きファイル名を NFD で保持することがあり、catalog の
  # NFC 表記と文字列比較で不一致になる(NF-02 で検出)。両辺を NFC へ
  # 揃えて正規化差だけのファイルを孤立扱いしない
  catalog_basenames = TokenResolver::Resolver.new.resolve.map { it.basename.unicode_normalize(:nfc) }
  orphans = contents_basenames.map { it.unicode_normalize(:nfc) } - catalog_basenames
  return [] if orphans.empty?

  [warning(
    "catalog.yml に未登録の原稿が #{orphans.size} 件あります(ビルド対象外)",
    detail: orphans.map { "- contents/#{it}.md" }
  )]
end