class LockfilePreserver::Platforms

Constants

NEW_LINE
PLATFORMS
REGEXP
RUBY_PATTERN

Attributes

original[R]
updated[R]

Public Class Methods

new(original, updated) click to toggle source
# File lib/lockfile_preserver/platforms.rb, line 3
def initialize(original, updated)
  @original = original
  @updated = updated
end

Public Instance Methods

keep() click to toggle source
# File lib/lockfile_preserver/platforms.rb, line 8
def keep
  if original.include? PLATFORMS
    keep_platforms
  else
    remove_platforms
  end
end

Private Instance Methods

add_platforms() click to toggle source

How PLATFORMS added to lockfile: git.io/vSda6

# File lib/lockfile_preserver/platforms.rb, line 48
def add_platforms
  updated_lines = updated.lines

  # Find last line of GEM
  last_section_of_gem_index = updated.lines.index { |line| line != "G" && line.chr == "\n" }

  # PLATFORMS should be added after GEM section
  add_platforms_index = last_section_of_gem_index + 1

  # Add PLATFORMS section
  updated_lines.insert(
    add_platforms_index, "\nPLATFORMS\n", "  #{platform_ruby}\n"
  )

  # Reconstruct lockfile
  updated_lines.join
end
keep_platforms() click to toggle source
# File lib/lockfile_preserver/platforms.rb, line 30
def keep_platforms
  if updated.include? PLATFORMS
    retains_platforms
  else
    add_platforms
  end
end
platform_ruby() click to toggle source
# File lib/lockfile_preserver/platforms.rb, line 70
def platform_ruby
  @_platform_ruby ||= original.match(REGEXP)[:ruby]
end
platforms_section() click to toggle source
# File lib/lockfile_preserver/platforms.rb, line 42
def platforms_section
  "\n\nPLATFORMS\n" \
  "  #{platform_ruby}\n\n"
end
remove_platforms() click to toggle source
# File lib/lockfile_preserver/platforms.rb, line 66
def remove_platforms
  updated.sub(REGEXP, NEW_LINE)
end
retains_platforms() click to toggle source
# File lib/lockfile_preserver/platforms.rb, line 38
def retains_platforms
  updated.sub(REGEXP, platforms_section)
end