Argos

Sistema de ejecución de comandos y orquestación de tareas - Nivel 1B de Proyecto Ypsilon

VersionLicense

Argos es una librería base sin dependencias para ejecución de comandos del sistema y gestión de tareas asíncronas.

Arquitectura

Argos forma parte de Proyecto Ypsilon:

┌─────────────────┐
│ NIVEL 3: ARK │
│ Microframework │
│ Global │
└────────┬────────┘
┌────────▼─────────┐
│ NIVEL 2: AEGIS │
│ CLI/TUI │
│ Framework │
└────┬─────┬───────┘
│ │
┌─────────────┘ └─────────────┐
│ │
┌──────▼────────┐ ┌─────────▼──────┐
│ NIVEL 1A: │ │ NIVEL 1B: │
│ AURORA │ │ ARGOS │
│ Formatting & │ │ Execution & │
│ Rendering │ │ Orchestration │
└───────────────┘ └────────────────┘
BASE BASE
(sin deps) (sin deps) ← ESTÁS AQUÍ

Características

Instalación

Agrega a tu mix.exs:

def deps do
[
{:argos, "~> 1.0.0"}
]
end

Uso Rápido

Ejecución de comandos

# Ejecución simple
result = Argos.exec_command("ls", ["-la"])
if result.success? do
IO.puts("Output: #{result.output}")
end
# Ejecución con sudo
result = Argos.exec_sudo("systemctl restart nginx")
# Ejecución interactiva
result = Argos.exec_interactive("vim", ["config.txt"])
# Ejecución básica sin logging
result = Argos.exec_raw("pwd")

Tareas en paralelo

tasks = [
{"compile", "mix compile"},
{"test", {:function, &run_tests/0}},
{"lint", "mix credo --strict"}
]
result = Argos.run_parallel(tasks, max_concurrency: 2)
IO.inspect(result.results)

Logging estructurado

# Logging simple
Argos.log(:info, "Operation completed")
# Logging con metadata
Argos.log(:info, "Task completed", task_id: 123, duration: 1500)
# Logging de comandos
Argos.log_command("ls -la", 0, 250, "total 8...")

API Principal

Ejecución de Comandos

Tareas Asíncronas

Logging

Gestión de Procesos

Módulos Principales

Estructuras de Datos

CommandResult

%Argos.Structs.CommandResult{
command: "ls -la",
args: [],
output: "total 8\n-rw-r--r--...",
exit_code: 0,
duration: 150,
success?: true,
error: nil
}

TaskResult

%Argos.Structs.TaskResult{
task_name: "compile",
result: %CommandResult{},
duration: 2500,
success?: true,
error: nil
}

Uso como CLI

Argos también puede usarse como una herramienta de línea de comandos independiente:

# Ejecutar un comando
argos exec ls -la
# Ejecutar con sudo
argos sudo "systemctl restart nginx"
# Ejecutar comando sin logging adicional
argos raw "pwd"
# Ejecutar tareas en paralelo
argos parallel --task "compile:mix compile" --task "test:mix test"
# Matar un proceso
argos kill "process_name"
# Listar procesos
argos ps

Licencia

Apache 2.0 - Consulta el archivo LICENSE para más detalles.