Class: Vivlio::Starter::CLI::Build::PageMappingExtractor

Inherits:
Object
  • Object
show all
Defined in:
lib/vivlio/starter/cli/build/page_mapping_extractor.rb

Overview

Vivliostyle preview + Playwright でページマッピングを抽出する

Defined Under Namespace

Classes: BacklinkEntry, IndexMappingEntry, MappingEntry, PageMapping

Constant Summary collapse

DEFAULT_PORT =

デフォルト設定

13_100
DEFAULT_HOST =
'localhost'
DEFAULT_TIMEOUT_MS =

416ページ規模のビルドに対応するため5分に延長

300_000
SERVER_STARTUP_TIMEOUT =

30
MAPPING_SCRIPT =
File.expand_path('extract_page_mapping.mjs', __dir__)

Instance Method Summary collapse

Constructor Details

#initialize(port: DEFAULT_PORT, timeout_ms: DEFAULT_TIMEOUT_MS) ⇒ PageMappingExtractor

Returns a new instance of PageMappingExtractor.



53
54
55
56
57
58
59
60
# File 'lib/vivlio/starter/cli/build/page_mapping_extractor.rb', line 53

def initialize(port: DEFAULT_PORT, timeout_ms: DEFAULT_TIMEOUT_MS)
  @port = port
  @timeout_ms = timeout_ms
  @preview_pid = nil
  @preview_url = nil
  @log_file = nil
  @externally_managed = false
end

Instance Method Details

#extract!PageMapping

ページマッピングを抽出するメインメソッド

Returns:



64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/vivlio/starter/cli/build/page_mapping_extractor.rb', line 64

def extract!
  validate_dependencies!

  Common.log_action('[backlink-dedup] vivliostyle preview をヘッドレスで起動します…')
  start_preview_server!

  Common.log_action('[backlink-dedup] Playwright でページマッピングを抽出します…')
  raw_json = run_extraction_script!

  Common.log_success("[backlink-dedup] ページマッピングを取得しました(#{raw_json[:mappings].size} 件)")
  parse_result(raw_json)
ensure
  stop_preview_server!
end