module Pact::ProviderVerifier::Git

Constants

BRANCH_ENV_VAR_NAMES
COMMAND

Public Class Methods

branch() click to toggle source
# File lib/pact/provider_verifier/git.rb, line 11
def self.branch
  find_branch_from_env_vars || branch_from_git_command
end
branch_from_env_var(env_var_name) click to toggle source
# File lib/pact/provider_verifier/git.rb, line 21
def self.branch_from_env_var(env_var_name)
  val = ENV[env_var_name]
  if val && val.strip.size > 0
    val
  else
    nil
  end
end
branch_from_git_command() click to toggle source
# File lib/pact/provider_verifier/git.rb, line 30
def self.branch_from_git_command
  branch_names = nil
  begin
    branch_names = 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
    raise Pact::ProviderVerifier::Error, "Could not determine current git branch using command `#{COMMAND}`. #{e.class} #{e.message}"
  end

  validate_branch_names(branch_names)
  branch_names[0]
end
execute_git_command() click to toggle source
# File lib/pact/provider_verifier/git.rb, line 60
def self.execute_git_command
  `#{COMMAND}`
end
find_branch_from_env_vars() click to toggle source

private

# File lib/pact/provider_verifier/git.rb, line 17
def self.find_branch_from_env_vars
  BRANCH_ENV_VAR_NAMES.collect { |env_var_name| branch_from_env_var(env_var_name) }.compact.first
end
validate_branch_names(branch_names) click to toggle source
# File lib/pact/provider_verifier/git.rb, line 50
def self.validate_branch_names(branch_names)
  if branch_names.size == 0
    raise Pact::ProviderVerifier::Error, "Command `#{COMMAND}` didn't return anything that could be identified as the current branch."
  end

  if branch_names.size > 1
    raise Pact::ProviderVerifier::Error, "Command `#{COMMAND}` returned multiple branches: #{branch_names.join(", ")}. You will need to get the branch name another way."
  end
end