Merge pull request #6163 from xu-cheng/cask-cache

Add brew cask --cache <cask> command
This commit is contained in:
Mike McQuaid 2019-05-30 08:57:48 +01:00 committed by GitHub
commit 781ad57ded
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 74 additions and 0 deletions

View File

@ -10,6 +10,7 @@ require "cask/config"
require "cask/cmd/options" require "cask/cmd/options"
require "cask/cmd/abstract_command" require "cask/cmd/abstract_command"
require "cask/cmd/--cache"
require "cask/cmd/audit" require "cask/cmd/audit"
require "cask/cmd/automerge" require "cask/cmd/automerge"
require "cask/cmd/cat" require "cask/cmd/cat"

View File

@ -0,0 +1,28 @@
# frozen_string_literal: true
require "cask/download"
module Cask
class Cmd
class Cache < AbstractCommand
def self.command_name
"--cache"
end
def initialize(*)
super
raise CaskUnspecifiedError if args.empty?
end
def run
casks.each do |cask|
puts Download.new(cask).downloader.cached_location
end
end
def self.help
"display the file used to cache the Cask"
end
end
end
end

View File

@ -21,6 +21,9 @@ graphical user interface.
## COMMANDS ## COMMANDS
* `--cache` <token> [ <token> ... ]:
Display the file used to cache the Cask identified by <token>.
* `audit` [--language=<iso-language>[,<iso-language> ... ]] [ <token> ... ]: * `audit` [--language=<iso-language>[,<iso-language> ... ]] [ <token> ... ]:
Check the given Casks for installability. Check the given Casks for installability.
If no tokens are given on the command line, all Casks are audited. If no tokens are given on the command line, all Casks are audited.

View File

@ -0,0 +1,38 @@
# frozen_string_literal: true
require_relative "shared_examples/requires_cask_token"
require_relative "shared_examples/invalid_option"
describe Cask::Cmd::Cache, :cask do
let(:local_transmission) {
Cask::CaskLoader.load(cask_path("local-transmission"))
}
let(:local_caffeine) {
Cask::CaskLoader.load(cask_path("local-caffeine"))
}
it_behaves_like "a command that requires a Cask token"
it_behaves_like "a command that handles invalid options"
it "prints the file used to cache the Cask" do
transmission_location = CurlDownloadStrategy.new(
local_transmission.url.to_s, local_transmission.token, local_transmission.version,
cache: Cask::Cache.path, **local_transmission.url.specs
).cached_location
caffeine_location = CurlDownloadStrategy.new(
local_caffeine.url.to_s, local_caffeine.token, local_caffeine.version,
cache: Cask::Cache.path, **local_caffeine.url.specs
).cached_location
expect do
described_class.run("local-transmission", "local-caffeine")
end.to output("#{transmission_location}\n#{caffeine_location}\n").to_stdout
end
it "properly handles Casks that are not present" do
expect {
described_class.run("notacask")
}.to raise_error(Cask::CaskUnavailableError)
end
end

View File

@ -25,6 +25,10 @@ Uninstall Cask identified by \fItoken\fR\.
.SH "COMMANDS" .SH "COMMANDS"
. .
.TP .TP
\fB\-\-cache\fR \fItoken\fR [ \fItoken\fR \.\.\. ]
Display the file used to cache the Cask identified by \fItoken\fR\.
.
.TP
\fBaudit\fR [\-\-language=\fIiso\-language\fR[,\fIiso\-language\fR \.\.\. ]] [ \fItoken\fR \.\.\. ] \fBaudit\fR [\-\-language=\fIiso\-language\fR[,\fIiso\-language\fR \.\.\. ]] [ \fItoken\fR \.\.\. ]
Check the given Casks for installability\. If no tokens are given on the command line, all Casks are audited\. Check the given Casks for installability\. If no tokens are given on the command line, all Casks are audited\.
. .