Sha256: 87bba8683411ea8a7677f1d29129693040c79339fd24a92a3eb09ebefc2e5f52
Contents?: true
Size: 1.09 KB
Versions: 12
Compression:
Stored size: 1.09 KB
Contents
# frozen_string_literal: true require 'tempfile' module Dpl class Zip < Struct.new(:src, :dest, :opts) ZIP_EXT = %w[.zip .jar].freeze def initialize(*) require 'zip' super end def zip if zip_file? File.new(src) elsif dir? zip_dir else zip_file end end def zip_dir create(Dir.glob(*glob).reject { |path| dir?(path) }) end def zip_file create([src]) end def create(files) ::Zip::File.open(dest, ::Zip::File::CREATE) do |zip| files.each do |file| zip.add(file.sub("#{src}/", ''), file) end end File.new(dest) end def zip_file? exts.include?(File.extname(src)) end def dir?(path = src) File.directory?(path) end def copy FileUtils.cp(src, dest) end def glob glob = ["#{src}/**/*"] glob << File::FNM_DOTMATCH if dot_match? glob end def dot_match? opts[:dot_match] end def exts opts[:exts] ||= ZIP_EXT end def opts super || {} end end end
Version data entries
12 entries across 12 versions & 2 rubygems