class Nanoc::CLI::Commands::Compile

Attributes

listener_classes[RW]

Public Class Methods

new(options, arguments, command) click to toggle source
Calls superclass method
# File lib/nanoc/cli/commands/compile.rb, line 363
def initialize(options, arguments, command)
  super
  @listener_classes = default_listener_classes
end

Public Instance Methods

run() click to toggle source
# File lib/nanoc/cli/commands/compile.rb, line 368
def run
  time_before = Time.now

  load_site

  puts 'Compiling site…'
  run_listeners_while do
    site.compile
    prune
  end

  time_after = Time.now
  puts
  puts "Site compiled in #{format('%.2f', time_after - time_before)}s."
end

Protected Instance Methods

default_listener_classes() click to toggle source
# File lib/nanoc/cli/commands/compile.rb, line 392
def default_listener_classes
  [
    Nanoc::CLI::Commands::Compile::DiffGenerator,
    Nanoc::CLI::Commands::Compile::DebugPrinter,
    Nanoc::CLI::Commands::Compile::TimingRecorder,
    Nanoc::CLI::Commands::Compile::GCController,
    Nanoc::CLI::Commands::Compile::FileActionPrinter,
  ]
end
listeners() click to toggle source
# File lib/nanoc/cli/commands/compile.rb, line 411
def listeners
  @listeners
end
prune() click to toggle source
# File lib/nanoc/cli/commands/compile.rb, line 386
def prune
  if site.config[:prune][:auto_prune]
    Nanoc::Extra::Pruner.new(site, exclude: prune_config_exclude).run
  end
end
prune_config() click to toggle source
# File lib/nanoc/cli/commands/compile.rb, line 430
def prune_config
  site.config[:prune] || {}
end
prune_config_exclude() click to toggle source
# File lib/nanoc/cli/commands/compile.rb, line 434
def prune_config_exclude
  prune_config[:exclude] || {}
end
reps() click to toggle source
# File lib/nanoc/cli/commands/compile.rb, line 426
def reps
  site.compiler.reps
end
run_listeners_while() { || ... } click to toggle source
# File lib/nanoc/cli/commands/compile.rb, line 415
def run_listeners_while
  setup_listeners
  yield
ensure
  teardown_listeners
end
setup_listeners() click to toggle source
# File lib/nanoc/cli/commands/compile.rb, line 402
def setup_listeners
  @listeners =
    @listener_classes
    .select { |klass| klass.enable_for?(self) }
    .map    { |klass| klass.new(reps: reps) }

  @listeners.each(&:start)
end
teardown_listeners() click to toggle source
# File lib/nanoc/cli/commands/compile.rb, line 422
def teardown_listeners
  @listeners.each(&:stop)
end