Class: Nanoc3::CLI::Commands::Compile

  • Cri::Command
    • Nanoc3::CLI::Commands::Compile

Public Visibility

Public Instance Method Summary

#aliases
#long_desc
#name
#option_definitions
#run(options, arguments)
#short_desc
#usage

Public Instance Method Details

aliases

public aliases
[View source]


11
12
13
# File 'lib/nanoc3/cli/commands/compile.rb', line 11

def aliases
  []
end

long_desc

public long_desc
[View source]


19
20
21
22
23
24
25
26
27
# File 'lib/nanoc3/cli/commands/compile.rb', line 19

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

public name
[View source]


7
8
9
# File 'lib/nanoc3/cli/commands/compile.rb', line 7

def name
  'compile'
end

option_definitions

public option_definitions
[View source]


33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/nanoc3/cli/commands/compile.rb', line 33

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

public run(options, arguments)
[View source]


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/nanoc3/cli/commands/compile.rb', line 48

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(:low, :skip, rep.raw_path, duration)
  end

  # 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
rescue Interrupt => e
  exit(1)
rescue StandardError, ScriptError => e
  print_error(e)
  exit(1)
end

short_desc

public short_desc
[View source]


15
16
17
# File 'lib/nanoc3/cli/commands/compile.rb', line 15

def short_desc
  'compile items of this site'
end

usage

public usage
[View source]


29
30
31
# File 'lib/nanoc3/cli/commands/compile.rb', line 29

def usage
  "nanoc3 compile [options] [identifier]"
end
Generated on Sunday, August 09 2009 at 01:43:10 PM by YARD 0.2.3.2 (ruby-1.8.7).