Sha256: 9ca87220809c3bedfbe0aca2e0352de0e98e84bf049a930ec8d34bbf26a3f15b

Contents?: true

Size: 1.54 KB

Versions: 5

Compression:

Stored size: 1.54 KB

Contents

#                                                                          
# File 'cachemanager.rb' created on 28 gen 2008 at 18:31:05.                    
#
# See 'dokkit.rb' or +LICENSE+ for licence information.                      
#                                                                          
# (C)2006-2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors). 
#                                                                          

require 'rake'
require 'yaml'

module Dokkit
  class Cache
    attr_reader :deps, :cache_dir, :cache_filename
    
    def initialize(cache_filename = 'deps.yaml', cache_dir = '.cache')
      @cache_filename = cache_filename
      @cache_dir = cache_dir
      @complete_cache_filename = File.join(cache_dir, cache_filename)
      load
      at_exit { save }
    end
    
    def add_dependency(source_fn, format, dep)
      @deps[source_fn] ||= { format => [] }
      @deps[source_fn][format] << dep unless (dep.nil? or @deps[source_fn][format].include?(dep))
    end
    
    def load
      @deps = load_from_yaml || { }
    end
    
    def save
      write_cache_to_file unless @deps.empty?
    end
    
    def clean
      @deps.clear
    end

    private

    def load_from_yaml
      YAML::load_file(@complete_cache_filename) if File.exists?(@complete_cache_filename)
    end
    
    def write_cache_to_file
      mkdir_p(cache_dir, :verbose => false) unless File.exists?(cache_dir)
      File.open(@complete_cache_filename, 'w') { |file| file.write YAML::dump(@deps) }
    end
            
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
dokkit-0.4.0 lib/dokkit/cache/cache.rb
dokkit-0.4.1 lib/dokkit/cache/cache.rb
dokkit-0.4.2 lib/dokkit/cache/cache.rb
dokkit-0.4.3 lib/dokkit/cache/cache.rb
dokkit-0.4.4 lib/dokkit/cache/cache.rb