class Prpr::Action::Gemfile::Update

Public Instance Methods

call() click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 7
def call
  if files.map(&:filename).include? 'Gemfile.lock'
    head_versions.each do |name, version|
      old_version = base_versions[name]

      next unless version
      next unless old_version

      if version.major != old_version.major
        add_comment(name, 'major version changed!')
      end

      if version.major == old_version.major && version.minor != old_version.minor
        add_comment(name, 'minor version changed!')
      end

    end
  end
end

Private Instance Methods

add_comment(name, comment) click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 33
def add_comment(name, comment)
  github.create_pull_request_comment(repository_name, number, comment, head, 'Gemfile.lock', position(name))
end
base() click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 69
def base
  event.pull_request.base.sha
end
base_versions() click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 49
def base_versions
  @base_versions ||= versions(base)
end
diff() click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 45
def diff
  @diff ||= files.find { |file| file[:filename] == 'Gemfile.lock' }[:patch]
end
env() click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 85
def env
  @env ||= Config::Env.default
end
files() click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 41
def files
  @files ||= github.pull_request_files(repository_name, number)
end
gem_specs(ref) click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 61
def gem_specs(ref)
  Bundler::LockfileParser.new(gemfile(ref)).specs
end
gemfile(ref) click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 65
def gemfile(ref)
  Config::Github.new(repository_name, branch: ref).read('Gemfile.lock')
end
github() click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 29
def github
  Repository::Github.default
end
head() click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 73
def head
  event.pull_request.head.sha
end
head_versions() click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 53
def head_versions
  @head_versions ||= versions(head)
end
major_version_comment() click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 89
def major_version_comment
  env[:major_version_comment] || ':eyes: major version is changed'
end
minor_version_comment() click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 93
def minor_version_comment
  env[:minor_version_comment] || ':eyes: minor version is changed'
end
number() click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 77
def number
  event.number
end
position(name) click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 37
def position(name)
  diff.lines.index { |line| line =~ /^\+\s*#{name}/ } || diff.lines.index { |line| line.include?(name) }
end
repository_name() click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 81
def repository_name
  event.repository.full_name
end
versions(ref) click to toggle source
# File lib/prpr/action/gemfile/update.rb, line 57
def versions(ref)
  gem_specs(ref).map { |s| [s.name, SemVer.parse(s.version.to_s)] }.to_h
end