Class: Moft::Commands::Build

Inherits:
Moft::Command show all
Defined in:
lib/moft/commands/build.rb

Class Method Summary collapse

Methods inherited from Moft::Command

globs, process_site

Class Method Details

.build(site, options) ⇒ Object

Private: Build the site from source into destination.

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

Returns nothing.



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

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

.process(options) ⇒ Object



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

def self.process(options)
  site = Moft::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 Moft::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
62
63
64
65
66
67
# File 'lib/moft/commands/build.rb', line 33

def self.watch(site, options)
  require 'directory_watcher'
  
  source = options['source']
  destination = options['destination']

  Moft::Logger.info "Auto-regeneration:", "enabled"

  watchdirs = self.globs(source, destination, options['static_includes'])
  
  watchdirs.each do |dir|
    Moft::Logger.info "Watching:", "%s" % dir
  end
  
  dw = DirectoryWatcher.new(source, :glob => watchdirs, :pre_load => true)
  dw.interval = 1

  dw.add_observer do |*args|
    t = Time.now.strftime("%Y-%m-%d %H:%M:%S")
    print Moft::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