X-Git-Url: http://git.draconx.ca/gitweb/homepage.git/blobdiff_plain/ec1703ff7346b6d3edeee73f1c6dfa750b7aeed4..00a9b42301aeb19c08c43f3774dd4e2e27945b5e:/lib/imgresize.rb diff --git a/lib/imgresize.rb b/lib/imgresize.rb index e539f37..b14530b 100644 --- a/lib/imgresize.rb +++ b/lib/imgresize.rb @@ -20,6 +20,27 @@ class ImgResize < Nanoc::Filter identifier :imgresize type :binary + def fetch_from_cache(filename, params) + return unless params[:cache] + + cachefile = File.join(@config[:output_dir], params[:cache]) + begin + s = File.stat(cachefile) + rescue Errno::ENOENT + return + end + + return unless s.mtime >= File.stat(filename).mtime + + begin + File.link(cachefile, output_filename) + rescue + FileUtils.copy_file(cachefile, output_filename) + end + + return true + end + def run(filename, params = {}) w = if params[:width] then params[:width].to_i end h = if params[:height] then params[:height].to_i end @@ -32,6 +53,8 @@ class ImgResize < Nanoc::Filter end args << output_filename - system('gm', 'convert', *args) + unless fetch_from_cache(filename, params) + system('gm', 'convert', *args) + end end end