Parent

Class/Module Index [+]

Quicksearch

Nanoc3::CLI::Commands::Compile

Public Instance Methods

aliases() click to toggle source
# File lib/nanoc3/cli/commands/compile.rb, line 10
def aliases
  []
end
long_desc() click to toggle source
# File lib/nanoc3/cli/commands/compile.rb, line 18
def long_desc
  'Compile all items of the current site. If an identifier is given, ' +
  'only the item with the given identifier will be compiled. ' +
  "\n\n" +
  'By default, only item that are outdated will be compiled. This can ' +
  'speed up the compilation process quite a bit, but items that include ' +
  'content from other items may have to be recompiled manually. In ' +
  'order to compile items even when they are outdated, use the --force option.'
end
name() click to toggle source
# File lib/nanoc3/cli/commands/compile.rb, line 6
def name
  'compile'
end
option_definitions() click to toggle source
# File lib/nanoc3/cli/commands/compile.rb, line 32
def option_definitions
  [
    # --all
    {
      :long => 'all', :short => 'a', :argument => :forbidden,
      :desc => 'alias for --force (DEPRECATED)'
    },
    # --force
    {
      :long => 'force', :short => 'f', :argument => :forbidden,
      :desc => 'compile items even when they are not outdated'
    }
  ]
end
run(options, arguments) click to toggle source
# File lib/nanoc3/cli/commands/compile.rb, line 47
def run(options, arguments)
  # Make sure we are in a nanoc site directory
  puts "Loading site data..."
  @base.require_site
  @base.site.load_data

  # Check presence of --all option
  if options.has_key?(:all)
    $stderr.puts "Warning: the --all option is deprecated; please use --force instead."
  end

  # Find item(s) to compile
  if arguments.size == 0
    item = nil
  elsif arguments.size == 1
    # Find item
    identifier = arguments[0].cleaned_identifier
    item = @base.site.items.find { |item| item.identifier == identifier }

    # Ensure item
    if item.nil?
      $stderr.puts "Unknown item: #{identifier}"
      exit 1
    end
  end

  # Give feedback
  puts "Compiling #{item.nil? ? 'site' : 'item'}..."

  # Initialize profiling stuff
  time_before = Time.now
  @filter_times ||= {}
  @times_stack  ||= []
  setup_notifications

  # Compile
  @base.site.compiler.run(
    item,
    :force => options.has_key?(:all) || options.has_key?(:force)
  )

  # Find reps
  reps = @base.site.items.map  { |i| i.reps }.flatten

  # Show skipped reps
  reps.select { |r| !r.compiled? }.each do |rep|
    next if rep.raw_path.nil?
    duration = @rep_times[rep.raw_path]
    Nanoc3::CLI::Logger.instance.file(:high, :skip, rep.raw_path, duration)
  end

  # Show diff
  write_diff_for(reps)

  # Give general feedback
  puts
  puts "No items were modified." unless reps.any? { |r| r.modified? }
  puts "#{item.nil? ? 'Site' : 'Item'} compiled in #{format('%.2f', Time.now - time_before)}s."

  if options.has_key?(:verbose)
    print_state_feedback(reps)
    print_profiling_feedback(reps)
  end
end
short_desc() click to toggle source
# File lib/nanoc3/cli/commands/compile.rb, line 14
def short_desc
  'compile items of this site'
end
usage() click to toggle source
# File lib/nanoc3/cli/commands/compile.rb, line 28
def usage
  "nanoc3 compile [options] [identifier]"
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.