From d0c7c4fd7161a3da2bba924e5cf9ce19c7f98889 Mon Sep 17 00:00:00 2001 From: Seeker Date: Sun, 16 Aug 2020 10:35:38 -0700 Subject: [PATCH] utils/github: add `forked_repo_info!` --- Library/Homebrew/dev-cmd/bump-formula-pr.rb | 25 +++------------------ Library/Homebrew/utils/github.rb | 21 +++++++++++++++++ 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/Library/Homebrew/dev-cmd/bump-formula-pr.rb b/Library/Homebrew/dev-cmd/bump-formula-pr.rb index 5cdd52714a..b407857146 100644 --- a/Library/Homebrew/dev-cmd/bump-formula-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-formula-pr.rb @@ -362,7 +362,9 @@ module Homebrew remote_url = Utils.popen_read("git remote get-url --push origin").chomp username = formula.tap.user else - remote_url, username = forked_repo_info(formula, tap_full_name, old_contents) + remote_url, username = GitHub.forked_repo_info!(tap_full_name) do + formula.path.atomic_write(old_contents) + end end safe_system "git", "fetch", "--unshallow", "origin" if shallow @@ -444,27 +446,6 @@ module Homebrew [resource.fetch, forced_version] end - def forked_repo_info(formula, tap_full_name, old_contents) - response = GitHub.create_fork(tap_full_name) - rescue GitHub::AuthenticationFailedError, *GitHub.api_errors => e - formula.path.atomic_write(old_contents) - odie "Unable to fork: #{e.message}!" - else - # GitHub API responds immediately but fork takes a few seconds to be ready. - sleep 1 until GitHub.check_fork_exists(tap_full_name) - remote_url = if system("git", "config", "--local", "--get-regexp", "remote\..*\.url", "git@github.com:.*") - response.fetch("ssh_url") - else - url = response.fetch("clone_url") - if (api_token = Homebrew::EnvConfig.github_api_token) - url.gsub!(%r{^https://github\.com/}, "https://#{api_token}@github.com/") - end - url - end - username = response.fetch("owner").fetch("login") - [remote_url, username] - end - def formula_version(formula, spec, contents = nil) name = formula.name path = formula.path diff --git a/Library/Homebrew/utils/github.rb b/Library/Homebrew/utils/github.rb index 6d2c5340d5..60f626b5ef 100644 --- a/Library/Homebrew/utils/github.rb +++ b/Library/Homebrew/utils/github.rb @@ -603,4 +603,25 @@ module GitHub EOS end end + + def forked_repo_info!(tap_full_name) + response = GitHub.create_fork(tap_full_name) + rescue GitHub::AuthenticationFailedError, *GitHub.api_errors => e + yield + odie "Unable to fork: #{e.message}!" + else + # GitHub API responds immediately but fork takes a few seconds to be ready. + sleep 1 until GitHub.check_fork_exists(tap_full_name) + remote_url = if system("git", "config", "--local", "--get-regexp", "remote\..*\.url", "git@github.com:.*") + response.fetch("ssh_url") + else + url = response.fetch("clone_url") + if (api_token = Homebrew::EnvConfig.github_api_token) + url.gsub!(%r{^https://github\.com/}, "https://#{api_token}@github.com/") + end + url + end + username = response.fetch("owner").fetch("login") + [remote_url, username] + end end