class Bookwatch::Commands::Bind
Attributes
base_streams[R]
cloner_factory[R]
config_decorator[R]
config_fetcher[R]
directory_preparer[R]
file_system_accessor[R]
final_app_directory[R]
link_checker[R]
middleman_runner[R]
output_locations[R]
preprocessor[R]
section_repository[R]
Public Class Methods
new(base_streams, output_locations: nil, config_fetcher: nil, config_decorator: nil, file_system_accessor: nil, middleman_runner: nil, link_checker: nil, preprocessor: nil, cloner_factory: nil, section_repository: nil, directory_preparer: nil)
click to toggle source
# File lib/bookwatch/commands/bind.rb, line 8 def initialize(base_streams, output_locations: nil, config_fetcher: nil, config_decorator: nil, file_system_accessor: nil, middleman_runner: nil, link_checker: nil, preprocessor: nil, cloner_factory: nil, section_repository: nil, directory_preparer: nil) @base_streams = base_streams @output_locations = output_locations @config_fetcher = config_fetcher @config_decorator = config_decorator @file_system_accessor = file_system_accessor @middleman_runner = middleman_runner @link_checker = link_checker @preprocessor = preprocessor @cloner_factory = cloner_factory @section_repository = section_repository @directory_preparer = directory_preparer end
Public Instance Methods
run(bind_type, verbose = false, dita_flags = nil, require_valid_subnav_links = false)
click to toggle source
# File lib/bookwatch/commands/bind.rb, line 33 def run(bind_type, verbose = false, dita_flags = nil, require_valid_subnav_links = false) bind_options = Components::CommandOptions.new([bind_type], base_streams, verbose) bind_config = config_fetcher.fetch_config cloner = cloner_factory.produce(bind_options.local_repo_dir) require_valid_subnav_links = true unless bind_type == 'local' directory_preparer.prepare_directories( bind_config, File.expand_path('../../../../', __FILE__), output_locations, cloner, ref_override: bind_options.ref_override ) sections = section_repository.fetch( configured_sections: bind_config.sections, destination_dir: output_locations.cloned_preprocessing_dir, ref_override: bind_options.ref_override, cloner: cloner, streams: base_streams ) preprocessor.preprocess( sections, output_locations, options: { dita_flags: dita_flags, require_valid_subnav_links: require_valid_subnav_links }, output_streams: bind_options.streams, config: bind_config ) if file_system_accessor.file_exist?('redirects.rb') file_system_accessor.copy('redirects.rb', output_locations.final_app_dir) end generation_result = middleman_runner.run( 'build --verbose', streams: bind_options.streams, output_locations: output_locations, config: config_decorator.generate(bind_config, sections), local_repo_dir: bind_options.local_repo_dir, subnavs: subnavs(sections), product_info: product_infos(sections) ) if generation_result.success? file_system_accessor.copy(output_locations.build_dir, output_locations.public_dir) link_checker.check!(bind_config.broken_link_exclusions) bind_options.streams[:success].puts "Bookwatch bound your book into #{output_locations.final_app_dir}" link_checker.has_errors? ? 1 : 0 else bind_options.streams[:err].puts "Your bind failed. Rerun with --verbose to troubleshoot." 1 end end