a fssm-based watcher so that browsing is snappier. run rake watch to use it.
This commit is contained in:
parent
03c3c2b310
commit
b6f7a9ea86
@ -1,3 +1,5 @@
|
||||
gem 'fssm'
|
||||
gem 'nanoc3', :require_as => false
|
||||
gem 'rdiscount'
|
||||
gem 'thor'
|
||||
gem 'serve'
|
||||
gem 'thor'
|
||||
|
@ -1 +1,62 @@
|
||||
require File.join(File.dirname(__FILE__), 'vendor/gems/environment')
|
||||
require 'nanoc3/tasks'
|
||||
$: << "lib"
|
||||
|
||||
desc "watch for changes and recompile"
|
||||
task :watch do
|
||||
require 'fssm'
|
||||
require 'nanoc3'
|
||||
require 'nanoc3/cli'
|
||||
Dir['lib/commands/*.rb'].map{|d| d[4..-1]}.sort.each { |f| require f }
|
||||
Dir['lib/data_sources/*.rb'].map{|d| d[4..-1]}.sort.each { |f| require f }
|
||||
Nanoc3::NotificationCenter.on(:compilation_started) do |rep|
|
||||
puts "Compiling: #{rep.path}"
|
||||
end
|
||||
|
||||
rebuild_site = lambda do |base, relative|
|
||||
if relative
|
||||
puts ">>> Change Detected to #{relative} <<<"
|
||||
else
|
||||
puts ">>> Compiling <<<"
|
||||
end
|
||||
start = Time.now
|
||||
# Nanoc3::CLI::Base.new.run(["co"])
|
||||
site = Nanoc3::Site.new('.')
|
||||
site.load_data
|
||||
begin
|
||||
site.compiler.run
|
||||
puts ">>> Done in #{((Time.now - start)*10000).round.to_f / 10}ms <<<"
|
||||
`growlnotify -m "Compilation Complete" --image misc/success-icon.png; exit 0`
|
||||
rescue Exception => e
|
||||
puts ">>> ERROR: #{e.message} <<<"
|
||||
`growlnotify -m "Compilation Error!" --image misc/error-icon.png; exit 0`
|
||||
end
|
||||
end
|
||||
rebuild_site.call(nil,nil)
|
||||
|
||||
puts ">>> Watching for Changes <<<"
|
||||
puts "Run: ./bin/serve .."
|
||||
monitor = FSSM::Monitor.new
|
||||
monitor.path("#{File.dirname(__FILE__)}/content", '**/*') do
|
||||
update(&rebuild_site)
|
||||
delete(&rebuild_site)
|
||||
create(&rebuild_site)
|
||||
end
|
||||
monitor.path("#{File.dirname(__FILE__)}/lib", '**/*') do
|
||||
update(&rebuild_site)
|
||||
delete(&rebuild_site)
|
||||
create(&rebuild_site)
|
||||
end
|
||||
monitor.path("#{File.dirname(__FILE__)}/layouts", '**/*') do
|
||||
update(&rebuild_site)
|
||||
delete(&rebuild_site)
|
||||
create(&rebuild_site)
|
||||
end
|
||||
monitor.path("#{File.dirname(__FILE__)}/assets", '**/*') do
|
||||
update(&rebuild_site)
|
||||
delete(&rebuild_site)
|
||||
create(&rebuild_site)
|
||||
end
|
||||
monitor.run
|
||||
end
|
||||
|
||||
|
BIN
doc-src/misc/error-icon.png
Normal file
BIN
doc-src/misc/error-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.2 KiB |
BIN
doc-src/misc/success-icon.png
Normal file
BIN
doc-src/misc/success-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.6 KiB |
Loading…
Reference in New Issue
Block a user