Sha256: 838b04ce4fa32475d5f8f15913a0c131f76a767d5302f8bb7896d8a5f42acb05

Contents?: true

Size: 1.01 KB

Versions: 3

Compression:

Stored size: 1.01 KB

Contents

module LicenseFinder
  class SourceSyncer
    def initialize(source_dependencies, dependencies)
      @source_dependencies = Array source_dependencies
      @dependencies = dependencies
    end

    def sync!
      destroy_obsolete_dependencies
      update_existing_dependencies
      create_new_dependencies
      dependencies
    end

    protected
    attr_accessor :dependencies, :source_dependencies

    def destroy_obsolete_dependencies
      obsolete_dependencies = dependencies.select {|d| !source_dependencies.detect {|s| s.name == d.name }}
      obsolete_dependencies.map &:destroy
      
      self.dependencies -= obsolete_dependencies
    end

    def update_existing_dependencies
      dependencies.each do |d|
        source_dep = source_dependencies.detect { |s| s.name == d.name }
        d.merge(source_dep)
        self.source_dependencies -= [source_dep]
      end
    end

    def create_new_dependencies
      source_dependencies.each do |d|
        dependencies << d
        d.save
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
license_finder-0.7.3 lib/license_finder/source_syncer.rb
license_finder-0.7.1 lib/license_finder/source_syncer.rb
license_finder-0.7.0 lib/license_finder/source_syncer.rb