Sha256: 2a613735f092cd6274dff14353a5d576a68c1780812e1e05da332c5386aff3e9

Contents?: true

Size: 1.15 KB

Versions: 23

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

module Nanoc::CLI::Commands::CompileListeners
  class Aggregate < Abstract
    def initialize(command_runner:, site:, compiler:)
      @site = site
      @compiler = compiler
      @command_runner = command_runner

      @listener_classes = self.class.default_listener_classes
    end

    def start
      setup_listeners
    end

    def stop
      teardown_listeners
    end

    def self.default_listener_classes
      [
        Nanoc::CLI::Commands::CompileListeners::DiffGenerator,
        Nanoc::CLI::Commands::CompileListeners::DebugPrinter,
        Nanoc::CLI::Commands::CompileListeners::TimingRecorder,
        Nanoc::CLI::Commands::CompileListeners::FileActionPrinter,
      ]
    end

    protected

    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

    def teardown_listeners
      return unless @listeners

      @listeners.reverse_each(&:stop_safely)
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
nanoc-4.11.12 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.11.11 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.11.10 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.11.9 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.11.8 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.11.7 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.11.6 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.11.5 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.11.4 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.11.3 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.11.2 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.11.1 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.11.0 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.10.4 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.10.3 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.10.2 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.10.1 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.10.0 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.9.9 lib/nanoc/cli/commands/compile_listeners/aggregate.rb
nanoc-4.9.8 lib/nanoc/cli/commands/compile_listeners/aggregate.rb