# 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(dest_path, entry, _) File.join(dest_path, entry.full_name) end def decompression_results_path(dest_path, _) dest_path end end end