Class: Jekyll::Commands::Build

Inherits:
Jekyll::Command show all
Defined in:
lib/jekyll/commands/build.rb

Class Method Summary collapse

Methods inherited from Jekyll::Command

globs, process_site

Class Method Details

.build(site, options) ⇒ Object

Private: Build the site from source into destination.

site - A Jekyll::Site instance options - A Hash of options passed to the command

Returns nothing.



17
18
19
20
21
22
23
24
25
# File 'lib/jekyll/commands/build.rb', line 17

def self.build(site, options)
  source = options['source']
  destination = options['destination']
  Jekyll.logger.info "Source:", source
  Jekyll.logger.info "Destination:", destination
  print Jekyll.logger.formatted_topic "Generating..."
  self.process_site(site)
  puts "done."
end

.process(options) ⇒ Object



4
5
6
7
8
9
# File 'lib/jekyll/commands/build.rb', line 4

def self.process(options)
  site = Jekyll::Site.new(options)

  self.build(site, options)
  self.watch(site, options) if options['watch']
end

.watch(site, options) ⇒ Object

Private: Watch for file changes and rebuild the site.

site - A Jekyll::Site instance options - A Hash of options passed to the command

Returns nothing.



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/jekyll/commands/build.rb', line 33

def self.watch(site, options)
  require 'directory_watcher'

  source = options['source']
  destination = options['destination']

  Jekyll.logger.info "Auto-regeneration:", "enabled"

  dw = DirectoryWatcher.new(source, :glob => self.globs(source, destination), :pre_load => true)
  dw.interval = 1

  dw.add_observer do |*args|
    t = Time.now.strftime("%Y-%m-%d %H:%M:%S")
    print Jekyll.logger.formatted_topic("Regenerating:") + "#{args.size} files at #{t} "
    self.process_site(site)
    puts  "...done."
  end

  dw.start

  unless options['serving']
    trap("INT") do
      puts "     Halting auto-regeneration."
      exit 0
    end

    loop { sleep 1000 }
  end
end