aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMarkus Reiter2017-05-22 04:15:11 +0200
committerMarkus Reiter2017-05-25 06:18:52 +0200
commitfd97e88b990b4804e9cfec90e3e5fe60fa54437a (patch)
treec32ba2c02e01d1b605021d5301e5e9c4c9e70527 /Library
parent060af0a26ab7219e46b500fd1c7f420b6cc74cbb (diff)
downloadbrew-fd97e88b990b4804e9cfec90e3e5fe60fa54437a.tar.bz2
Use `LockFile` instead of `Hbc::Utils::file_locked?`.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cask/lib/hbc/cli/cleanup.rb14
-rw-r--r--Library/Homebrew/cask/lib/hbc/download_strategy.rb18
-rw-r--r--Library/Homebrew/cask/lib/hbc/utils.rb2
-rw-r--r--Library/Homebrew/cask/lib/hbc/utils/file.rb14
-rw-r--r--Library/Homebrew/lock_file.rb2
5 files changed, 21 insertions, 29 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/cli/cleanup.rb b/Library/Homebrew/cask/lib/hbc/cli/cleanup.rb
index e25393230..40b37dd5d 100644
--- a/Library/Homebrew/cask/lib/hbc/cli/cleanup.rb
+++ b/Library/Homebrew/cask/lib/hbc/cli/cleanup.rb
@@ -75,14 +75,18 @@ module Hbc
paths.each do |item|
next unless item.exist?
processed_files += 1
- if Utils.file_locked?(item)
+
+ begin
+ LockFile.new(item.basename).with_lock do
+ puts item
+ item_size = File.size?(item)
+ cleanup_size += item_size unless item_size.nil?
+ item.unlink
+ end
+ rescue OperationInProgressError
puts "skipping: #{item} is locked"
next
end
- puts item
- item_size = File.size?(item)
- cleanup_size += item_size unless item_size.nil?
- item.unlink
end
if processed_files.zero?
diff --git a/Library/Homebrew/cask/lib/hbc/download_strategy.rb b/Library/Homebrew/cask/lib/hbc/download_strategy.rb
index 137af319a..935391558 100644
--- a/Library/Homebrew/cask/lib/hbc/download_strategy.rb
+++ b/Library/Homebrew/cask/lib/hbc/download_strategy.rb
@@ -82,10 +82,16 @@ module Hbc
end
def clear_cache
- [cached_location, temporary_path].each do |f|
- next unless f.exist?
- raise CurlDownloadStrategyError, "#{f} is in use by another process" if Utils.file_locked?(f)
- f.unlink
+ [cached_location, temporary_path].each do |path|
+ next unless path.exist?
+
+ begin
+ LockFile.new(path.basename).with_lock do
+ path.unlink
+ end
+ rescue OperationInProgressError
+ raise CurlDownloadStrategyError, "#{path} is in use by another process"
+ end
end
end
@@ -105,10 +111,8 @@ module Hbc
else
had_incomplete_download = temporary_path.exist?
begin
- File.open(temporary_path, "a+") do |f|
- f.flock(File::LOCK_EX)
+ LockFile.new(temporary_path.basename).with_lock do
_fetch
- f.flock(File::LOCK_UN)
end
rescue ErrorDuringExecution
# 33 == range not supported
diff --git a/Library/Homebrew/cask/lib/hbc/utils.rb b/Library/Homebrew/cask/lib/hbc/utils.rb
index 4562fc468..59e85aaeb 100644
--- a/Library/Homebrew/cask/lib/hbc/utils.rb
+++ b/Library/Homebrew/cask/lib/hbc/utils.rb
@@ -2,8 +2,6 @@ require "yaml"
require "open3"
require "stringio"
-require "hbc/utils/file"
-
BUG_REPORTS_URL = "https://github.com/caskroom/homebrew-cask#reporting-bugs".freeze
# monkeypatch Object - not a great idea
diff --git a/Library/Homebrew/cask/lib/hbc/utils/file.rb b/Library/Homebrew/cask/lib/hbc/utils/file.rb
deleted file mode 100644
index 6b80f33ce..000000000
--- a/Library/Homebrew/cask/lib/hbc/utils/file.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-module Hbc
- module Utils
- module_function
-
- def file_locked?(file)
- unlocked = File.open(file).flock(File::LOCK_EX | File::LOCK_NB)
- # revert lock if file was unlocked before check
- File.open(file).flock(File::LOCK_UN) if unlocked
- !unlocked
- rescue
- true
- end
- end
-end
diff --git a/Library/Homebrew/lock_file.rb b/Library/Homebrew/lock_file.rb
index 83743b744..ffd29f817 100644
--- a/Library/Homebrew/lock_file.rb
+++ b/Library/Homebrew/lock_file.rb
@@ -2,7 +2,7 @@ require "fcntl"
class LockFile
def initialize(name)
- @name = name
+ @name = name.to_s
@path = HOMEBREW_LOCK_DIR/"#{@name}.lock"
@lockfile = nil
end