79 lines
2.3 KiB
Ruby
79 lines
2.3 KiB
Ruby
begin
|
|
# Try to require the preresolved locked set of gems.
|
|
require File.expand_path('../.bundle/environment', __FILE__)
|
|
rescue LoadError
|
|
# Fall back on doing an unlocked resolve at runtime.
|
|
require "rubygems"
|
|
require "bundler"
|
|
Bundler.setup
|
|
end
|
|
|
|
require 'nanoc3/tasks'
|
|
$: << "lib"
|
|
|
|
desc "watch for changes and recompile"
|
|
task :watch do
|
|
require 'fssm'
|
|
require 'nanoc3'
|
|
require 'nanoc3/cli'
|
|
$:<< File.expand_path(File.dirname(__FILE__)+"/../lib")
|
|
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 && relative =~ /\.s[ac]ss/
|
|
puts ">>> Change Detected to #{relative} : updating stylesheets <<<"
|
|
system "bundle exec compass compile"
|
|
else
|
|
if !relative
|
|
puts ">>> Compiling <<<"
|
|
else
|
|
puts ">>> Change Detected to #{relative} <<<"
|
|
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} <<<"
|
|
puts e.backtrace.join("\n")
|
|
`growlnotify -m "Compilation Error!" --image misc/error-icon.png; exit 0`
|
|
end
|
|
end
|
|
end
|
|
rebuild_site.call(nil,nil)
|
|
|
|
puts ">>> Watching for Changes <<<"
|
|
puts "Run: bundle exec 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
|
|
|