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.