# 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