IT

Creare un'applicazione a riga di comando

Un'app CLI JumPHP è un programma che vive nel terminale: comandi (todo add "Comprare il latte") scritti con Symfony Console e schermate a tutto schermo in testo (liste, campi, barre di avanzamento, tastiera) con symfony/tui. Lo stesso progetto dà un eseguibile per Linux, Windows e macOS.

Creare il progetto

Nel JumPHP IDE: New Project, poi CLI app. Da riga di comando:

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

L'esempio è una lista di attività: src/Main.php (l'applicazione e i suoi comandi), src/Command/ (una classe per comando), src/Ui/ (le schermate a tutto schermo).

Avviare e testare

bin/jumphp run todo                          # la schermata a tutto schermo, in questo terminale
bin/jumphp run todo add "Comprare il latte"        # un comando
bin/jumphp test todo                         # php -l, phpstan, PHPUnit
bin/jumphp shot todo 2                       # la schermata come testo: var/screenshots/screen.txt

Senza comando, l'app apre la sua schermata quando l'uscita è un terminale e stampa una semplice lista quando va in un file o in un altro programma: resta usabile negli script.

I test eseguono i comandi (ApplicationTester) e le schermate su un terminale virtuale (VirtualTerminal): premono tasti e leggono ciò che vedrebbe l'utente.

I dati

L'app salva i suoi dati nella cartella dell'utente (~/.local/share/<id>, %APPDATA%\<id>, ~/Library/Application Support/<id>), e in var/ durante lo sviluppo.

Distribuire

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

Un eseguibile per sistema, niente da installare; su Windows è un programma da console. bin/jumphp installer todo crea anche degli installer (Windows, Linux).

Su Windows, i comandi e le schermate a schermo intero funzionano in qualsiasi console (Prompt dei comandi, PowerShell, Windows Terminal).

Su jumphp.net

Pubblicata su jumphp.net, l'app si usa in un terminale nella pagina: si digitano i suoi comandi e risponde come in un vero terminale. Le sue domande aspettano la risposta digitata (Ctrl+C le annulla) e le sue schermate a tutto schermo ricevono i tasti uno a uno (frecce, Invio, Esc). Lo scheletro lo fa già: src/Ui/WebTerminal.php e src/Ui/WebLoop.php, scelti da WindowsTerminal::create() quando JUMPHP_WEB_TERMINAL vale 1. I suoi dati (var/) restano nel browser del visitatore.