Разработчики ПО, как правило, не представляют себе жизни без командной строки, а консольные приложения используются везде, где только можно. Python, Ruby, Erlang и Elixir дают разработчикам замечательные инструменты командной строки, называемые как раз консольными приложениями.
В этой статье рассказывается, как создавать свои консольные приложения, для чего Elixir подходит как нельзя лучше.
Создание приложения
Создадим новый проект с помощью mix.
Откройте файл lib/awesome_cli.ex, где вы увидите нечто подобное:
Покажите, кто тут крутой программист: добавьте в проект вывод сообщения «Hello World».
После этого запустите mix escript.build для сборки проекта.
Возможно, возникнет такая ошибка:
Попробуем пойти другим путём — откроем файл mix.exs.
Перезапустим mix escript.build, после чего mix выполнит компиляцию файла awesome_cli.ex и создаст файл Elixir.AwesomeCli.beam и исполняемый файл awesome_cli в директории _build/dev/lib/awesome_cli/ebin. Откроем исполняемый файл.
Вот вы и создали своё первое работающее приложение на Elixir!
Парсинг аргументов
Нам повезло, что для парсинга аргументов интерфейса командной строки в Elixir имеется модуль OptionParser. Воспользуемся им, чтобы создать хитроумный инструмент командной строки, который бы получал один или два аргумента от пользователя.
Первым делом научим инструмент приветствовать пользователя с заданным именем. Вот что мы сделаем:
Откройте файл lib/awesome_cli.ex и добавьте в него следующий код:
Оператор |> используется для передачи аргумента в функцию parse_args, а парсинг аргументов проводится с помощью OptionParser.parse. Вывод осуществлён для одного из аргументов. Если сейчас снова запустить mix escript.build, то получится следующее:
Здорово, правда? Теперь, чтобы сделать CLI ещё круче, добавим в него справочное сообщение. Так пользователь поймёт, как с ним обращаться. Для этого воспользуемся конструкцией case и проведём сопоставление с образцом.
Перезапустим mix escript.build ещё раз и выполним файл с помощью --help.
Последний штрих
Давайте немного перестроим код. Сначала, сделаем так, чтобы функция parse_args выполняла только парсинг аргументов и возвращаемый ею результат можно было бы использовать в другой функции.
Перезапустите mix escript.build и попробуйте его выполнить.
Заключение
Мы рассмотрели, как создавать простые консольные приложения посредством OptionParser и как заставить код работать с помощью mix escript.build. И пусть приведённый пример не изобилует сложными конструкциями, но даже на нём видно, что создавать консольные приложения в Elixir — просто и очень удобно.
Один-два раза в неделю присылаем тёплые письма об Эликсире: переводы самых интересных статей до их появления в открытом доступе, анонсы событий и вкусные бонусы.
Обязательно подтверди почту, перейдя по ссылке в письме, иначе мы не сможем делиться с тобой полезностями.