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.