Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
В инферно любая программа либо просто завершается (если всё в порядке), либо генерирует исключение, значение которого это строка с текстом ошибки. Принято соглашение, по которому эта строка должна начинаться на «fail:» если это ошибка штатная — т.е. приложение не «упало», а просто хочет выйти вернув эту ошибку тому, кто это приложение запустил (обычно это шелл). [...] после завершения запущенной команды [...] текст ошибки-исключения будет находится в переменной окружения $status (префикс «fail:» из него будет автоматически удалён, если текст исключения кроме «fail:» больше ничего не содержал, то в $status будет строка «failed»).
завершение вашего приложения с ошибкой через генерирование исключения позволит штатно перехватить и обработать это исключение в программе, которая вызвала ваш init().
Не всегда нужно писать код реализующий некую функциональность, иногда достаточно задокументировать определённые соглашения, которые позволят получить эту же функциональность без лишних строчек кода. В инферно такие соглашения используются довольно активно, и это опять же позволило много упростить.
alias emu-g='rlwrap -a -r emu-g' действительно делает работу с шеллом инферно намного удобнее! И подсветку синтаксиса для Vim я уже сделал. Так что из недостатков осталась только скорость работы. Впрочем, насчёт неё тоже есть идея что проверить, но быстро это сделать не получится.
Inferno Shell