33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/bookbinder/commands/bind.rb', line 33
def run(bind_type, verbose = false, dita_flags = nil, require_valid_subnav_links = false, proof = 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),
proof: proof
)
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 "Bookbinder 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
|