Class: VivlioStarter::CLI::PdfCommands::PdfCommandRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/vivlio_starter/cli/pdf.rb

Overview

npx vivliostyle build をラップして PDF を生成する。 常に workspace の生成 config(用途別 entries を同梱・P4 §3.2)を -c で渡す。 かつての「ルート entries.js + ルート config」の手動フロー経路は 実体消滅につき撤去した(vivlioverso-manual-flow-removal-spec.md)。

Direct Known Subclasses

PrintPdfCommandRunner

Instance Method Summary collapse

Constructor Details

#initialize(options, config_path:, output_path:) ⇒ PdfCommandRunner

Returns a new instance of PdfCommandRunner.

Parameters:

  • config_path (String)

    生成 config のパス(-c で渡す)

  • output_path (String)

    config の output と同じパス(成否確認用)



93
94
95
96
97
98
# File 'lib/vivlio_starter/cli/pdf.rb', line 93

def initialize(options, config_path:, output_path:)
  @options = options || {}
  @config_path = config_path
  @output_path = output_path
  @build_success = false
end

Instance Method Details

#build_succeeded?Boolean

vivliostyle build が成功し、期待する出力ファイルまで生成できたかを返す。 入稿用本文のような最重量レンダリングは Chrome の一過性失敗で空振りする ことがあり、その際 system は非ゼロを返すか出力が生成されない。呼び出し側 (パイプライン)がリトライ・中断を判断できるよう、真の成否を返す。

Returns:

  • (Boolean)


112
113
114
# File 'lib/vivlio_starter/cli/pdf.rb', line 112

def build_succeeded?
  @build_success && File.exist?(output_path)
end

#callObject



100
101
102
103
104
105
106
# File 'lib/vivlio_starter/cli/pdf.rb', line 100

def call
  apply_verbose
  Common.log_action('PDFを生成しています…')
  execute_build
  handle_build_result
  build_succeeded?
end