Osumi Framework
v9.7.4 GitHub

CLI (Interfaz de Línea de Comandos)

Osumi Framework proporciona una potente interfaz de línea de comandos para automatizar tareas de desarrollo, administrar la base de datos y ejecutar scripts personalizados. El punto de entrada para todos los comandos CLI es el archivo of, ubicado en la raíz del proyecto.


Uso

Los comandos se ejecutan usando PHP desde la terminal:

php of <opcion> [parámetros]

Si el archivo se ejecuta sin parámetros, se muestra la lista de opciones disponibles (tanto las del Framework como las creadas por el usuario).

Comandos Principales

El framework incluye varias tareas integradas:


Tareas personalizadas

Puede ampliar la CLI creando sus propias tareas. Cualquier clase ubicada en src/Task/ que extienda OTask aparecerá automáticamente como una opción disponible en el comando of.

Creación de una tarea

Una tarea requiere dos elementos principales:

  1. __toString(): Devuelve una breve descripción de la tarea (mostrada en el menú de ayuda).
  2. run(array $options): La lógica que se ejecutará.

Ejemplo: AddUserTask.php

<?php declare(strict_types=1);

namespace Osumi\OsumiFramework\App\Task;

use Osumi\OsumiFramework\Core\OTask;
use Osumi\OsumiFramework\App\Model\User;

class AddUserTask extends OTask {
  public function __toString() {
    return "addUser: Tarea para crear nuevos usuarios";
  }

  public function run(array $options=[]): void {
    $name = $options['name'] ?? $options[0] ?? null;

    if (is_null($name)) {
      echo "Error: Se requiere el nombre.\n";
      return;
    }

    $u = new User();
    $u->name = $name; $u->save();

    echo "Usuario " . $nombre . " creado correctamente.\n";
  }
}


Manejo de argumentos

El método run recibe un array $options que admite dos estilos de entrada:

1. Argumentos posicionales

Se pasan directamente después del nombre del comando.

php of addUser "John Doe"
# $options = [0 => "John Doe"]

2. Parámetros con nombre

Se utiliza la sintaxis --key value. Esto genera un array asociativo.

php of addUser --name "John Doe"
# $options = ["name" => "John Doe"]

Nota sobre $options$: El parámetro $options siempre es un array; no se pueden usar DTOs en las tareas.


Características de las tareas

Las clases que extienden OTask tienen acceso a varias utilidades integradas:


Mejores prácticas