diff --git a/Library/Homebrew/dev-cmd/bump-formula-pr.rb b/Library/Homebrew/dev-cmd/bump-formula-pr.rb index 7ecb4f75f222c49562a468aafba923dbf6e70324..8f842e508249513194e6b6d90a1526ec11094dad 100644 --- a/Library/Homebrew/dev-cmd/bump-formula-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-formula-pr.rb @@ -362,7 +362,12 @@ 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) + begin + remote_url, username = GitHub.forked_repo_info!(tap_full_name) + rescue *GitHub.api_errors => e + formula.path.atomic_write(old_contents) + odie "Unable to fork: #{e.message}!" + end end safe_system "git", "fetch", "--unshallow", "origin" if shallow @@ -445,27 +450,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 6d2c5340d5283ddbdd056ec9a10852b1b7448650..c04289fcbe5a7b8b7124ecff426e0ae7b0f05b1e 100644 --- a/Library/Homebrew/utils/github.rb +++ b/Library/Homebrew/utils/github.rb @@ -603,4 +603,21 @@ module GitHub EOS end end + + def forked_repo_info!(tap_full_name) + response = GitHub.create_fork(tap_full_name) + # 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