ES

Crear una aplicación de línea de comandos

Una aplicación CLI de JumPHP es un programa que vive en el terminal: comandos (todo add "Comprar leche") escritos con Symfony Console y pantallas completas de texto (listas, campos, barras de progreso, teclado) con symfony/tui. El mismo proyecto da un ejecutable para Linux, Windows y macOS.

Crear el proyecto

En el JumPHP IDE: New Project y luego CLI app. En la línea de comandos:

bin/jumphp cli:new todo "Todo"
bin/jumphp install todo

El ejemplo es una lista de tareas: src/Main.php (la aplicación y sus comandos), src/Command/ (una clase por comando), src/Ui/ (las pantallas completas).

Ejecutar y probar

bin/jumphp run todo                          # la pantalla completa, en este terminal
bin/jumphp run todo add "Comprar leche"        # un comando
bin/jumphp test todo                         # php -l, phpstan, PHPUnit
bin/jumphp shot todo 2                       # la pantalla como texto: var/screenshots/screen.txt

Sin comando, la aplicación abre su pantalla cuando la salida es un terminal y muestra una lista simple cuando va a un archivo u otro programa: sigue sirviendo en scripts.

Las pruebas ejecutan los comandos (ApplicationTester) y las pantallas en un terminal virtual (VirtualTerminal): pulsan teclas y leen lo que vería el usuario.

Los datos

La aplicación guarda sus datos en la carpeta del usuario (~/.local/share/<id>, %APPDATA%\<id>, ~/Library/Application Support/<id>), y en var/ durante el desarrollo.

Distribuir

bin/jumphp export:standalone todo --linux --windows --macos

Un ejecutable por sistema, sin nada que instalar; en Windows es un programa de consola. bin/jumphp installer todo también crea instaladores (Windows, Linux).

En Windows, los comandos y las pantallas a pantalla completa funcionan en cualquier consola (Símbolo del sistema, PowerShell, Windows Terminal).

En jumphp.net

Publicada en jumphp.net, la aplicación se usa en un terminal de la página: se escriben sus comandos y responde como en un terminal real. Sus preguntas esperan la respuesta escrita (Ctrl+C las cancela) y sus pantallas completas reciben las teclas una a una (flechas, Intro, Escape). El esqueleto ya lo hace: src/Ui/WebTerminal.php y src/Ui/WebLoop.php, elegidos por WindowsTerminal::create() cuando JUMPHP_WEB_TERMINAL vale 1. Sus datos (var/) se quedan en el navegador del visitante.