96 lines
3.4 KiB
Python
96 lines
3.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Ejemplo de cómo ScriptsManager ejecutaría el hammer_simulator.py
|
|
Este script simula la llamada que haría ScriptsManager
|
|
"""
|
|
|
|
import subprocess
|
|
import sys
|
|
import os
|
|
import tempfile
|
|
|
|
|
|
def simulate_scriptsmanager_execution():
|
|
"""Simula cómo ScriptsManager ejecutaría el hammer simulator"""
|
|
|
|
print("🚀 Simulando ejecución desde ScriptsManager...")
|
|
print("=" * 60)
|
|
|
|
# Crear directorio temporal para datos del usuario/proyecto
|
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
print(f"📁 Directorio de datos: {temp_dir}")
|
|
|
|
# Ruta al script
|
|
script_path = os.path.join(
|
|
"app", "backend", "script_groups", "hammer", "hammer_simulator.py"
|
|
)
|
|
|
|
# Parámetros que pasaría ScriptsManager
|
|
args = [
|
|
sys.executable,
|
|
script_path,
|
|
"--data-dir",
|
|
temp_dir, # Directorio específico del usuario/proyecto
|
|
"--user-level",
|
|
"operator", # Nivel de permisos del usuario
|
|
"--port",
|
|
"5556", # Puerto asignado por ScriptsManager
|
|
"--project-id",
|
|
"project_alpha", # ID del proyecto activo
|
|
"--project-name",
|
|
"project_alpha", # Nombre del proyecto (requerido)
|
|
]
|
|
|
|
print("📋 Parámetros de ejecución:")
|
|
for i in range(1, len(args), 2):
|
|
if i + 1 < len(args):
|
|
print(f" {args[i]}: {args[i+1]}")
|
|
|
|
print("\n🌐 Iniciando servidor Flask...")
|
|
print(" - El navegador se abrirá automáticamente")
|
|
print(" - La interfaz estará disponible en http://127.0.0.1:5556")
|
|
print(" - El sistema de heartbeat mantendrá la sesión activa")
|
|
print(" - Los datos se guardarán en el directorio del proyecto")
|
|
|
|
print("\n⏰ El script se ejecutará por 15 segundos para demostración...")
|
|
print(" (En uso real, se ejecutaría hasta que se cierre la pestaña)")
|
|
|
|
try:
|
|
# Ejecutar el script
|
|
process = subprocess.Popen(
|
|
args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True
|
|
)
|
|
|
|
# Esperar un poco para que se inicie
|
|
import time
|
|
|
|
time.sleep(15)
|
|
|
|
# Terminar el proceso
|
|
process.terminate()
|
|
process.wait(timeout=5)
|
|
|
|
print("\n✅ Ejecución completada exitosamente!")
|
|
print("📊 En uso real:")
|
|
print(" - Los parámetros de simulación se guardarían en el proyecto")
|
|
print(" - Los resultados persistirían entre sesiones")
|
|
print(" - ScriptsManager gestionaría el ciclo de vida automáticamente")
|
|
|
|
except Exception as e:
|
|
print(f"\n❌ Error durante la ejecución: {e}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
simulate_scriptsmanager_execution()
|
|
|
|
print("\n" + "=" * 60)
|
|
print("🎯 Resumen de Integración ScriptsManager")
|
|
print("=" * 60)
|
|
print("✅ Apertura automática del navegador")
|
|
print("✅ Gestión de parámetros desde ScriptsManager")
|
|
print("✅ Persistencia de datos por usuario/proyecto")
|
|
print("✅ Sistema de heartbeat para mantenimiento de sesión")
|
|
print("✅ Endpoints para gestión del ciclo de vida")
|
|
print("✅ Cumplimiento total de especificaciones")
|
|
print("\n🚀 ¡El script está listo para integración con ScriptsManager!")
|