class Mixlib::Archive::LibArchive

def create(files, gzip: false)

gzip:: should the archive be gzipped?
=== Parameters

Creates an archive with the given set of +files+
def create(files, gzip: false)
  compression = gzip ? ::Archive::COMPRESSION_GZIP : ::Archive::COMPRESSION_NONE
  # "PAX restricted" will use PAX extensions when it has to, but will otherwise
  # use ustar for maximum compatibility
  format = ::Archive::FORMAT_TAR_PAX_RESTRICTED
  ::Archive.write_open_filename(archive, compression, format) do |tar|
    files.each do |fn|
      tar.new_entry do |entry|
        content = nil
        entry.pathname = fn
        stat = File.lstat(fn)
        if File.file?(fn)
          content = File.read(fn)
          entry.size = content.bytesize
        end
        entry.mode = stat.mode
        entry.filetype = resolve_type(stat.ftype)
        entry.atime = stat.atime
        entry.mtime = stat.mtime
        entry.symlink = File.readlink(fn) if File.symlink?(fn)
        tar.write_header(entry)
        tar.write_data(content) unless content.nil?
      end
    end
  end
end