Merge pull request #15853 from clint-stripe/clint/pass_through_curl_home
Allow HOMEBREW_CURLRC to specify a path for curl `--config`
This commit is contained in:
		
						commit
						72d25a21df
					
				@ -132,9 +132,10 @@ module Homebrew
 | 
			
		||||
        boolean:     true,
 | 
			
		||||
      },
 | 
			
		||||
      HOMEBREW_CURLRC:                           {
 | 
			
		||||
        description: "If set, do not pass `--disable` when invoking `curl`(1), which disables the " \
 | 
			
		||||
                     "use of `curlrc`.",
 | 
			
		||||
        boolean:     true,
 | 
			
		||||
        description: "If set to an absolute path (i.e. beginning with `/`), pass it with `--config` when invoking " \
 | 
			
		||||
                     "`curl`(1). " \
 | 
			
		||||
                     "If set but _not_ a valid path, do not pass `--disable`, which disables the " \
 | 
			
		||||
                     "use of `.curlrc`.",
 | 
			
		||||
      },
 | 
			
		||||
      HOMEBREW_DEBUG:                            {
 | 
			
		||||
        description: "If set, always assume `--debug` when running commands.",
 | 
			
		||||
 | 
			
		||||
@ -67,8 +67,8 @@ module Homebrew::EnvConfig
 | 
			
		||||
  sig { returns(T::Boolean) }
 | 
			
		||||
  def self.curl_verbose?; end
 | 
			
		||||
 | 
			
		||||
  sig { returns(T::Boolean) }
 | 
			
		||||
  def self.curlrc?; end
 | 
			
		||||
  sig { returns(T.nilable(String)) }
 | 
			
		||||
  def self.curlrc; end
 | 
			
		||||
 | 
			
		||||
  sig { returns(T::Boolean) }
 | 
			
		||||
  def self.debug?; end
 | 
			
		||||
 | 
			
		||||
@ -313,11 +313,27 @@ describe "Utils::Curl" do
 | 
			
		||||
      expect(curl_args(*args).first).to eq("--disable")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "doesn't return `--disable` as the first argument when HOMEBREW_CURLRC is set" do
 | 
			
		||||
    it "doesn't return `--disable` as the first argument when HOMEBREW_CURLRC is set but not a path" do
 | 
			
		||||
      ENV["HOMEBREW_CURLRC"] = "1"
 | 
			
		||||
      expect(curl_args(*args).first).not_to eq("--disable")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "doesn't return `--config` when HOMEBREW_CURLRC is unset" do
 | 
			
		||||
      expect(curl_args(*args)).not_to include(a_string_starting_with("--config"))
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "returns `--config` when HOMEBREW_CURLRC is a valid path" do
 | 
			
		||||
      Tempfile.create do |tmpfile|
 | 
			
		||||
        path = tmpfile.path
 | 
			
		||||
        ENV["HOMEBREW_CURLRC"] = path
 | 
			
		||||
        # We still expect --disable
 | 
			
		||||
        expect(curl_args(*args).first).to eq("--disable")
 | 
			
		||||
        expect(curl_args(*args).join(" ")).to include("--config #{path}")
 | 
			
		||||
      end
 | 
			
		||||
    ensure
 | 
			
		||||
      ENV["HOMEBREW_CURLRC"] = nil
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "uses `--connect-timeout` when `:connect_timeout` is Numeric" do
 | 
			
		||||
      expect(curl_args(*args, connect_timeout: 123).join(" ")).to include("--connect-timeout 123")
 | 
			
		||||
      expect(curl_args(*args, connect_timeout: 123.4).join(" ")).to include("--connect-timeout 123.4")
 | 
			
		||||
 | 
			
		||||
@ -71,7 +71,16 @@ module Utils
 | 
			
		||||
      args = []
 | 
			
		||||
 | 
			
		||||
      # do not load .curlrc unless requested (must be the first argument)
 | 
			
		||||
      args << "--disable" unless Homebrew::EnvConfig.curlrc?
 | 
			
		||||
      curlrc = Homebrew::EnvConfig.curlrc
 | 
			
		||||
      if curlrc&.start_with?("/")
 | 
			
		||||
        # If the file exists, we still want to disable loading the default curlrc.
 | 
			
		||||
        args << "--disable" << "--config" << curlrc
 | 
			
		||||
      elsif curlrc
 | 
			
		||||
        # This matches legacy behavior: `HOMEBREW_CURLRC` was a bool,
 | 
			
		||||
        # omitting `--disable` when present.
 | 
			
		||||
      else
 | 
			
		||||
        args << "--disable"
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      # echo any cookies received on a redirect
 | 
			
		||||
      args << "--cookie" << "/dev/null"
 | 
			
		||||
 | 
			
		||||
@ -2176,7 +2176,7 @@ prefix-specific files take precedence over system-wide files (unless
 | 
			
		||||
  <br>If set, pass `--verbose` when invoking `curl`(1).
 | 
			
		||||
 | 
			
		||||
- `HOMEBREW_CURLRC`
 | 
			
		||||
  <br>If set, do not pass `--disable` when invoking `curl`(1), which disables the use of `curlrc`.
 | 
			
		||||
  <br>If set to an absolute path (i.e. beginning with `/`), pass it with `--config` when invoking `curl`(1). If set but _not_ a valid path, do not pass `--disable`, which disables the use of `.curlrc`.
 | 
			
		||||
 | 
			
		||||
- `HOMEBREW_DEBUG`
 | 
			
		||||
  <br>If set, always assume `--debug` when running commands.
 | 
			
		||||
 | 
			
		||||
@ -3149,7 +3149,7 @@ If set, pass \fB\-\-verbose\fR when invoking \fBcurl\fR(1)\.
 | 
			
		||||
\fBHOMEBREW_CURLRC\fR
 | 
			
		||||
.
 | 
			
		||||
.br
 | 
			
		||||
If set, do not pass \fB\-\-disable\fR when invoking \fBcurl\fR(1), which disables the use of \fBcurlrc\fR\.
 | 
			
		||||
If set to an absolute path (i\.e\. beginning with \fB/\fR), pass it with \fB\-\-config\fR when invoking \fBcurl\fR(1)\. If set but \fInot\fR a valid path, do not pass \fB\-\-disable\fR, which disables the use of \fB\.curlrc\fR\.
 | 
			
		||||
.
 | 
			
		||||
.TP
 | 
			
		||||
\fBHOMEBREW_DEBUG\fR
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user