import subprocess import os import sys import time def main(): print("Iniciando script de arranque del servidor...") # 1. Verificar node_modules if not os.path.exists("node_modules"): print("node_modules no encontrado. Ejecutando npm install...") subprocess.check_call(["npm", "install"]) # 2. Ejecutar npm run dev # Usamos Popen para que el script de python pueda gestionar el proceso o mantenerse vivo si es necesario. # En este entorno, queremos que el comando persista. # Sin embargo, si este script de python termina, el subproceso podrĂ­a morir. # Vamos a ejecutarlo y hacer stream de la salida. print("Ejecutando 'npm run dev'...") try: # shell=True en Windows, pero en Mac/Linux mejor lista de argumentos. # process = subprocess.Popen(["npm", "run", "dev"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, bufsize=1) # Simplemente usaremos run_command del agente para la persistencia real, # pero para cumplir el protocolo, este script lanza el comando. # Si queremos que este script DE PYTHON sea el que corre, debe tener un bucle. process = subprocess.Popen(["npm", "run", "dev"], stdout=sys.stdout, stderr=sys.stderr) process.wait() except KeyboardInterrupt: print("\nDeteniendo servidor...") process.terminate() except Exception as e: print(f"Error al ejecutar el servidor: {e}") sys.exit(1) if __name__ == "__main__": main()