Sha256: 9323d81ffc5848f90ff7935c1a6609812c555406a0430db42bdf443d462baba6

Contents?: true

Size: 1.91 KB

Versions: 13

Compression:

Stored size: 1.91 KB

Contents

module Coherent
  
  class Repositories
    include Enumerable
  
    def initialize(cache_file = File.join(find_home, ".coherent-plugin-sources"))
      @cache_file = File.expand_path(cache_file)
      load!
    end
  
    def each(&block)
      @repositories.each(&block)
    end
  
    def add(uri)
      unless find{|repo| repo.uri == uri }
        @repositories.push(Repository.new(uri)).last
      end
    end
  
    def remove(uri)
      @repositories.reject!{|repo| repo.uri == uri}
    end
  
    def exist?(uri)
      @repositories.detect{|repo| repo.uri == uri }
    end
  
    def all
      @repositories
    end
  
    def find_plugin(name)
      @repositories.each do |repo|
        repo.each do |plugin|
          return plugin if plugin.name == name
        end
      end
      return nil
    end
  
    def load!
      contents = File.exist?(@cache_file) ? File.read(@cache_file) : defaults
      contents = defaults if contents.empty?
      @repositories = contents.split(/\n/).reject do |line|
        line =~ /^\s*#/ or line =~ /^\s*$/
      end.map { |source| Repository.new(source.strip) }
    end
  
    def save
      File.open(@cache_file, 'w') do |f|
        each do |repo|
          f.write(repo.uri)
          f.write("\n")
        end
      end
    end
  
    def defaults
      <<-DEFAULTS
      http://coherent.googlecode.com/svn/plugins
      DEFAULTS
    end
 
    def find_home
      ['HOME', 'USERPROFILE'].each do |homekey|
        return ENV[homekey] if ENV[homekey]
      end
      if ENV['HOMEDRIVE'] && ENV['HOMEPATH']
        return "#{ENV['HOMEDRIVE']}:#{ENV['HOMEPATH']}"
      end
      begin
        File.expand_path("~")
      rescue StandardError => ex
        if File::ALT_SEPARATOR
          "C:/"
        else
          "/"
        end
      end
    end

    def self.instance
      @instance ||= Repositories.new
    end
  
    def self.each(&block)
      self.instance.each(&block)
    end
  end

end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
coherent-0.6.11 lib/plugin/repositories.rb
coherent-0.6.10 lib/plugin/repositories.rb
coherent-0.6.9 lib/plugin/repositories.rb
coherent-0.6.8 lib/plugin/repositories.rb
coherent-0.6.7 lib/plugin/repositories.rb
coherent-0.6.6 lib/plugin/repositories.rb
coherent-0.6.5 lib/plugin/repositories.rb
coherent-0.6.4 lib/plugin/repositories.rb
coherent-0.6.2 lib/plugin/repositories.rb
coherent-0.6.1 lib/plugin/repositories.rb
coherent-0.6.0 lib/plugin/repositories.rb
coherent-0.4.3 lib/plugin/repositories.rb
coherent-0.4.2 lib/plugin/repositories.rb