curl: make curl_args more configurable.

Allow configuring whether output should be shown or the default the
default user agent is used.
This commit is contained in:
Mike McQuaid 2016-12-25 23:01:40 +00:00
parent 59180ec370
commit e6fb3c3114
2 changed files with 20 additions and 17 deletions

View File

@ -27,14 +27,6 @@ RUBY_BIN = RUBY_PATH.dirname
HOMEBREW_USER_AGENT_CURL = ENV["HOMEBREW_USER_AGENT_CURL"] HOMEBREW_USER_AGENT_CURL = ENV["HOMEBREW_USER_AGENT_CURL"]
HOMEBREW_USER_AGENT_RUBY = "#{ENV["HOMEBREW_USER_AGENT"]} ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}".freeze HOMEBREW_USER_AGENT_RUBY = "#{ENV["HOMEBREW_USER_AGENT"]} ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}".freeze
HOMEBREW_CURL_ARGS = [
"--fail",
"--progress-bar",
"--remote-time",
"--location",
"--user-agent", HOMEBREW_USER_AGENT_CURL
].freeze
require "tap_constants" require "tap_constants"
module Homebrew module Homebrew

View File

@ -1,27 +1,38 @@
require "pathname" require "pathname"
require "open3" require "open3"
def curl_args(extra_args = []) def curl_args(options = {})
curl = Pathname.new ENV["HOMEBREW_CURL"] curl = Pathname.new ENV["HOMEBREW_CURL"]
curl = Pathname.new "/usr/bin/curl" unless curl.exist? curl = Pathname.new "/usr/bin/curl" unless curl.exist?
raise "#{curl} is not executable" unless curl.exist? && curl.executable? raise "#{curl} is not executable" unless curl.exist? && curl.executable?
flags = HOMEBREW_CURL_ARGS args = [
flags -= ["--progress-bar"] if ARGV.verbose? curl.to_s,
"--remote-time",
"--location",
]
args = [curl.to_s] + flags + extra_args unless options[:default_user_agent]
args << "--verbose" if ENV["HOMEBREW_CURL_VERBOSE"] args << "--user-agent" << HOMEBREW_USER_AGENT_CURL
args << "--silent" if !$stdout.tty? || ENV["TRAVIS"] end
unless options[:show_output]
args << "--progress-bar" unless ARGV.verbose?
args << "--verbose" if ENV["HOMEBREW_CURL_VERBOSE"]
args << "--fail"
args << "--silent" if !$stdout.tty? || ENV["TRAVIS"]
end
args += options[:extra_args] if options[:extra_args]
args args
end end
def curl(*args) def curl(*args)
safe_system(*curl_args(args)) safe_system(*curl_args(extra_args: args))
end end
def curl_output(*args) def curl_output(*args)
curl_args = curl_args(args) curl_args = curl_args(extra_args: args, show_output: true)
curl_args -= ["--fail", "--silent"]
Open3.popen3(*curl_args) do |_, stdout, stderr, wait_thread| Open3.popen3(*curl_args) do |_, stdout, stderr, wait_thread|
[stdout.read, stderr.read, wait_thread.value] [stdout.read, stderr.read, wait_thread.value]
end end