diff --git a/Library/Homebrew/cmd/vendor-install.sh b/Library/Homebrew/cmd/vendor-install.sh index 8aba2174e5..5a734a2db4 100644 --- a/Library/Homebrew/cmd/vendor-install.sh +++ b/Library/Homebrew/cmd/vendor-install.sh @@ -47,7 +47,15 @@ fetch() { local sha local temporary_path - curl_args=( + curl_args=() + + # do not load .curlrc unless requested (must be the first argument) + if [[ -n "$HOMEBREW_CURLRC" ]] + then + curl_args[${#curl_args[*]}]="-q" + fi + + curl_args+=( --fail --remote-time --location diff --git a/Library/Homebrew/diagnostic.rb b/Library/Homebrew/diagnostic.rb index 18808033f5..736f35ff19 100644 --- a/Library/Homebrew/diagnostic.rb +++ b/Library/Homebrew/diagnostic.rb @@ -480,21 +480,6 @@ module Homebrew EOS end - def check_user_curlrc - curlrc_found = %w[CURL_HOME HOME].any? do |var| - ENV[var] && File.exist?("#{ENV[var]}/.curlrc") - end - return unless curlrc_found - - <<~EOS - You have a curlrc file - If you have trouble downloading packages with Homebrew, then maybe this - is the problem? If the following command doesn't work, then try removing - your curlrc: - curl #{Formatter.url("https://github.com")} - EOS - end - def check_for_gettext find_relative_paths("lib/libgettextlib.dylib", "lib/libintl.dylib", diff --git a/Library/Homebrew/manpages/brew.1.md.erb b/Library/Homebrew/manpages/brew.1.md.erb index 2d0460e3d8..3d54243a3d 100644 --- a/Library/Homebrew/manpages/brew.1.md.erb +++ b/Library/Homebrew/manpages/brew.1.md.erb @@ -138,6 +138,10 @@ Note that environment variables must have a value set to be detected. For exampl *Default:* `~/Library/Caches/Homebrew`. + * `HOMEBREW_CURLRC`: + If set, Homebrew will not pass `-q` when invoking `curl`(1) (which disables + the use of `curlrc`). + * `HOMEBREW_CURL_VERBOSE`: If set, Homebrew will pass `--verbose` when invoking `curl`(1). diff --git a/Library/Homebrew/test/diagnostic_spec.rb b/Library/Homebrew/test/diagnostic_spec.rb index 8f82e71b1f..52e7d3a392 100644 --- a/Library/Homebrew/test/diagnostic_spec.rb +++ b/Library/Homebrew/test/diagnostic_spec.rb @@ -131,15 +131,6 @@ describe Homebrew::Diagnostic::Checks do end end - specify "#check_user_curlrc" do - mktmpdir do |path| - FileUtils.touch "#{path}/.curlrc" - ENV["CURL_HOME"] = path - - expect(subject.check_user_curlrc).to match("You have a curlrc file") - end - end - specify "#check_for_config_scripts" do mktmpdir do |path| file = "#{path}/foo-config" diff --git a/Library/Homebrew/test/utils/curl_spec.rb b/Library/Homebrew/test/utils/curl_spec.rb new file mode 100644 index 0000000000..7e3cc18f7a --- /dev/null +++ b/Library/Homebrew/test/utils/curl_spec.rb @@ -0,0 +1,15 @@ +require "utils/curl" + +describe "curl" do + describe "curl_args" do + it "returns -q as the first argument when HOMEBREW_CURLRC is set" do + ENV["HOMEBREW_CURLRC"] = "1" + # -q must be the first argument according to "man curl" + expect(curl_args("foo")[1]).to eq("-q") + end + + it "doesn't return -q as the first argument when HOMEBREW_CURLRC is not set" do + expect(curl_args("foo")[1]).to_not eq("-q") + end + end +end diff --git a/Library/Homebrew/utils/curl.rb b/Library/Homebrew/utils/curl.rb index 673e7457ff..a86a828608 100644 --- a/Library/Homebrew/utils/curl.rb +++ b/Library/Homebrew/utils/curl.rb @@ -11,10 +11,14 @@ def curl_executable end def curl_args(*extra_args, show_output: false, user_agent: :default) - args = [ - curl_executable.to_s, - "--show-error", - ] + args = [curl_executable.to_s] + + # do not load .curlrc unless requested (must be the first argument) + if ENV["HOMEBREW_CURLRC"] + args << "-q" + end + + args << "--show-error" args << "--user-agent" << case user_agent when :browser, :fake diff --git a/docs/Manpage.md b/docs/Manpage.md index 2e5d0d9ebc..5ddfa6a034 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -1110,6 +1110,10 @@ Note that environment variables must have a value set to be detected. For exampl *Default:* `~/Library/Caches/Homebrew`. + * `HOMEBREW_CURLRC`: + If set, Homebrew will not pass `-q` when invoking `curl`(1) (which disables + the use of `curlrc`). + * `HOMEBREW_CURL_VERBOSE`: If set, Homebrew will pass `--verbose` when invoking `curl`(1). diff --git a/manpages/brew.1 b/manpages/brew.1 index d9b2a5b6a6..e2e5e8fb03 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -1129,6 +1129,10 @@ If set, instructs Homebrew to use the given directory as the download cache\. \fIDefault:\fR \fB~/Library/Caches/Homebrew\fR\. . .TP +\fBHOMEBREW_CURLRC\fR +If set, Homebrew will not pass \fB\-q\fR when invoking \fBcurl\fR(1) (which disables the use of \fBcurlrc\fR)\. +. +.TP \fBHOMEBREW_CURL_VERBOSE\fR If set, Homebrew will pass \fB\-\-verbose\fR when invoking \fBcurl\fR(1)\. .