Class: Nanoc::CLI::Commands::Compile::DiffGenerator
- Inherits:
-
Listener
- Object
- Listener
- Nanoc::CLI::Commands::Compile::DiffGenerator
show all
- Defined in:
- lib/nanoc/cli/commands/compile.rb
Overview
Generates diffs for every output file written
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Listener
#initialize
Class Method Details
.enable_for?(command_runner) ⇒ Boolean
70
71
72
|
# File 'lib/nanoc/cli/commands/compile.rb', line 70
def self.enable_for?(command_runner)
command_runner.site.config[:enable_output_diff]
end
|
Instance Method Details
#start ⇒ Object
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# File 'lib/nanoc/cli/commands/compile.rb', line 75
def start
require 'tempfile'
setup_diffs
old_contents = {}
Nanoc::Int::NotificationCenter.on(:will_write_rep, self) do |rep, path|
old_contents[rep] = File.file?(path) ? File.read(path) : nil
end
Nanoc::Int::NotificationCenter.on(:rep_written, self) do |rep, path, _is_created, _is_modified|
unless rep.binary?
new_contents = File.file?(path) ? File.read(path) : nil
if old_contents[rep] && new_contents
generate_diff_for(path, old_contents[rep], new_contents)
end
old_contents.delete(rep)
end
end
end
|
#stop ⇒ Object
94
95
96
97
98
99
100
101
|
# File 'lib/nanoc/cli/commands/compile.rb', line 94
def stop
super
Nanoc::Int::NotificationCenter.remove(:will_write_rep, self)
Nanoc::Int::NotificationCenter.remove(:rep_written, self)
teardown_diffs
end
|