Merge branch 'save-changed-files'

master
hotovson 2011-03-17 20:49:41 +01:00
commit 2d2809def3
2 changed files with 24 additions and 5 deletions

View File

@ -38,12 +38,14 @@ else
end end
rules.rules.each do |klass, files| rules.rules.each do |klass, files|
puts "#{klass} #{files.inspect}" # puts "#{klass} #{files.inspect}"
files.each do |file| files.each do |file|
if File.binread(file).match(/^-{3,5}\s*$/) if File.binread(file).match(/^-{3,5}\s*$/)
puts "~ Read #{file} with parse"
raw_item = Ace::RawItem.new(file).tap(&:parse) raw_item = Ace::RawItem.new(file).tap(&:parse)
item = klass.create(raw_item.metadata, raw_item.content) item = klass.create(raw_item.metadata, raw_item.content)
else else
puts "~ Read #{file} without parse"
item = klass.create(Hash.new, File.read(file)) item = klass.create(Hash.new, File.read(file))
end end
item.original_path = file item.original_path = file

View File

@ -10,6 +10,7 @@
require "yaml" require "yaml"
require "fileutils" require "fileutils"
require "ace/filters/sass" require "ace/filters/sass"
require "digest/sha1"
module Ace module Ace
module Helpers module Helpers
@ -135,6 +136,10 @@ module Ace
"#{self.base_url}#{self.server_path}" "#{self.base_url}#{self.server_path}"
end end
def digest(data)
Digest::SHA1.hexdigest(data)
end
attr_writer :output_path attr_writer :output_path
def output_path def output_path
@output_path ||= begin @output_path ||= begin
@ -145,12 +150,24 @@ module Ace
end end
def save! def save!
content = self.render # so filters can influence output_path
puts "~ [RENDER] #{self.output_path}" puts "~ [RENDER] #{self.output_path}"
content = self.render # so filters can influence output_path
FileUtils.mkdir_p File.dirname(self.output_path) begin
File.open(self.output_path, "w") do |file| old_content = File.open(self.output_path, "rb") { |f| f.read }
file.puts(content) rescue
old_content = ''
end
if self.digest(content) != self.digest(old_content)
warn "~ CRC isn't same, save new content into #{self.output_path}"
# puts old_content.inspect
# puts content.inspect
FileUtils.mkdir_p File.dirname(self.output_path)
File.open(self.output_path, "w") do |file|
file.puts(content)
end
end end
end end
end end