aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorJack Nagel2014-04-06 11:29:59 -0500
committerJack Nagel2014-04-06 11:34:08 -0500
commite43f522ab4c033ae0d8e44ab1bb33af8dbf22d0d (patch)
tree08ffc584ca50ace16069219287051724763455d6 /Library/Homebrew
parentb6d1f750831ce2fe92fc352553109c6caf7aac82 (diff)
downloadhomebrew-e43f522ab4c033ae0d8e44ab1bb33af8dbf22d0d.tar.bz2
Extract common decompression code to a method
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/download_strategy.rb39
1 files changed, 16 insertions, 23 deletions
diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb
index 116d53b79..29212323e 100644
--- a/Library/Homebrew/download_strategy.rb
+++ b/Library/Homebrew/download_strategy.rb
@@ -138,36 +138,29 @@ class CurlDownloadStrategy < AbstractDownloadStrategy
tarball_path
end
+ # gunzip and bunzip2 write the output file in the same directory as the input
+ # file regardless of the current working directory, so we need to write it to
+ # the correct location ourselves.
+ def buffered_write(tool)
+ target = File.basename(basename_without_params, tarball_path.extname)
+
+ IO.popen("#{tool} -f '#{tarball_path}' -c") do |pipe|
+ File.open(target, "wb") do |f|
+ buf = ""
+ f.write(buf) while pipe.read(1024, buf)
+ end
+ end
+ end
+
def stage
case tarball_path.compression_type
when :zip
with_system_path { quiet_safe_system 'unzip', {:quiet_flag => '-qq'}, tarball_path }
chdir
when :gzip_only
- # gunzip writes the compressed data in the location of the original,
- # regardless of the current working directory; the only way to
- # write elsewhere is to use the stdout
- with_system_path do
- target = File.basename(basename_without_params, ".gz")
-
- IO.popen("gunzip -f '#{tarball_path}' -c") do |pipe|
- File.open(target, "wb") do |f|
- buf = ""
- f.write(buf) while pipe.read(1024, buf)
- end
- end
- end
+ with_system_path { buffered_write("gunzip") }
when :bzip2_only
- with_system_path do
- target = File.basename(basename_without_params, ".bz2")
-
- IO.popen("bunzip2 -f '#{tarball_path}' -c") do |pipe|
- File.open(target, "wb") do |f|
- buf = ""
- f.write(buf) while pipe.read(1024, buf)
- end
- end
- end
+ with_system_path { buffered_write("bunzip2") }
when :gzip, :bzip2, :compress, :tar
# Assume these are also tarred
# TODO check if it's really a tar archive