class Buildkite::Builder::FileResolver
Attributes
cache[RW]
modified_files[R]
Public Class Methods
new()
click to toggle source
# File lib/buildkite/builder/file_resolver.rb, line 22 def initialize @modified_files = Set.new(pull_request? ? files_from_pull_request.sort! : files_from_git.sort!) end
resolve(reset = false)
click to toggle source
# File lib/buildkite/builder/file_resolver.rb, line 16 def resolve(reset = false) @resolve = nil if !cache || reset @resolve ||= new end
Private Instance Methods
command(cmd)
click to toggle source
# File lib/buildkite/builder/file_resolver.rb, line 48 def command(cmd) output, status = Open3.capture2(*cmd.split) if status.success? output else raise "Command failed (exit #{status.exitstatus}): #{cmd}" end end
files_from_git()
click to toggle source
# File lib/buildkite/builder/file_resolver.rb, line 32 def files_from_git if Buildkite.env changed_files = command("git diff-tree --no-commit-id --name-only -r #{Buildkite.env.commit}") else default_branch = command('git symbolic-ref refs/remotes/origin/HEAD').strip changed_files = command("git diff --name-only #{default_branch}") changed_files << command('git diff --name-only') end changed_files.split.uniq.sort end
files_from_pull_request()
click to toggle source
# File lib/buildkite/builder/file_resolver.rb, line 28 def files_from_pull_request Github.pull_request_files.map { |f| f.fetch('filename') } end
pull_request?()
click to toggle source
# File lib/buildkite/builder/file_resolver.rb, line 44 def pull_request? Buildkite.env&.pull_request end