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

Version Path
dpl-2.0.5.3 lib/dpl/helper/zip.rb
dpl-2.0.5.3.beta.1 lib/dpl/helper/zip.rb
dpl-2.0.5.2 lib/dpl/helper/zip.rb
dpl-2.0.5.2.beta.1 lib/dpl/helper/zip.rb
dpl-2.0.5.1 lib/dpl/helper/zip.rb
dpl-2.0.5.beta.2.1 lib/dpl/helper/zip.rb
dpl-2.0.5.beta.2 lib/dpl/helper/zip.rb
dpl-2.0.5 lib/dpl/helper/zip.rb
dpl-2.0.5.beta.1 lib/dpl/helper/zip.rb
dpl-2.0.5.beta lib/dpl/helper/zip.rb
travis_dpl_test-2.0.3.beta.4.ror.1 lib/dpl/helper/zip.rb
travis_dpl_test-2.0.3.beta.4.ror lib/dpl/helper/zip.rb