diff --git a/Library/Homebrew/cmd/fetch.rb b/Library/Homebrew/cmd/fetch.rb index 892c6426d3..3b870b3640 100644 --- a/Library/Homebrew/cmd/fetch.rb +++ b/Library/Homebrew/cmd/fetch.rb @@ -15,8 +15,8 @@ #: #: If `--deps` is passed, also download dependencies for any listed . #: -#: If `--build-from-source` (or `-s`) is passed, download the source rather than a -#: bottle. +#: If `--build-from-source` (or `-s`) or `--build-bottle` is passed, download the +#: source rather than a bottle. #: #: If `--force-bottle` is passed, download a bottle if it exists for the #: current or newest version of macOS, even if it would not be used during @@ -24,14 +24,51 @@ require "formula" require "fetch" +require "cli_parser" module Homebrew module_function + def fetch_args + Homebrew::CLI::Parser.new do + usage_banner <<~EOS + `fetch` [] + + Download the source packages for the given . + For tarballs, also print SHA-256 checksums. + EOS + switch "--HEAD", + description: "Fetch HEAD version instead of stable version." + switch "--devel", + description: "Fetch devel version instead of stable version." + switch :verbose, + description: "Do a verbose VCS checkout, if the URL represents a VCS. This is useful for "\ + "seeing if an existing VCS cache has been updated." + switch :force, + description: "Remove a previously cached version and re-fetch." + switch "--retry", + description: "Retry if a download fails or re-download if the checksum of a previously cached "\ + "version no longer matches." + switch "--deps", + description: "Download dependencies for any listed ." + switch "-s", "--build-from-source", + description: "Download the source for rather than a bottle." + switch "--build-bottle", + description: "Download the source (for eventual bottling) rather than a bottle." + switch "--force-bottle", + description: "Download a bottle if it exists for the current or newest version of macOS, "\ + "even if it would not be used during installation." + switch :verbose + switch :debug + end + end + def fetch + fetch_args.parse + raise FormulaUnspecifiedError if ARGV.named.empty? - if ARGV.include? "--deps" + if args.deps? bucket = [] ARGV.formulae.each do |f| bucket << f @@ -100,7 +137,7 @@ module Homebrew def retry_fetch?(f) @fetch_failed ||= Set.new - if ARGV.include?("--retry") && @fetch_failed.add?(f) + if args.retry? && @fetch_failed.add?(f) ohai "Retrying download" f.clear_cache true @@ -111,7 +148,7 @@ module Homebrew end def fetch_fetchable(f) - f.clear_cache if ARGV.force? + f.clear_cache if args.force? already_fetched = f.cached_download.exist? diff --git a/docs/Manpage.md b/docs/Manpage.md index 37f00c0ae4..553a347314 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -171,8 +171,8 @@ these flags should only appear after a command. If `--deps` is passed, also download dependencies for any listed *`formulae`*. - If `--build-from-source` (or `-s`) is passed, download the source rather than a - bottle. + If `--build-from-source` (or `-s`) or `--build-bottle` is passed, download the + source rather than a bottle. If `--force-bottle` is passed, download a bottle if it exists for the current or newest version of macOS, even if it would not be used during diff --git a/manpages/brew.1 b/manpages/brew.1 index 00ad086f19..74f920374a 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -174,7 +174,7 @@ If \fB\-\-retry\fR is passed, retry if a download fails or re\-download if the c If \fB\-\-deps\fR is passed, also download dependencies for any listed \fIformulae\fR\. . .IP -If \fB\-\-build\-from\-source\fR (or \fB\-s\fR) is passed, download the source rather than a bottle\. +If \fB\-\-build\-from\-source\fR (or \fB\-s\fR) or \fB\-\-build\-bottle\fR is passed, download the source rather than a bottle\. . .IP If \fB\-\-force\-bottle\fR is passed, download a bottle if it exists for the current or newest version of macOS, even if it would not be used during installation\.