Skip to content
/ Bash Public

Custom Command-Line Shell Implementation in Java

Notifications You must be signed in to change notification settings

shuuuurik/Bash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bash

Простой интерпретатор командной строки, поддерживающий команды:

  • 🐱 cat [FILE] – выводит содержимое файла на экран
  • 😱 echo – выводит на экран свои аргументы
  • 🚽 wc [FILE] – выводит количество строк, слов и байт в файле
  • 🎁 pwd – выводит текущую директорию
  • 🚪 exit – выходит из интерпретатора
  • 🔍 grep – программа для поиска шаблонов в файлах
    • Usage: grep [option]... [pattern] [file]
    • Флаги:
      • -i – выполнять поиск без учёта регистра
      • -c – выводить только количество выбранных строк
      • -l – выводить только имена файлов, содержащих выбранные строки
      • -w – искать выражение как отдельное слово
      • -A num – вывести num строк последующего контекста после каждого совпадения

Возможности

  • Конвейеры (оператор |).
  • Переменные сессии.
  • Присваивание переменных (=).
  • Подстановка переменных ($).
  • Переменные окружения.
  • Экранирование (', ").
  • Вызов внешних процессов - TODO.

Начало работы

Предварительные требования

  • Java JDK 21+.
  • Maven 3.x.

Запуск интерпретатора

  1. Перейдите в корневой каталог проекта.
  2. С помощью Maven Exec:
mvn clean compile
mvn exec:java -Dexec.mainClass="com.example.Bash"
  1. С помощью JAR:
mvn clean package
java -jar target/Bash-1.0-SNAPSHOT-jar-with-dependencies.jar  

Стиль кода и линтинг (Checkstyle)

Проект использует Checkstyle для обеспечения единого стиля кода. Конфигурация находится в config/checkstyle/checkstyle.xml.

Запуск Checkstyle

Для запуска линтера и вывода замечаний в консоль выполните mvn clean validate.

Отчет линтера

Отчет будет доступен в target/reports/checkstyle.html после mvn package.

Интеграция Checkstyle в IDE (IntelliJ IDEA)

  1. Установите плагин "CheckStyle-IDEA".
  2. Перейдите в Settings > Tools > Checkstyle.
  3. Добавьте новую конфигурацию, выбрав "Add configuration file", затем "Use a local Checkstyle file".
  4. Укажите путь к config/checkstyle/checkstyle.xml.
  5. Примените настройки. IDE будет подсвечивать нарушения стиля кода.

Тестирование

Юнит-тесты на JUnit 5 и Mockito в src/test/java. Запуск: mvn clean test.

Покрытие кода (Jacoco)

Jacoco используется для измерения покрытия тестами.

Запуск Jacoco

Для проверки только тестов выполните mvn clean test. Для проверки покрытия используйте mvn clean package.

Отчет о покрытии

Отчет находится в target/site/jacoco/index.html после mvn test.

Порог покрытия

Минимальное покрытие инструкций - 80%, отсутствие пропущенных классов. Сборка упадет при несоблюдении (настроено в pom.xml).

Непрерывная интеграция (CI)

Используется GitHub Actions (.github/workflows/ci.yml). Запускается при push в main и pull request в main. Выполняет сборку, тестирование и проверку покрытия.

About

Custom Command-Line Shell Implementation in Java

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages