UK

Створити застосунок командного рядка

CLI-застосунок JumPHP — це програма, що працює в терміналі: команди (todo add "Купити молоко") на Symfony Console та повноекранні текстові екрани (списки, поля, індикатори прогресу, клавіатура) на symfony/tui. З одного проєкту виходить виконуваний файл для Linux, Windows і macOS.

Створити проєкт

У JumPHP IDE: New Project, потім CLI app. У командному рядку:

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

Приклад — список завдань: src/Main.php (застосунок і його команди), src/Command/ (один клас на команду), src/Ui/ (повноекранні екрани).

Запуск і тести

bin/jumphp run todo                          # повноекранний екран у цьому терміналі
bin/jumphp run todo add "Купити молоко"        # команда
bin/jumphp test todo                         # php -l, phpstan, PHPUnit
bin/jumphp shot todo 2                       # екран як текст: var/screenshots/screen.txt

Без команди застосунок відкриває свій екран, коли вивід іде в термінал, і друкує простий список, коли вивід іде у файл чи іншу програму: його можна використовувати в скриптах.

Тести виконують команди (ApplicationTester) та екрани на віртуальному терміналі (VirtualTerminal): натискають клавіші й читають те, що побачив би користувач.

Дані

Застосунок зберігає дані в теці користувача (~/.local/share/<id>, %APPDATA%\<id>, ~/Library/Application Support/<id>), а під час розробки — у var/.

Поширення

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

Один виконуваний файл на систему, нічого не треба встановлювати; у Windows це консольна програма. bin/jumphp installer todo також створює інсталятори (Windows, Linux).

У Windows команди та повноекранні екрани працюють у будь-якій консолі (командний рядок, PowerShell, Windows Terminal).

На jumphp.net

Опублікований на jumphp.net застосунок працює в терміналі на сторінці: там вводять його команди, і він відповідає як у справжньому терміналі. Його запитання чекають на введену відповідь (Ctrl+C скасовує їх), а повноекранні екрани отримують клавіші по одній (стрілки, Enter, Escape). Каркас уже це робить: src/Ui/WebTerminal.php і src/Ui/WebLoop.php, їх обирає WindowsTerminal::create(), коли JUMPHP_WEB_TERMINAL дорівнює 1. Його дані (var/) лишаються в браузері відвідувача.