27 lines
2.1 KiB
Bash
Executable file
27 lines
2.1 KiB
Bash
Executable file
#!/bin/bash
|
||
echo "Сборка вёб-сайтов, упаковка и копирование архивов для развёртывания."
|
||
# обработка репозитория вёб-сайта
|
||
function packaging {
|
||
dir="pomodoro${1}" && red="\e[91m" && green="\e[92m" && norm="\e[0m"
|
||
# соответствующая строка для вывода сообщений по ходу выполнения функции
|
||
num="$((7 - ${1}))" && pre="\e[${num}A${dir} " && aft="\e[K\e[${num}B\r"
|
||
printf "${pre}%s %s${aft}" "[•••]" "Обработка."
|
||
cd "./$dir" &>/dev/null || { printf "${pre}${red}%s${norm} %s${aft}" "[•••]" "Не найден каталог." && return; }
|
||
printf "${pre}%s %s${aft}" "[#••]" "Сборка."
|
||
./build.sh &>/dev/null || { printf "${pre}${red}%s${norm} %s${aft}" "[#••]" "Ошибка сборки." && return; }
|
||
printf "${pre}%s %s${aft}" "[##•]" "Упаковка."
|
||
./package.sh &>/dev/null || { printf "${pre}${red}%s${norm} %s${aft}" "[##•]" "Ошибка упаковки." && return; }
|
||
printf "${pre}%s %s${aft}" "[###]" "Копирование."
|
||
cp "$dir".zip .. &>/dev/null || { printf "${pre}${red}%s${norm} %s${aft}" "[###]" "Ошибка копирования." && return; }
|
||
printf "${pre}${green}%s${norm} %s${aft}" "[###]" "Выполнено."
|
||
}
|
||
export -f packaging
|
||
cd ../.. # выход из папки и из репозитория
|
||
time_ms="$(date '+%s%3N')"
|
||
# смещение курсора вниз на соответствующее количество строк
|
||
printf 'pomodoro%s\n' {1..6}
|
||
# вывод номеров вёб-сайтов и параллельный запуск функции для каждого
|
||
printf 'packaging "%s"\0' {1..6} | 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"
|