Sha256: 304f227ca2814b948c1d24d70778ad306c8eb9696a689853e34bd8b50daed6af

Contents?: true

Size: 1.54 KB

Versions: 10

Compression:

Stored size: 1.54 KB

Contents

module Omnibus
  class EmptyManifestDiff
    def updated
      []
    end

    def added
      []
    end

    def removed
      []
    end

    def empty?
      true
    end
  end

  class ManifestDiff
    def initialize(first, second)
      @first = first
      @second = second
    end

    def updated
      @updated ||=
        (first.entry_names & second.entry_names).collect do |name|
          diff(first.entry_for(name), second.entry_for(name))
        end.compact
    end

    def removed
      @removed ||=
        (first.entry_names - second.entry_names).collect do |name|
          removed_entry(first.entry_for(name))
        end
    end

    def added
      @added ||=
        (second.entry_names - first.entry_names).collect do |name|
          new_entry(second.entry_for(name))
        end
    end

    def empty?
      updated.empty? && removed.empty? && added.empty?
    end

    private

    attr_reader :first, :second

    def new_entry(entry)
      { name: entry.name,
        new_version: entry.locked_version,
        source_type: entry.source_type,
        source: entry.locked_source }
    end

    def removed_entry(entry)
      { name: entry.name,
        old_version: entry.locked_version,
        source_type: entry.source_type,
        source: entry.locked_source }
    end

    def diff(a, b)
      if a == b
        nil
      else
        { name: b.name,
          old_version: a.locked_version,
          new_version: b.locked_version,
          source_type: b.source_type,
          source: b.locked_source }
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
omnibus-9.0.24 lib/omnibus/manifest_diff.rb
omnibus-9.0.23 lib/omnibus/manifest_diff.rb
omnibus-9.0.22 lib/omnibus/manifest_diff.rb
omnibus-9.0.17 lib/omnibus/manifest_diff.rb
omnibus-9.0.12 lib/omnibus/manifest_diff.rb
omnibus-9.0.11 lib/omnibus/manifest_diff.rb
omnibus-9.0.8 lib/omnibus/manifest_diff.rb
omnibus-8.3.2 lib/omnibus/manifest_diff.rb
omnibus-8.2.2 lib/omnibus/manifest_diff.rb
omnibus-8.1.15 lib/omnibus/manifest_diff.rb