Sha256: eaebc290c497515d291d8c60f55fdedd4274f1ea7d1a2576557ce0eee571e84f

Contents?: true

Size: 1.31 KB

Versions: 75

Compression:

Stored size: 1.31 KB

Contents

require 'fileutils'

module Dockly::Util::Tar
  extend self

  def is_tar?(path)
    if File.size(path) < 262
      return false
    end
    magic = nil
    File.open(path, "r") do |f|
      f.read(257)
      magic = f.read(5)
    end
    magic == "ustar"
  end

  def is_gzip?(path)
    if File.size(path) < 2
      return false
    end
    magic = nil
    File.open(path, "r") do |f|
      magic = f.read(2)
    end
    magic = magic.unpack('H*')[0]
    magic == "1f8b"
  end

  # Creates a tar file in memory recursively
  # from the given path.
  #
  # Returns a StringIO whose underlying String
  # is the contents of the tar file.
  def tar(path, output)
    FileUtils.mkdir_p(File.dirname(output))
    puts "tarring #{path} to #{output}"
    tar_command = "tar -cf #{output} -C #{File.dirname(path)} #{File.basename(path)}"
    puts "Tar Command: #{tar_command}"
    IO.popen(tar_command) do |io|
      puts io.read
    end
    File.open(output, 'rb+')
  end

  # untars the given IO into the specified
  # directory
  def untar(input_io, destination)
    puts "untarring #{input_io.path} to #{destination}"
    FileUtils.mkdir_p(destination)
    untar_command = "tar -xf #{input_io.path} -C #{destination}"
    puts "Untar command: #{untar_command}"
    IO.popen(untar_command) do |io|
      puts io.read
    end
    input_io
  end
end

Version data entries

75 entries across 75 versions & 1 rubygems

Version Path
dockly-4.4.1 lib/dockly/util/tar.rb
dockly-4.4.0 lib/dockly/util/tar.rb
dockly-4.3.0 lib/dockly/util/tar.rb
dockly-4.2.0 lib/dockly/util/tar.rb
dockly-4.1.0 lib/dockly/util/tar.rb
dockly-4.0.0 lib/dockly/util/tar.rb
dockly-3.4.1 lib/dockly/util/tar.rb
dockly-3.4.0 lib/dockly/util/tar.rb
dockly-3.3.0 lib/dockly/util/tar.rb
dockly-3.2.0.pre.1 lib/dockly/util/tar.rb
dockly-3.1.1 lib/dockly/util/tar.rb
dockly-3.1.0 lib/dockly/util/tar.rb
dockly-3.0.5 lib/dockly/util/tar.rb
dockly-3.0.4 lib/dockly/util/tar.rb
dockly-3.0.3 lib/dockly/util/tar.rb
dockly-3.0.2 lib/dockly/util/tar.rb
dockly-3.0.1 lib/dockly/util/tar.rb
dockly-3.0.0 lib/dockly/util/tar.rb
dockly-2.7.2 lib/dockly/util/tar.rb
dockly-2.7.1 lib/dockly/util/tar.rb