module Dependabot::SharedHelpers

def self.with_git_configured(credentials:, &_block)

def self.with_git_configured(credentials:, &_block)
  safe_directories = find_safe_directories
  FileUtils.mkdir_p(Utils::BUMP_TMP_DIR_PATH)
  previous_config = ENV.fetch("GIT_CONFIG_GLOBAL", nil)
  # adding a random suffix to avoid conflicts when running in parallel
  # some package managers like bundler will modify the global git config
  git_config_global_path = File.expand_path("#{SecureRandom.hex(16)}.gitconfig", Utils::BUMP_TMP_DIR_PATH)
  previous_terminal_prompt = ENV.fetch("GIT_TERMINAL_PROMPT", nil)
  begin
    ENV["GIT_CONFIG_GLOBAL"] = git_config_global_path
    ENV["GIT_TERMINAL_PROMPT"] = "false"
    configure_git_to_use_https_with_credentials(credentials, safe_directories, git_config_global_path)
    yield
  ensure
    ENV["GIT_CONFIG_GLOBAL"] = previous_config
    ENV["GIT_TERMINAL_PROMPT"] = previous_terminal_prompt
  end
rescue Errno::ENOSPC => e
  raise Dependabot::OutOfDisk, e.message
ensure
  FileUtils.rm_f(T.must(git_config_global_path))
end