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

View File

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