class ReactOnRails::Dev::FileManager

def cleanup_overmind_sockets

def cleanup_overmind_sockets
  return false if overmind_running?
  socket_files = [".overmind.sock", "tmp/sockets/overmind.sock"]
  cleaned_any = false
  socket_files.each do |socket_file|
    cleaned_any = true if remove_file_if_exists(socket_file, "stale socket")
  end
  cleaned_any
end

def cleanup_rails_pid_file

def cleanup_rails_pid_file
  server_pid_file = "tmp/pids/server.pid"
  return false unless File.exist?(server_pid_file)
  pid_content = File.read(server_pid_file).strip
  begin
    pid = Integer(pid_content)
    # PIDs must be > 1 (0 is kernel, 1 is init)
    if pid <= 1
      remove_file_if_exists(server_pid_file, "stale Rails pid file")
      return true
    end
  rescue ArgumentError, TypeError
    remove_file_if_exists(server_pid_file, "stale Rails pid file")
    return true
  end
  return false if process_running?(pid)
  remove_file_if_exists(server_pid_file, "stale Rails pid file")
end

def cleanup_stale_files

def cleanup_stale_files
  socket_cleanup = cleanup_overmind_sockets
  pid_cleanup = cleanup_rails_pid_file
  socket_cleanup || pid_cleanup
end

def overmind_running?

def overmind_running?
  !`pgrep -f "overmind" 2>/dev/null`.split("\n").empty?
end

def process_running?(pid)

def process_running?(pid)
  Process.kill(0, pid)
  true
rescue Errno::ESRCH, ArgumentError, RangeError
  # Process doesn't exist or invalid PID
  false
rescue Errno::EPERM
  # Process exists but we don't have permission to signal it
  true
end

def remove_file_if_exists(file_path, description)

def remove_file_if_exists(file_path, description)
  return false unless File.exist?(file_path)
  puts "   🧹 Cleaning up #{description}: #{file_path}"
  File.delete(file_path)
  true
rescue StandardError
  false
end