mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-15 19:56:59 +08:00
utils/github: add forked_repo_info!
This commit is contained in:
parent
9a63811e8f
commit
d0c7c4fd71
@ -362,7 +362,9 @@ module Homebrew
|
|||||||
remote_url = Utils.popen_read("git remote get-url --push origin").chomp
|
remote_url = Utils.popen_read("git remote get-url --push origin").chomp
|
||||||
username = formula.tap.user
|
username = formula.tap.user
|
||||||
else
|
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
|
end
|
||||||
|
|
||||||
safe_system "git", "fetch", "--unshallow", "origin" if shallow
|
safe_system "git", "fetch", "--unshallow", "origin" if shallow
|
||||||
@ -444,27 +446,6 @@ module Homebrew
|
|||||||
[resource.fetch, forced_version]
|
[resource.fetch, forced_version]
|
||||||
end
|
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)
|
def formula_version(formula, spec, contents = nil)
|
||||||
name = formula.name
|
name = formula.name
|
||||||
path = formula.path
|
path = formula.path
|
||||||
|
@ -603,4 +603,25 @@ module GitHub
|
|||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user