# frozen_string_literal: true require 'rubygems/package' module Compression class Tar < Strategy def extension '.tar' end def compress(path, target_name) tar_filename = sanitize_filename("#{target_name}.tar") Discourse::Utils.execute_command('tar', '--create', '--file', tar_filename, target_name, failure_message: "Failed to tar file.") sanitize_path("#{path}/#{tar_filename}") end private def extract_folder(_entry, _entry_path); end def get_compressed_file_stream(compressed_file_path) file_stream = IO.new(IO.sysopen(compressed_file_path)) tar_extract = Gem::Package::TarReader.new(file_stream) tar_extract.rewind yield(tar_extract) end def build_entry_path(_compressed_file, dest_path, compressed_file_path, entry, _allow_non_root_folder) File.join(dest_path, entry.full_name).tap do |entry_path| FileUtils.mkdir_p(File.dirname(entry_path)) end end end end