aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/keg.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/keg.rb')
-rw-r--r--Library/Homebrew/keg.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb
index 3a4d01262..4949d24dc 100644
--- a/Library/Homebrew/keg.rb
+++ b/Library/Homebrew/keg.rb
@@ -61,6 +61,18 @@ class Keg < Pathname
parent.basename.to_s
end
+ def lock
+ path = HOMEBREW_CACHE_FORMULA/"#{fname}.brewing"
+ file = path.open(File::RDWR | File::CREAT)
+ unless file.flock(File::LOCK_EX | File::LOCK_NB)
+ raise OperationInProgressError, fname
+ end
+ yield
+ ensure
+ file.flock(File::LOCK_UN)
+ file.close
+ end
+
def linked_keg_record
@linked_keg_record ||= HOMEBREW_REPOSITORY/"Library/LinkedKegs"/fname
end