From 2735663dc3eabec3056c0b37fbf9b59c3cae4d41 Mon Sep 17 00:00:00 2001 From: Maxim Belkin Date: Mon, 25 Nov 2019 16:43:29 -0600 Subject: [PATCH 1/3] GitHub Actions: get username if we don't have it --- Library/Homebrew/utils/github.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/utils/github.rb b/Library/Homebrew/utils/github.rb index 2e6695f4f4..195dbaa54b 100644 --- a/Library/Homebrew/utils/github.rb +++ b/Library/Homebrew/utils/github.rb @@ -341,9 +341,16 @@ module GitHub end def check_fork_exists(repo) - _, username = api_credentials _, reponame = repo.split("/") + + case api_credentials_type + when :keychain + _, username = api_credentials + when :environment + username = open_api(url_to("user")) { |json| json["login"] } + end json = open_api(url_to("repos", username, reponame)) + return false if json["message"] == "Not Found" true From 40b0b32a72aed554190fcd1bc9e7b89da862b709 Mon Sep 17 00:00:00 2001 From: Maxim Belkin Date: Tue, 26 Nov 2019 12:10:14 -0600 Subject: [PATCH 2/3] Revert "bump-formula-pr: fix forking logic" This reverts commit c5da90e0eb2ade879d7e60a0ec6a193aad3f8afb. --- Library/Homebrew/dev-cmd/bump-formula-pr.rb | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/Library/Homebrew/dev-cmd/bump-formula-pr.rb b/Library/Homebrew/dev-cmd/bump-formula-pr.rb index 66b6e1f21d..58cb293265 100644 --- a/Library/Homebrew/dev-cmd/bump-formula-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-formula-pr.rb @@ -341,7 +341,7 @@ 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, backup_file) + remote_url, username = forked_repo_info(tap_full_name) end safe_system "git", "fetch", "--unshallow", "origin" if shallow @@ -380,16 +380,15 @@ module Homebrew end end - def forked_repo_info(formula, tap_full_name, backup_file) - begin - response = GitHub.create_fork(tap_full_name) - # GitHub API responds immediately but fork takes a few seconds to be ready. - sleep 3 - rescue GitHub::AuthenticationFailedError, *GitHub.api_errors => e - formula.path.atomic_write(backup_file) - odie "Unable to fork: #{e.message}!" - end - remote_url = if system("git", "config", "--local", "--get-regexp", "remote\..*\.url", "git@github.com:.*") + def forked_repo_info(tap_full_name) + response = GitHub.create_fork(tap_full_name) + rescue GitHub::AuthenticationFailedError, *GitHub.api_errors => e + formula.path.atomic_write(backup_file) + 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 response.fetch("clone_url") From 5ba5a2795eb7d8316410b8b851804c2f274b8fbe Mon Sep 17 00:00:00 2001 From: Maxim Belkin Date: Tue, 26 Nov 2019 12:14:21 -0600 Subject: [PATCH 3/3] Fix signature for forked_repo_info --- Library/Homebrew/dev-cmd/bump-formula-pr.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/dev-cmd/bump-formula-pr.rb b/Library/Homebrew/dev-cmd/bump-formula-pr.rb index 58cb293265..278f7914b7 100644 --- a/Library/Homebrew/dev-cmd/bump-formula-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-formula-pr.rb @@ -341,7 +341,7 @@ 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(tap_full_name) + remote_url, username = forked_repo_info(formula, tap_full_name, backup_file) end safe_system "git", "fetch", "--unshallow", "origin" if shallow @@ -380,7 +380,7 @@ module Homebrew end end - def forked_repo_info(tap_full_name) + def forked_repo_info(formula, tap_full_name, backup_file) response = GitHub.create_fork(tap_full_name) rescue GitHub::AuthenticationFailedError, *GitHub.api_errors => e formula.path.atomic_write(backup_file) @@ -388,7 +388,7 @@ module Homebrew 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:.*") + remote_url = if system("git", "config", "--local", "--get-regexp", "remote\..*\.url", "git@github.com:.*") response.fetch("ssh_url") else response.fetch("clone_url")