diff options
| author | Josh Hagins | 2016-08-24 11:11:19 -0400 |
|---|---|---|
| committer | GitHub | 2016-08-24 11:11:19 -0400 |
| commit | 4f6a46f4b1a35b96e3f801c1168538d2346c92a2 (patch) | |
| tree | 59f8716f5dee44204cf9277dbe3b5fc849e72c74 /Library/Homebrew/cask | |
| parent | 8d79cf1eb605fe10fe9b0648ab3a74440c8c0a89 (diff) | |
| parent | 911edb0ed77859445c3a48f6abe5b9be5807ebf7 (diff) | |
| download | brew-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.rb | 30 | ||||
| -rw-r--r-- | Library/Homebrew/cask/spec/cask/cli/cleanup_spec.rb | 38 |
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 |
