module PactBroker::Client::Git

Constants

BRANCH_ENV_VAR_NAMES
BUILD_URL_ENV_VAR_NAMES
COMMAND
COMMIT_COMMAND
COMMIT_ENV_VAR_NAMES

Public Class Methods

branch(options) click to toggle source
# File lib/pact_broker/client/git.rb, line 37
def self.branch(options)
  find_branch_from_known_env_vars || find_branch_from_env_var_ending_with_branch || branch_from_git_command(options[:raise_error])
end
branch_from_git_command(raise_error) click to toggle source
# File lib/pact_broker/client/git.rb, line 78
def self.branch_from_git_command(raise_error)
  branch_names = execute_and_parse_command(raise_error)
  validate_branch_names(branch_names) if raise_error
  branch_names.size == 1 ? branch_names[0] : nil
end
build_url() click to toggle source

This does not belong in the Git module. TODO move it.

# File lib/pact_broker/client/git.rb, line 43
def self.build_url
  github_build_url || BUILD_URL_ENV_VAR_NAMES.collect{ | name | value_from_env_var(name) }.compact.first
end
commit(options) click to toggle source
# File lib/pact_broker/client/git.rb, line 33
def self.commit(options)
  find_commit_from_env_vars || commit_from_git_command(options[:raise_error])
end
commit_from_git_command(raise_error) click to toggle source
# File lib/pact_broker/client/git.rb, line 84
def self.commit_from_git_command(raise_error)
  execute_git_commit_command(raise_error)
end
execute_and_parse_command(raise_error) click to toggle source
# File lib/pact_broker/client/git.rb, line 113
def self.execute_and_parse_command(raise_error)
  execute_git_command
    .split("\n")
    .collect(&:strip)
    .reject(&:empty?)
    .collect(&:split)
    .collect(&:first)
    .collect{ |line| line.gsub(/^origin\//, '') }
    .reject{ |line| line == "HEAD" }
rescue StandardError => e
  if raise_error
    raise PactBroker::Client::Error, "Could not determine current git branch using command `#{COMMAND}`. #{e.class} #{e.message}"
  else
    return []
  end
end
execute_git_command() click to toggle source
# File lib/pact_broker/client/git.rb, line 98
def self.execute_git_command
  `#{COMMAND}`
end
execute_git_commit_command(raise_error) click to toggle source
# File lib/pact_broker/client/git.rb, line 102
def self.execute_git_commit_command(raise_error)
  `#{COMMIT_COMMAND}`
rescue StandardError => e
  if raise_error
    raise PactBroker::Client::Error,
          "Could not determine current git commit using command `#{COMMIT_COMMAND}`. #{e.class} #{e.message}"
  else
    return nil
  end
end
find_branch_from_env_var_ending_with_branch() click to toggle source
# File lib/pact_broker/client/git.rb, line 58
def self.find_branch_from_env_var_ending_with_branch
  values = ENV.keys
    .select{ |env_var_name| env_var_name.end_with?("_BRANCH") }
    .collect{ |env_var_name| value_from_env_var(env_var_name) }.compact
  if values.size == 1
    values.first
  else
    nil
  end
end
find_branch_from_known_env_vars() click to toggle source
# File lib/pact_broker/client/git.rb, line 53
def self.find_branch_from_known_env_vars
  val = BRANCH_ENV_VAR_NAMES.collect { |env_var_name| value_from_env_var(env_var_name) }.compact.first
  val.gsub(%r{^refs/heads/}, "") if val
end
find_commit_from_env_vars() click to toggle source

private

# File lib/pact_broker/client/git.rb, line 49
def self.find_commit_from_env_vars
  COMMIT_ENV_VAR_NAMES.collect { |env_var_name| value_from_env_var(env_var_name) }.compact.first
end
github_build_url() click to toggle source
# File lib/pact_broker/client/git.rb, line 130
def self.github_build_url
  parts = %w{GITHUB_SERVER_URL GITHUB_REPOSITORY GITHUB_RUN_ID}.collect{ | name | value_from_env_var(name) }
  if parts.all?
    [parts[0], parts[1], "actions", "runs", parts[2]].join("/")
  end
end
validate_branch_names(branch_names) click to toggle source
# File lib/pact_broker/client/git.rb, line 88
def self.validate_branch_names(branch_names)
  if branch_names.size == 0
    raise PactBroker::Client::Error, "Command `#{COMMAND}` didn't return anything that could be identified as the current branch."
  end

  if branch_names.size > 1
    raise PactBroker::Client::Error, "Command `#{COMMAND}` returned multiple branches: #{branch_names.join(", ")}. You will need to get the branch name another way."
  end
end
value_from_env_var(env_var_name) click to toggle source
# File lib/pact_broker/client/git.rb, line 69
def self.value_from_env_var(env_var_name)
  val = ENV[env_var_name]
  if val && val.strip.size > 0
    val
  else
    nil
  end
end