Sha256: 175f25766a6ef84fb8e5e5e7c248bcb6dfa690071d7669fada4e1c24ea5ca997

Contents?: true

Size: 1.25 KB

Versions: 27

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

require 'avm/files/info'
require 'eac_ruby_utils/core_ext'

module Ehbrs
  module Fs
    class CompressedPackage < ::Avm::Files::Info
      MIME_TYPES = {
        'application/zip' => :zip,
        'application/x-7z-compressed' => :sevenzip,
        'application/x-rar' => :rar,
        'application/x-tar' => :tar
      }.freeze

      def extract_to(target)
        target = target.to_pathname
        target.mkpath
        sub_extract_to(target)
      end

      private

      def sub_extract_to(target)
        MIME_TYPES[content_type.mime_type].if_present do |v|
          return send("#{v}_extract_command", target).execute!
        end
        raise "Unknown how to extract \"#{path}\" (#{content_type})"
      end

      def sevenzip_extract_command(target_dir)
        ::Ehbrs::Executables.sevenzip.command('x', path, '-o', target_dir)
      end

      def tar_extract_command(target_dir)
        ::Ehbrs::Executables.tar.command('-xf', path, '-C', target_dir)
      end

      def rar_extract_command(target_dir)
        ::Ehbrs::Executables.rar.command('x', path.expand_path).chdir(target_dir)
      end

      def zip_extract_command(target_dir)
        ::Ehbrs::Executables.unzip.command(path, '-d', target_dir)
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
ehbrs-tools-0.26.0 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.25.1 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.25.0 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.24.0 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.23.1 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.23.0 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.22.0 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.21.0 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.20.0 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.19.0 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.18.0 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.17.0 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.16.5 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.16.4 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.16.3 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.16.2 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.16.1 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.16.0 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.15.0 lib/ehbrs/fs/compressed_package.rb
ehbrs-tools-0.14.1 lib/ehbrs/fs/compressed_package.rb