class Nanoc::CLI::CompileListeners::Aggregate

Public Class Methods

default_listener_classes() click to toggle source
# File lib/nanoc/cli/compile_listeners/aggregate.rb, line 21
def self.default_listener_classes
  [
    Nanoc::CLI::CompileListeners::DiffGenerator,
    Nanoc::CLI::CompileListeners::DebugPrinter,
    Nanoc::CLI::CompileListeners::TimingRecorder,
    Nanoc::CLI::CompileListeners::FileActionPrinter,
  ]
end
new(command_runner:, site:, compiler:) click to toggle source
# File lib/nanoc/cli/compile_listeners/aggregate.rb, line 5
def initialize(command_runner:, site:, compiler:)
  @site = site
  @compiler = compiler
  @command_runner = command_runner

  @listener_classes = self.class.default_listener_classes
end

Public Instance Methods

start() click to toggle source
# File lib/nanoc/cli/compile_listeners/aggregate.rb, line 13
def start
  setup_listeners
end
stop() click to toggle source
# File lib/nanoc/cli/compile_listeners/aggregate.rb, line 17
def stop
  teardown_listeners
end

Protected Instance Methods

setup_listeners() click to toggle source
# File lib/nanoc/cli/compile_listeners/aggregate.rb, line 32
def setup_listeners
  res = @compiler.run_until_reps_built
  reps = res.fetch(:reps)

  @listeners =
    @listener_classes
    .select { |klass| klass.enable_for?(@command_runner, @site) }
    .map    { |klass| klass.new(reps: reps) }

  @listeners.each(&:start_safely)
end
teardown_listeners() click to toggle source
# File lib/nanoc/cli/compile_listeners/aggregate.rb, line 44
def teardown_listeners
  return unless @listeners

  @listeners.reverse_each(&:stop_safely)
end