Tworzenie aplikacji wiersza poleceń
Aplikacja CLI JumPHP to program, który działa w terminalu: polecenia (todo add "Kupić mleko") napisane w Symfony Console oraz pełnoekranowe ekrany tekstowe (listy, pola, paski postępu, klawiatura) w symfony/tui. Z jednego projektu powstaje plik wykonywalny dla Linuksa, Windows i macOS.
Tworzenie projektu
W JumPHP IDE: New Project, następnie CLI app. W wierszu poleceń:
bin/jumphp cli:new todo "Todo"
bin/jumphp install todo
Przykład to lista zadań: src/Main.php (aplikacja i jej polecenia), src/Command/ (jedna klasa na polecenie), src/Ui/ (ekrany pełnoekranowe).
Uruchamianie i testy
bin/jumphp run todo # ekran pełnoekranowy, w tym terminalu
bin/jumphp run todo add "Kupić mleko" # polecenie
bin/jumphp test todo # php -l, phpstan, PHPUnit
bin/jumphp shot todo 2 # ekran jako tekst: var/screenshots/screen.txt
Bez polecenia aplikacja otwiera swój ekran, gdy wyjściem jest terminal, a wypisuje zwykłą listę, gdy trafia do pliku lub innego programu: nadaje się do skryptów.
Testy wykonują polecenia (ApplicationTester) i ekrany na wirtualnym terminalu (VirtualTerminal): naciskają klawisze i czytają to, co zobaczyłby użytkownik.
Dane
Aplikacja przechowuje dane w folderze użytkownika (~/.local/share/<id>, %APPDATA%\<id>, ~/Library/Application Support/<id>), a podczas tworzenia w var/.
Dystrybucja
bin/jumphp export:standalone todo --linux --windows --macos
Jeden plik wykonywalny na system, nic do instalowania; w Windows to program konsolowy. bin/jumphp installer todo tworzy też instalatory (Windows, Linux).
W systemie Windows polecenia i ekrany pełnoekranowe działają w każdej konsoli (Wiersz polecenia, PowerShell, Windows Terminal).
Na jumphp.net
Opublikowana na jumphp.net aplikacja działa w terminalu na stronie: wpisuje się jej polecenia, a ona odpowiada jak w prawdziwym terminalu. Jej pytania czekają na wpisaną odpowiedź (Ctrl+C je anuluje), a ekrany pełnoekranowe dostają klawisze jeden po drugim (strzałki, Enter, Escape). Szkielet już to robi: src/Ui/WebTerminal.php i src/Ui/WebLoop.php, wybierane przez WindowsTerminal::create(), gdy JUMPHP_WEB_TERMINAL ma wartość 1. Jej dane (var/) zostają w przeglądarce odwiedzającego.