49 lines
1.3 KiB
Ruby
49 lines
1.3 KiB
Ruby
module Ark
|
|
class UnzipCommandBuilder
|
|
def unpack
|
|
if resource.strip_components > 0
|
|
unzip_with_strip_components
|
|
else
|
|
"unzip -q -o #{resource.release_file} -d #{resource.path}"
|
|
end
|
|
end
|
|
|
|
def dump
|
|
"unzip -j -q -o \"#{resource.release_file}\" -d \"#{resource.path}\""
|
|
end
|
|
|
|
def cherry_pick
|
|
cmd = "unzip -t #{resource.release_file} \"*/#{resource.creates}\" ; stat=$? ;"
|
|
cmd += 'if [ $stat -eq 11 ] ; then '
|
|
cmd += "unzip -j -o #{resource.release_file} \"#{resource.creates}\" -d #{resource.path} ;"
|
|
cmd += 'elif [ $stat -ne 0 ] ; then false ;'
|
|
cmd += 'else '
|
|
cmd += "unzip -j -o #{resource.release_file} \"*/#{resource.creates}\" -d #{resource.path} ;"
|
|
cmd += 'fi'
|
|
cmd
|
|
end
|
|
|
|
def initialize(resource)
|
|
@resource = resource
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :resource
|
|
|
|
def unzip_with_strip_components
|
|
tmpdir = make_temp_directory
|
|
strip_dir = '*/' * resource.strip_components
|
|
cmd = "unzip -q -o #{resource.release_file} -d #{tmpdir}"
|
|
cmd += " && rsync -a #{tmpdir}/#{strip_dir} #{resource.path}"
|
|
cmd += " && rm -rf #{tmpdir}"
|
|
cmd
|
|
end
|
|
|
|
def make_temp_directory
|
|
require 'tmpdir'
|
|
Dir.mktmpdir
|
|
end
|
|
end
|
|
end
|