def extract(options = {})
raise Zip::EntryError, 'link_target is nil' if link_target.nil?
file_path = options.has_key?(:file_path) ?
options[:file_path].to_s :
@zip_path
restore_permissions = options.has_key?(:permissions) ?
options[:permissions] :
false
restore_ownerships = options.has_key?(:ownerships) ?
options[:ownerships] :
false
parent_dir = ::File.dirname(file_path)
FileUtils.mkdir_p(parent_dir) unless ::File.exist?(parent_dir)
::File.symlink(link_target, file_path)
begin
::File.lchmod(mode, file_path) if restore_permissions
rescue NotImplementedError
end
begin
::File.lchown(uid, gid, file_path) if restore_ownerships
rescue NotImplementedError
end
nil
end