Files
mcb-platform-monorepo/scripts/build-changed-modules.sh
T
2025-12-08 14:48:44 +03:00

55 lines
2.1 KiB
Bash

#!/bin/sh
# Путь до файла с версиями модулей
FILE_PATH="services-versions.json"
# Предпоследний релизный тег
PREVIOUS_TAG=$(git tag --sort=taggerdate | tail -n 2 | head -n 1)
# Последний релизный тег
LAST_TAG=$(git tag --sort=taggerdate | tail -n 1)
# Изменения файла services-versions.json между 2 релизными тегами
DIFF_RESULT=$(git diff "$PREVIOUS_TAG":"$FILE_PATH" "$LAST_TAG":"$FILE_PATH")
# Поиск совпадений по регулярному выражению
matches=$(echo "$DIFF_RESULT" | grep -o '"msb-[^ ]*')
# Конвертация в массив и удаления лишних символов
array=($(echo "$matches" | tr -d ',\"'))
# Проверяем пустой ли массив, если да то собираем все модули, если нет то собираем только изменные модули
if [ ${#array[@]} -eq 0 ]; then
echo "Сборка всех модулей"
npx lerna run build --scope=msb-* --stream --concurrency=2
# Проверка успешного завершения команды lerna run build
if [ $? -eq 0 ]; then
echo "Сборка измененых модулей прошла успешно"
else
echo "Ошибка при сборке измененых модулей"
exit 1
fi
else
# Начало команды сборки
command="lerna run build"
# Добавляем параметры --scope для каждого элемента массива
for package in "${array[@]}"; do
command+=" --scope=$package"
done
# Добавляем остальные параметры
command+=" --stream --concurrency=3"
# Вывод команды
npx $command
# Проверка успешного завершения команды lerna run build
if [ $? -eq 0 ]; then
echo "Сборка измененых модулей прошла успешно"
else
echo "Ошибка при сборке измененых модулей"
exit 1
fi
fi