Skip to content
Snippets Groups Projects
Commit 4f6a46f4 authored by Josh Hagins's avatar Josh Hagins Committed by GitHub
Browse files

Merge pull request #791 from reitermarkus/per-cask-cleanup

Allow per-cask `cleanup`.
parents 8d79cf1e 911edb0e
No related branches found
No related tags found
No related merge requests found
......@@ -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)
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment