class PodAlexandria::Lockfile

Attributes

path[R]

Public Class Methods

new(path) click to toggle source
# File lib/cocoapods-alexandria/rome/lockfile.rb, line 5
def initialize(path)
  @path = path
end

Public Instance Methods

changed_specs(lockfile) click to toggle source

collect changed specs (changed checksum, checkout or deleted pod)

# File lib/cocoapods-alexandria/rome/lockfile.rb, line 18
def changed_specs(lockfile)
  changed_checksums = spec_checksums.select { |k,v| v != lockfile.spec_checksums[k] }.keys
  changed_checkout = checkout_options.select { |k,v| v != lockfile.checkout_options[k] }.keys
  deleted_specs = lockfile.spec_checksums.keys - spec_checksums.keys

  changed_checksums.to_set.merge(changed_checksums).merge(deleted_specs)
end
copy_to(lockfile) click to toggle source
# File lib/cocoapods-alexandria/rome/lockfile.rb, line 42
def copy_to(lockfile)
  FileUtils.copy_file(path, lockfile.path)
end
delete() click to toggle source
# File lib/cocoapods-alexandria/rome/lockfile.rb, line 46
def delete
  FileUtils.remove_file(path, true)
end
exists?() click to toggle source
# File lib/cocoapods-alexandria/rome/lockfile.rb, line 9
def exists?
  File.file?(path)
end
matches?(lockfile) click to toggle source
# File lib/cocoapods-alexandria/rome/lockfile.rb, line 13
def matches?(lockfile)
  FileUtils.identical?(path, lockfile.path)
end
specs_affected_by(specs) click to toggle source

collect affected frameworks (and filter out subspecs)

# File lib/cocoapods-alexandria/rome/lockfile.rb, line 27
def specs_affected_by(specs)
  affected = specs

  loop do
    items = pods.select { |s|
      s.is_a?(Hash) && s.values.flatten.any? { |ss| affected.include? ss.split.first }
    }.map { |s| s.keys.first.split.first }

    break if affected.superset? (affected + items)
    affected.merge(items)
  end

  affected = affected & spec_checksums.keys
end

Protected Instance Methods

checkout_options() click to toggle source
# File lib/cocoapods-alexandria/rome/lockfile.rb, line 60
def checkout_options
  contents.fetch('CHECKOUT OPTIONS', {})
end
contents() click to toggle source
# File lib/cocoapods-alexandria/rome/lockfile.rb, line 52
def contents
  @contents ||= YAML.load_file(path)
end
pods() click to toggle source
# File lib/cocoapods-alexandria/rome/lockfile.rb, line 64
def pods
  contents.fetch('PODS', [])
end
spec_checksums() click to toggle source
# File lib/cocoapods-alexandria/rome/lockfile.rb, line 56
def spec_checksums
  contents.fetch('SPEC CHECKSUMS', {})
end