Следующая мысль — сделать что-то на ncurses. Но придётся делать целую прослойку для стандартных элементов интерфейса и взаимодействия их с приложением. Тоже долгая история. Но на её пути родилась такая цепочка. Для языка разметки форм хорошо бы задействовать тот же HTML → Надо писать хотя бы примитивный парсер форм → Хорошо бы для этого задействовать уже имеющиеся консольные браузеры → Консольный браузер итак может показывать HTML-страницы, выданные скриптом и отсылать запросы в него же, при этом в PHP5.4 появился неплохой встроенный Web-сервер.
И, вот, основная идея готова. Скрипт запускает web-сервер, потом — консольный браузер с запросом к этому серверу. Работаем привычно, как с любым Web-приложением, когда завершаем работу и выходим из браузера, сервер убивается. Получается удобно, красиво (для консоли) и без велосипедостроения.
А вот на практической реализации уткнулся в проблемы.
Хочется иметь автономный запускающий скрипт. С состоящим из двух частей — никаких проблем. Например, bash-запускалка и php-роутер, который проинициирует систему. Но удобно, когда скрипт один. Соответственно, в голову приходит два варианта:
— Комбинированный скрип, запускающийся как bash, продолжающийся как php. Ну, грубо говоря (концепт):
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- #!/bin/bash
- #<?PHP /*
- php -S localhost:12345 $0 &> /dev/null &
- sleep 0.2 # Пауза, чтобы сервер успел стартовать
- lynx http://localhost:12345 # запуск браузера
- killall php # закрытие сервера
- exit
- */
- // Тут пошёл PHP-код роутера
- echo "Run!";