Skip to content

ortophius/bash-build

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bash-build

Псевдо-модульная сборка bash-скриптов

Как использовать?

make

Структура

Проект разделён на три части:

  • Заглавные модули
  • Обычные модули
  • Основной скрипт

В итоговую сборку модули попадают в соответствии с тем, как они перечислены выше. Все модули по умолчанию имеют расширение .bm (bash module). Очередь попадания каждого модуля из каждой группы в сборку определяется в алфавитном порядке. К примеру, a.bm попадёт в борку раньше, чем b.bm.

Заглавные модули

Эти модули попадают в сборку первыми. Как правило, в них содержатся функции, которые используются в других функциях. По умолчанию имена таких файлов начинаются c символа _. Данный префикс можно изменить с помощью переменной HEAD_PREFIX в файле .vars. Подробнее о переменных ниже.

Так как порядок подключения модулей определяется в алфавитном порядке, мы можем создать заглавный модуль, который будет подключаться раньше всех других заглавных модулей, создав файл с именем:

_.bm

Это может быть полезно, чтобы добавить строку, определяющую оболочку скрипта, вида:

#!/bin/bash

Обычные модули

Имена файлов обычных модулей не имеют префиксов. Изменить расширение файлов модулей можно с помощью переменной MOD_EXT в файле .vars.

Основной скрипт

Данный скрипт должен содержать минимум бизнес-логики, насколько это возможно. Весь остальной код должен быть вынесен в модули.

Стоит отметить, что ничто не мешает оформлять в виде модулей любой код, не являющийся изолированной функцией, если это действительно необходимо и\или имеет смысл.

Переменные

Все переменные, с помощью которых можно настроить сборку под свои нужды, находится в файле .vars. Ниже их полный список:

  • SHELL - определяет оболочку для запуска команд, указанных в Makefile. Менять её значение есть смысл только если вы полностью понимаете, зачем.
  • MOD_DIR - относительный путь к директории, в которой расположены файлы модулей
  • MOD_EXT - расширение файлов модулей
  • MODULES - функция для поиска файлов обычных модулей. То есть при необходимости здесь можно настроить свою собственную магию.
  • DIST_DIR - относительный путь к директории, куда будет падать итоговый скрипт
  • MAIN_SCRIPT - имя основного скрипта
  • END_SCRIPT - имя файла, который получится в итоге
  • HEAD_PREFIX - префикс для файлов заглавных модулей
  • HEAD_FILES - функция для поиска заглавных модулей. Аналогично MODULES
  • STATE_OK - текст, который выводится, когда операция проходит успешно. То есть [ OK ] по умолчанию.
  • STATE_FAIL - текст, который выводится при неуспешной операции
  • ERR_FILE - имя костыльного файла, который создаётся для красивого вывода ошибок. Изменять нет смысла, так как он удаляется сразу после вывода ошибки.
  • END_OF_TARGET - текст, который выводится по завершению сборки одной из целей (заглавных модулей, обычных модулей или основного скрипта).

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

Тестирование реализовано с помощью утилиты bats. Все файлы тестов лежат также в modules и имеют расширение .bats. В случае, если один из тестов не проходит, сборщик выводит ошибку и завершает работу.

Синтасксис у bats очень простой, вся документация описана здесь.

About

Псевдо-модульная сборка bash-скриптов

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published