module FeduxOrgStdlib::Zipper
Public Class Methods
unzip(source_file, destination_directory = Dir.getwd)
click to toggle source
# File lib/fedux_org_stdlib/zipper.rb, line 7 def unzip(source_file, destination_directory = Dir.getwd) return unless destination_directory Zip::File.open(source_file) do |z| z.each do |e| new_path = File.join(destination_directory, e.name) FileUtils.mkdir_p File.dirname(new_path) e.extract(new_path) end end end
zip(source_directory, destination_file, prefix: '', executables: [])
click to toggle source
# File lib/fedux_org_stdlib/zipper.rb, line 20 def zip(source_directory, destination_file, prefix: '', executables: []) Zip::File.open(destination_file, Zip::File::CREATE) do |z| Dir.glob(File.join(source_directory, '**', '*')).each do |filename| paths = [] paths << Pathname.new(prefix) unless prefix.blank? paths << Pathname.new(filename).relative_path_from(Pathname.new(source_directory)) z.add(File.join(*paths), filename) z.file.chmod(0755, File.join(*paths)) if File.executable? filename z.file.chmod(0755, File.join(*paths)) if executables.any? { |f| Regexp.new(f) === filename } end end end
Private Instance Methods
unzip(source_file, destination_directory = Dir.getwd)
click to toggle source
# File lib/fedux_org_stdlib/zipper.rb, line 7 def unzip(source_file, destination_directory = Dir.getwd) return unless destination_directory Zip::File.open(source_file) do |z| z.each do |e| new_path = File.join(destination_directory, e.name) FileUtils.mkdir_p File.dirname(new_path) e.extract(new_path) end end end
zip(source_directory, destination_file, prefix: '', executables: [])
click to toggle source
# File lib/fedux_org_stdlib/zipper.rb, line 20 def zip(source_directory, destination_file, prefix: '', executables: []) Zip::File.open(destination_file, Zip::File::CREATE) do |z| Dir.glob(File.join(source_directory, '**', '*')).each do |filename| paths = [] paths << Pathname.new(prefix) unless prefix.blank? paths << Pathname.new(filename).relative_path_from(Pathname.new(source_directory)) z.add(File.join(*paths), filename) z.file.chmod(0755, File.join(*paths)) if File.executable? filename z.file.chmod(0755, File.join(*paths)) if executables.any? { |f| Regexp.new(f) === filename } end end end