PL

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.