Kotlin CLI

Реализация командной строки bash на kotlin

Поддерживаемая функциональность

  • Одинарные и двойные кавычки (full and weak quoting)
  • Переменные
  • Оператор $
  • Вызов внешних процессов
  • Пайплайны (оператор |)
  • readme.md
  • добавить тесты
  • использовать линтер
  • вынести линтеры, тесты в gradle
  • вынести gradle в CI
  • документация

Реализованные команды

  • cat [FILE] - выводит содержимое файла на экран
  • echo - выводит на экран свои аргументы
  • wc [FILE] - выводит количество строк, слов и байт в файле
  • pwd - выводит текущую директорию
  • exit - выходит из интерпретатора

Скрипты

  • ./gradlew build для компиляции проекта
  • ./gradlew run --console=plain для запуска коммандной строки
  • ./gradlew test для запуска тестов
  • ./gradlew lint для запуска линтера
  • ./gradlew format для запуска форматирования кода

Используемый линтер - ktlint.

В качестве шаблона проектирования используется паттерн "Абстрактная фабрика", она позволяет создавать команды. Для создания новой команды нужно унаследоваться от класса Command и добавить создание комманды в CommandFactory

Процесс обработки новой команды состоит из следующих этапов

  • чтение команды
  • разделение команды на слова, разделяемые кавычками или пробелами
  • замена переменных в словах
  • создание команды
  • проверка правильности ключей
  • исполнение команды