mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
41 lines
1.2 KiB
Ruby
41 lines
1.2 KiB
Ruby
![]() |
require 'fileutils'
|
||
|
|
||
|
# We enhance FileUtils to make our Formula code more readable.
|
||
|
module Homebrew::FileUtils
|
||
|
include FileUtils
|
||
|
|
||
|
# Create a temporary directory then yield. When the block returns,
|
||
|
# recursively delete the temporary directory.
|
||
|
def mktemp
|
||
|
# I used /tmp rather than `mktemp -td` because that generates a directory
|
||
|
# name with exotic characters like + in it, and these break badly written
|
||
|
# scripts that don't escape strings before trying to regexp them :(
|
||
|
|
||
|
# If the user has FileVault enabled, then we can't mv symlinks from the
|
||
|
# /tmp volume to the other volume. So we let the user override the tmp
|
||
|
# prefix if they need to.
|
||
|
tmp_prefix = ENV['HOMEBREW_TEMP'] || '/tmp'
|
||
|
tmp=Pathname.new `/usr/bin/mktemp -d #{tmp_prefix}/homebrew-#{name}-#{version}-XXXX`.strip
|
||
|
raise "Couldn't create build sandbox" if not tmp.directory? or $? != 0
|
||
|
begin
|
||
|
wd=Dir.pwd
|
||
|
chdir tmp
|
||
|
yield
|
||
|
ensure
|
||
|
chdir wd
|
||
|
tmp.rmtree
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# A version of mkdir that also changes to that folder in a block.
|
||
|
def mkdir name, &block
|
||
|
super(name)
|
||
|
if block_given?
|
||
|
chdir name do
|
||
|
yield
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|