utils/github: cleanup
This commit is contained in:
parent
d75e9c99b3
commit
86a7895115
@ -92,6 +92,14 @@ module GitHub
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
API_ERRORS = [
|
||||||
|
AuthenticationFailedError,
|
||||||
|
HTTPNotFoundError,
|
||||||
|
RateLimitExceededError,
|
||||||
|
Error,
|
||||||
|
JSON::ParserError,
|
||||||
|
].freeze
|
||||||
|
|
||||||
# Gets the password field from `git-credential-osxkeychain` for github.com,
|
# Gets the password field from `git-credential-osxkeychain` for github.com,
|
||||||
# but only if that password looks like a GitHub Personal Access Token.
|
# but only if that password looks like a GitHub Personal Access Token.
|
||||||
sig { returns(T.nilable(String)) }
|
sig { returns(T.nilable(String)) }
|
||||||
@ -151,7 +159,7 @@ module GitHub
|
|||||||
needed_human_scopes = "none" if needed_human_scopes.blank?
|
needed_human_scopes = "none" if needed_human_scopes.blank?
|
||||||
credentials_scopes = "none" if credentials_scopes.blank?
|
credentials_scopes = "none" if credentials_scopes.blank?
|
||||||
|
|
||||||
what = case GitHub.api_credentials_type
|
what = case api_credentials_type
|
||||||
when :keychain_username_password
|
when :keychain_username_password
|
||||||
"macOS keychain GitHub"
|
"macOS keychain GitHub"
|
||||||
when :env_token
|
when :env_token
|
||||||
@ -265,7 +273,7 @@ module GitHub
|
|||||||
raise RateLimitExceededError.new(reset, message)
|
raise RateLimitExceededError.new(reset, message)
|
||||||
end
|
end
|
||||||
|
|
||||||
GitHub.api_credentials_error_message(meta, scopes)
|
api_credentials_error_message(meta, scopes)
|
||||||
|
|
||||||
case http_code
|
case http_code
|
||||||
when "401", "403"
|
when "401", "403"
|
||||||
@ -604,25 +612,20 @@ module GitHub
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get_repo_license(user, repo)
|
def get_repo_license(user, repo)
|
||||||
response = GitHub.open_api("#{GitHub::API_URL}/repos/#{user}/#{repo}/license")
|
response = open_api("#{API_URL}/repos/#{user}/#{repo}/license")
|
||||||
return unless response.key?("license")
|
return unless response.key?("license")
|
||||||
|
|
||||||
response["license"]["spdx_id"]
|
response["license"]["spdx_id"]
|
||||||
rescue GitHub::HTTPNotFoundError
|
rescue HTTPNotFoundError
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def api_errors
|
|
||||||
[GitHub::AuthenticationFailedError, GitHub::HTTPNotFoundError,
|
|
||||||
GitHub::RateLimitExceededError, GitHub::Error, JSON::ParserError].freeze
|
|
||||||
end
|
|
||||||
|
|
||||||
def fetch_pull_requests(query, tap_full_name, state: nil)
|
def fetch_pull_requests(query, tap_full_name, state: nil)
|
||||||
GitHub.issues_for_formula(query, tap_full_name: tap_full_name, state: state).select do |pr|
|
issues_for_formula(query, tap_full_name: tap_full_name, state: state).select do |pr|
|
||||||
pr["html_url"].include?("/pull/") &&
|
pr["html_url"].include?("/pull/") &&
|
||||||
/(^|\s)#{Regexp.quote(query)}(:|\s|$)/i =~ pr["title"]
|
/(^|\s)#{Regexp.quote(query)}(:|\s|$)/i =~ pr["title"]
|
||||||
end
|
end
|
||||||
rescue GitHub::RateLimitExceededError => e
|
rescue RateLimitExceededError => e
|
||||||
opoo e.message
|
opoo e.message
|
||||||
[]
|
[]
|
||||||
end
|
end
|
||||||
@ -649,9 +652,9 @@ module GitHub
|
|||||||
end
|
end
|
||||||
|
|
||||||
def forked_repo_info!(tap_full_name)
|
def forked_repo_info!(tap_full_name)
|
||||||
response = GitHub.create_fork(tap_full_name)
|
response = create_fork(tap_full_name)
|
||||||
# GitHub API responds immediately but fork takes a few seconds to be ready.
|
# GitHub API responds immediately but fork takes a few seconds to be ready.
|
||||||
sleep 1 until GitHub.check_fork_exists(tap_full_name)
|
sleep 1 until 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")
|
response.fetch("ssh_url")
|
||||||
else
|
else
|
||||||
@ -702,8 +705,8 @@ module GitHub
|
|||||||
username = tap.user
|
username = tap.user
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
remote_url, username = GitHub.forked_repo_info!(tap_full_name)
|
remote_url, username = forked_repo_info!(tap_full_name)
|
||||||
rescue *GitHub.api_errors => e
|
rescue *API_ERRORS => e
|
||||||
sourcefile_path.atomic_write(old_contents)
|
sourcefile_path.atomic_write(old_contents)
|
||||||
odie "Unable to fork: #{e.message}!"
|
odie "Unable to fork: #{e.message}!"
|
||||||
end
|
end
|
||||||
@ -736,14 +739,14 @@ module GitHub
|
|||||||
end
|
end
|
||||||
|
|
||||||
begin
|
begin
|
||||||
url = GitHub.create_pull_request(tap_full_name, commit_message,
|
url = create_pull_request(tap_full_name, commit_message,
|
||||||
"#{username}:#{branch}", remote_branch, pr_message)["html_url"]
|
"#{username}:#{branch}", remote_branch, pr_message)["html_url"]
|
||||||
if args.no_browse?
|
if args.no_browse?
|
||||||
puts url
|
puts url
|
||||||
else
|
else
|
||||||
exec_browser url
|
exec_browser url
|
||||||
end
|
end
|
||||||
rescue *GitHub.api_errors => e
|
rescue *API_ERRORS => e
|
||||||
odie "Unable to open pull request: #{e.message}!"
|
odie "Unable to open pull request: #{e.message}!"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user