class Envirobly::Aws::S3

def upload_git_objects(objects)

def upload_git_objects(objects)
  pool = Concurrent::FixedThreadPool.new(CONCURRENCY)
  uploaded = Concurrent::AtomicFixnum.new
  objects_count = objects.count
  notifier = Thread.new do
    next unless objects_count > 0
    # Hide cursor
    # print "\e[?25l"
    # $stdout.flush
    loop do
      value = uploaded.value
      print "\rUploading build context files: #{value}/#{objects_count}"
      $stdout.flush
      sleep 0.5
      break if value >= objects_count
    end
    # Show cursor again
    # print "\e[?25h\n"
  end
  objects.each do |(chdir, object_hash)|
    pool.post do
      compress_and_upload_object(object_hash, chdir:)
      uploaded.increment
    end
  end
  pool.shutdown
  pool.wait_for_termination
  notifier.join
end