aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cask
diff options
context:
space:
mode:
authorJosh Hagins2016-08-24 11:11:19 -0400
committerGitHub2016-08-24 11:11:19 -0400
commit4f6a46f4b1a35b96e3f801c1168538d2346c92a2 (patch)
tree59f8716f5dee44204cf9277dbe3b5fc849e72c74 /Library/Homebrew/cask
parent8d79cf1eb605fe10fe9b0648ab3a74440c8c0a89 (diff)
parent911edb0ed77859445c3a48f6abe5b9be5807ebf7 (diff)
downloadbrew-4f6a46f4b1a35b96e3f801c1168538d2346c92a2.tar.bz2
Merge pull request #791 from reitermarkus/per-cask-cleanup
Allow per-cask `cleanup`.
Diffstat (limited to 'Library/Homebrew/cask')
-rw-r--r--Library/Homebrew/cask/lib/hbc/cli/cleanup.rb30
-rw-r--r--Library/Homebrew/cask/spec/cask/cli/cleanup_spec.rb38
2 files changed, 57 insertions, 11 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/cli/cleanup.rb b/Library/Homebrew/cask/lib/hbc/cli/cleanup.rb
index b098a243d..4115d26fc 100644
--- a/Library/Homebrew/cask/lib/hbc/cli/cleanup.rb
+++ b/Library/Homebrew/cask/lib/hbc/cli/cleanup.rb
@@ -10,8 +10,12 @@ class Hbc::CLI::Cleanup < Hbc::CLI::Base
true
end
- def self.run(*_ignored)
- default.cleanup!
+ def self.run(*args)
+ if args.empty?
+ default.cleanup!
+ else
+ default.cleanup(args)
+ end
end
def self.default
@@ -25,7 +29,11 @@ class Hbc::CLI::Cleanup < Hbc::CLI::Base
end
def cleanup!
- remove_all_cache_files
+ remove_cache_files
+ end
+
+ def cleanup(tokens)
+ remove_cache_files(*tokens)
end
def cache_files
@@ -55,11 +63,23 @@ class Hbc::CLI::Cleanup < Hbc::CLI::Base
Hbc::Utils.size_in_bytes(cache_files)
end
- def remove_all_cache_files
+ def remove_cache_files(*tokens)
message = "Removing cached downloads"
+ message.concat " for #{tokens.join(', ')}" unless tokens.empty?
message.concat " older than #{OUTDATED_DAYS} days old" if outdated_only
ohai message
- delete_paths(cache_files)
+
+ deletable_cache_files = if tokens.empty?
+ cache_files
+ else
+ start_withs = tokens.map { |token| "#{token}--" }
+
+ cache_files.select { |path|
+ path.basename.to_s.start_with?(*start_withs)
+ }
+ end
+
+ delete_paths(deletable_cache_files)
end
def delete_paths(paths)
diff --git a/Library/Homebrew/cask/spec/cask/cli/cleanup_spec.rb b/Library/Homebrew/cask/spec/cask/cli/cleanup_spec.rb
index e77576ae3..cf48ff2a0 100644
--- a/Library/Homebrew/cask/spec/cask/cli/cleanup_spec.rb
+++ b/Library/Homebrew/cask/spec/cask/cli/cleanup_spec.rb
@@ -10,6 +10,32 @@ describe Hbc::CLI::Cleanup do
cache_location.rmtree
end
+ describe "cleanup" do
+ it "removes cached downloads of given casks" do
+ cleaned_up_cached_download = 'caffeine'
+
+ cached_downloads = [
+ cache_location.join("#{cleaned_up_cached_download}--latest.zip"),
+ cache_location.join("transmission--2.61.dmg"),
+ ]
+
+ cached_downloads.each(&FileUtils.method(:touch))
+
+ cleanup_size = Hbc::Utils.size_in_bytes(cached_downloads[0])
+
+ expect {
+ subject.cleanup(cleaned_up_cached_download)
+ }.to output(<<-EOS.undent).to_stdout
+ ==> Removing cached downloads for #{cleaned_up_cached_download}
+ #{cached_downloads[0]}
+ ==> This operation has freed approximately #{disk_usage_readable(cleanup_size)} of disk space.
+ EOS
+
+ expect(cached_downloads[0].exist?).to eq(false)
+ expect(cached_downloads[1].exist?).to eq(true)
+ end
+ end
+
describe "cleanup!" do
it "removes cached downloads" do
cached_download = cache_location.join("SomeDownload.dmg")
@@ -18,11 +44,11 @@ describe Hbc::CLI::Cleanup do
expect {
subject.cleanup!
- }.to output(<<-OUTPUT.undent).to_stdout
+ }.to output(<<-EOS.undent).to_stdout
==> Removing cached downloads
#{cached_download}
==> This operation has freed approximately #{disk_usage_readable(cleanup_size)} of disk space.
- OUTPUT
+ EOS
expect(cached_download.exist?).to eq(false)
end
@@ -38,11 +64,11 @@ describe Hbc::CLI::Cleanup do
expect {
subject.cleanup!
- }.to output(<<-OUTPUT.undent).to_stdout
+ }.to output(<<-EOS.undent).to_stdout
==> Removing cached downloads
skipping: #{cached_download} is locked
==> This operation has freed approximately #{disk_usage_readable(cleanup_size)} of disk space.
- OUTPUT
+ EOS
expect(cached_download.exist?).to eq(true)
end
@@ -56,10 +82,10 @@ describe Hbc::CLI::Cleanup do
expect {
subject.cleanup!
- }.to output(<<-OUTPUT.undent).to_stdout
+ }.to output(<<-EOS.undent).to_stdout
==> Removing cached downloads older than 10 days old
Nothing to do
- OUTPUT
+ EOS
expect(cached_download.exist?).to eq(true)
end