NL

Een opdrachtregel-app maken

Een JumPHP-CLI-app is een programma dat in de terminal leeft: opdrachten (todo add "Melk kopen") geschreven met Symfony Console, en schermvullende tekstschermen (lijsten, velden, voortgangsbalken, toetsenbord) met symfony/tui. Hetzelfde project levert één uitvoerbaar bestand voor Linux, Windows en macOS.

Het project maken

In de JumPHP IDE: New Project, dan CLI app. Op de opdrachtregel:

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

Het voorbeeld is een takenlijst: src/Main.php (de applicatie en haar opdrachten), src/Command/ (één klasse per opdracht), src/Ui/ (de schermvullende schermen).

Starten en testen

bin/jumphp run todo                          # het schermvullende scherm, in deze terminal
bin/jumphp run todo add "Melk kopen"        # een opdracht
bin/jumphp test todo                         # php -l, phpstan, PHPUnit
bin/jumphp shot todo 2                       # het scherm als tekst: var/screenshots/screen.txt

Zonder opdracht opent de app haar scherm als de uitvoer een terminal is, en toont ze een eenvoudige lijst als die naar een bestand of ander programma gaat: ze blijft bruikbaar in scripts.

De tests spelen de opdrachten (ApplicationTester) en de schermen op een virtuele terminal (VirtualTerminal): ze typen toetsen en lezen wat de gebruiker zou zien.

De gegevens

De app bewaart haar gegevens in de map van de gebruiker (~/.local/share/<id>, %APPDATA%\<id>, ~/Library/Application Support/<id>), en in var/ tijdens het ontwikkelen.

Verspreiden

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

Eén uitvoerbaar bestand per systeem, niets te installeren; op Windows is het een consoleprogramma. bin/jumphp installer todo maakt er ook installers van (Windows, Linux).

Op Windows werken de opdrachten en de schermvullende schermen in elke console (Opdrachtprompt, PowerShell, Windows Terminal).

Op jumphp.net

Gepubliceerd op jumphp.net draait de app in een terminal op de pagina: je typt de opdrachten en hij antwoordt zoals in een echte terminal. Zijn vragen wachten op het getypte antwoord (Ctrl+C annuleert ze) en zijn volledige schermen krijgen de toetsen één voor één (pijlen, Enter, Escape). Het skelet doet dat al: src/Ui/WebTerminal.php en src/Ui/WebLoop.php, gekozen door WindowsTerminal::create() als JUMPHP_WEB_TERMINAL 1 is. Zijn gegevens (var/) blijven in de browser van de bezoeker.