Merge pull request #791 from reitermarkus/per-cask-cleanup
Allow per-cask `cleanup`.
This commit is contained in:
commit
4f6a46f4b1
@ -10,8 +10,12 @@ class Hbc::CLI::Cleanup < Hbc::CLI::Base
|
|||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.run(*_ignored)
|
def self.run(*args)
|
||||||
default.cleanup!
|
if args.empty?
|
||||||
|
default.cleanup!
|
||||||
|
else
|
||||||
|
default.cleanup(args)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.default
|
def self.default
|
||||||
@ -25,7 +29,11 @@ class Hbc::CLI::Cleanup < Hbc::CLI::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def cleanup!
|
def cleanup!
|
||||||
remove_all_cache_files
|
remove_cache_files
|
||||||
|
end
|
||||||
|
|
||||||
|
def cleanup(tokens)
|
||||||
|
remove_cache_files(*tokens)
|
||||||
end
|
end
|
||||||
|
|
||||||
def cache_files
|
def cache_files
|
||||||
@ -55,11 +63,23 @@ class Hbc::CLI::Cleanup < Hbc::CLI::Base
|
|||||||
Hbc::Utils.size_in_bytes(cache_files)
|
Hbc::Utils.size_in_bytes(cache_files)
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_all_cache_files
|
def remove_cache_files(*tokens)
|
||||||
message = "Removing cached downloads"
|
message = "Removing cached downloads"
|
||||||
|
message.concat " for #{tokens.join(', ')}" unless tokens.empty?
|
||||||
message.concat " older than #{OUTDATED_DAYS} days old" if outdated_only
|
message.concat " older than #{OUTDATED_DAYS} days old" if outdated_only
|
||||||
ohai message
|
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
|
end
|
||||||
|
|
||||||
def delete_paths(paths)
|
def delete_paths(paths)
|
||||||
|
|||||||
@ -10,6 +10,32 @@ describe Hbc::CLI::Cleanup do
|
|||||||
cache_location.rmtree
|
cache_location.rmtree
|
||||||
end
|
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
|
describe "cleanup!" do
|
||||||
it "removes cached downloads" do
|
it "removes cached downloads" do
|
||||||
cached_download = cache_location.join("SomeDownload.dmg")
|
cached_download = cache_location.join("SomeDownload.dmg")
|
||||||
@ -18,11 +44,11 @@ describe Hbc::CLI::Cleanup do
|
|||||||
|
|
||||||
expect {
|
expect {
|
||||||
subject.cleanup!
|
subject.cleanup!
|
||||||
}.to output(<<-OUTPUT.undent).to_stdout
|
}.to output(<<-EOS.undent).to_stdout
|
||||||
==> Removing cached downloads
|
==> Removing cached downloads
|
||||||
#{cached_download}
|
#{cached_download}
|
||||||
==> This operation has freed approximately #{disk_usage_readable(cleanup_size)} of disk space.
|
==> This operation has freed approximately #{disk_usage_readable(cleanup_size)} of disk space.
|
||||||
OUTPUT
|
EOS
|
||||||
|
|
||||||
expect(cached_download.exist?).to eq(false)
|
expect(cached_download.exist?).to eq(false)
|
||||||
end
|
end
|
||||||
@ -38,11 +64,11 @@ describe Hbc::CLI::Cleanup do
|
|||||||
|
|
||||||
expect {
|
expect {
|
||||||
subject.cleanup!
|
subject.cleanup!
|
||||||
}.to output(<<-OUTPUT.undent).to_stdout
|
}.to output(<<-EOS.undent).to_stdout
|
||||||
==> Removing cached downloads
|
==> Removing cached downloads
|
||||||
skipping: #{cached_download} is locked
|
skipping: #{cached_download} is locked
|
||||||
==> This operation has freed approximately #{disk_usage_readable(cleanup_size)} of disk space.
|
==> This operation has freed approximately #{disk_usage_readable(cleanup_size)} of disk space.
|
||||||
OUTPUT
|
EOS
|
||||||
|
|
||||||
expect(cached_download.exist?).to eq(true)
|
expect(cached_download.exist?).to eq(true)
|
||||||
end
|
end
|
||||||
@ -56,10 +82,10 @@ describe Hbc::CLI::Cleanup do
|
|||||||
|
|
||||||
expect {
|
expect {
|
||||||
subject.cleanup!
|
subject.cleanup!
|
||||||
}.to output(<<-OUTPUT.undent).to_stdout
|
}.to output(<<-EOS.undent).to_stdout
|
||||||
==> Removing cached downloads older than 10 days old
|
==> Removing cached downloads older than 10 days old
|
||||||
Nothing to do
|
Nothing to do
|
||||||
OUTPUT
|
EOS
|
||||||
|
|
||||||
expect(cached_download.exist?).to eq(true)
|
expect(cached_download.exist?).to eq(true)
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user