1
0
Fork 0
pomodoro/bash_scripts/repo_orchestrate.sh
2025-01-31 09:24:35 +03:00

38 lines
2.6 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
echo "Параллельное выполнение скриптов и создание репозиториев для каталогов проектов."
# выполнение скриптов внутри каталога
function orchestrate {
echo "Обработка: $1"
cd "$1" || return
while (($(date '+%s%3N') - time_ms < 120000)); do
while (($(date '+%s%3N') - time_ms < 120000)); do
# 1 Удаление репозитория на сервере
./.repo_remote.sh "delete" 2>/dev/null >.repo_remote.log
# 2 Создание репозитория на сервере
./.repo_remote.sh "create" 2>/dev/null >>.repo_remote.log
# 3 Проверка корректности ответа от сервера при создании репозитория
case "$(tail -n+10 .repo_remote.log | grep -cE '^HTTP/[1,2].{,2}? [4,5]')" in
0) break ;; *) echo "Ошибка 400-500 при подключении к серверу: $1" ;;
esac
done
# 4 Создание локального репозитория и отправка данных на сервер
./.repo_local.sh 2>/dev/null >.repo_local.log
# 5 Изменение настроек репозитория на сервере, отключение ненужного
./.repo_remote.sh "options" 2>/dev/null >>.repo_remote.log
# 6 Проверка доступности данных в вёб-интерфейсе на сервере
for ((tms = "$(date '+%s%3N')"; $(date '+%s%3N') - tms < 3000; )); do
case "$(./.repo_testing.sh | grep -cF '[91m')" in
0) pass=true && break 2 ;; *) echo "Ожидание данных на сервере: $1" ;;
esac
done
done
[ "$pass" != true ] && echo "Ожидание более 2 минут: $1"
}
export -f orchestrate
cd ../.. # выход из папки и из репозитория
export time_ms && time_ms="$(date '+%s%3N')"
# запуск параллельной обработки всех каталогов проектов, расположенных на одном уровне с текущим
find . -mindepth 1 -maxdepth 1 -type d -printf 'orchestrate "%p"\0' | xargs -n1 -0 -P0 bash -c
# замер продолжительности выполнения в миллисекундах, пересчёт в минуты, секунды и миллисекунды
tms="$(($(date '+%s%3N') - time_ms))" && min="$((tms / 1000 / 60))" && sec="$((tms / 1000 % 60))"
ms="$((tms % 1000))" && printf 'Общее время выполнения: %02d:%02d.%03d мс.\n' "$min" "$sec" "$ms"