1
0
Fork 0
dispatcher/bash_scripts/suite_profile2.sh
2025-03-31 19:57:16 +03:00

61 lines
4.6 KiB
Bash
Executable file
Raw Permalink 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 "Публикация оглавлений вёб-сайтов на сервере codeberg."
# выполнение скрипта внутри каталога вёб-сайта
function profile2 {
dir="pomodoro" && red="\e[91m" && green="\e[92m" && yellow="\e[93m" && norm="\e[0m"
# соответствующая строка для вывода сообщений по ходу выполнения функции
case "$1" in "") dir="$dir " && num="6" ;; *) dir="$dir${1}" && num="$((6 - ${1}))" ;; esac
pre="\e[${num}A${dir} " && aft="\e[K\e[${num}B\r"
cd "${dir// /}" || { printf "${pre}${red}%s${norm} %s${aft}" "[•••••••]" "Не найден каталог." && return 1; }
printf "${pre}%s %s${aft}" "[•••••••]" "Пересоздание файлов в каталоге."
./.repo_profile2.sh "prepare" &>/dev/null
for ((ms1 = "$(date '+%s%3N')"; $(date '+%s%3N') - ms1 < 600000; pass = 0)); do
# 1 Создание удалённого репозитория и контроль корректности ответов от сервера
for ((ms2 = "$(date '+%s%3N')"; $(date '+%s%3N') - ms2 < 20000; remote = 0)); do
[ "$pass" != 0 ] && printf "${pre}%s %s${aft}" "[#••••••]" "Удаление старого репозитория на сервере."
./.repo_profile2.sh "delete" &>/dev/null
printf "${pre}%s %s${aft}" "[##•••••]" "Создание нового репозитория в группе."
./.repo_profile2.sh "create" &>/dev/null || continue
printf "${pre}%s %s${aft}" "[###••••]" "Изменение свойств репозитория."
./.repo_profile2.sh "patch" &>/dev/null || continue
printf "${pre}%s %s${aft}" "[####•••]" "Добавление аватарки для репозитория."
./.repo_profile2.sh "avatar" &>/dev/null || continue
remote=1 && break # завершение цикла
done
case "$remote" in
1) printf "${pre}%s %s${aft}" "[#####••]" "Создание локального репозитория." ;;
*) printf "${pre}${red}%s${norm} %s${aft}" "[•••••••]" "Создание на сервере более 20 секунд." && continue ;;
esac
# 2 Создание локального репозитория и отправка данных на сервер
./.repo_profile2.sh "local" &>/dev/null
printf "${pre}%s %s${aft}" "[######•]" "Отправка локальных данных на сервер."
./.repo_profile2.sh "push" &>/dev/null
# 3 Проверка корректности получения данных на сервере
printf "${pre}%s %s${aft}" "[#######]" "Проверка получения данных на сервере."
for ((lap = 1, ms2 = "$(date '+%s%3N')"; $(date '+%s%3N') - ms2 < 20000; lap++, testing = 0)); do
track=7 && shift="$(tr -d '-' <<<$((lap / track % 2 * track - lap % track)))"
progressbar="$(printf "[%$((track - shift))s" | sed 's| |•|g')$(printf "%${shift}s]" | sed 's| |#|g')"
./.repo_profile2.sh "testing" &>/dev/null \
|| { printf "${pre}${yellow}%s${norm} %s${aft}" "$progressbar" "Ожидание данных на сервере." && continue; }
testing=1 && break # завершение цикла
done
case "$testing" in
1) pass=1 && break ;;
*) printf "${pre}${red}%s${norm} %s${aft}" "[•••••••]" "Проверка данных более 20 секунд." ;;
esac
done
case "$pass" in
1) printf "${pre}${green}%s${norm} %s${aft}" "[#######]" "Выполнено." ;;
*) printf "${pre}${red}%s${norm} %s${aft}" "[•••••••]" "Ожидание более 10 минут." ;;
esac
}
export -f profile2
cd ../.. # выход из папки и из репозитория
time_ms="$(date '+%s%3N')"
# смещение курсора вниз на соответствующее количество строк
printf 'pomodoro%s\n' "" {1..5}
# вывод номеров вёб-сайтов и параллельный запуск функции для каждого
printf 'profile2 "%s"\0' "" {1..5} | 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"