Class: Nanoc::CLI::Commands::Compile::DiffGenerator

Inherits:
Listener
  • Object
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

Constructor Details

This class inherits a constructor from Nanoc::CLI::Commands::Compile::Listener

Class Method Details

+ (Boolean) enable_for?(command_runner)

Returns:

  • (Boolean)

See Also:

  • Listener#enable_for?


69
70
71
# File 'lib/nanoc/cli/commands/compile.rb', line 69

def self.enable_for?(command_runner)
  command_runner.site.config[:enable_output_diff]
end

Instance Method Details

- (Object) start

See Also:



74
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 74

def start
  require 'tempfile'
  setup_diffs
  old_contents = {}
  Nanoc::NotificationCenter.on(:will_write_rep) do |rep, snapshot|
    path = rep.raw_path(:snapshot => snapshot)
    old_contents[rep] = File.file?(path) ? File.read(path) : nil
  end
  Nanoc::NotificationCenter.on(:rep_written) do |rep, path, is_created, is_modified|
    if !rep.binary?
      new_contents = File.file?(path) ? File.read(path) : nil
      if old_contents[rep] && new_contents
        generate_diff_for(rep, old_contents[rep], new_contents)
      end
      old_contents.delete(rep)
    end
  end
end

- (Object) stop

See Also:



94
95
96
97
# File 'lib/nanoc/cli/commands/compile.rb', line 94

def stop
  super
  teardown_diffs
end