1
0
Fork 0
pomodoro/bash_scripts/repo_compose.sh

85 lines
3.7 KiB
Bash
Raw Normal View History

2023-12-17 08:06:45 +03:00
#!/bin/bash
2024-07-31 21:14:05 +03:00
echo "Создание скриптов из шаблонов с параметрами и сохранение их в каталогах проектов."
2024-10-01 18:02:31 +03:00
export domain="git.org.ru" && source info_param.sh
2024-07-31 21:14:05 +03:00
export basedir="$PWD" # текущая папка
# обновление списка исключений
function update_gitignore {
# добавляем исключение в список ".gitignore", если оно ещё не добавлено
2024-10-31 21:39:03 +03:00
if [ ! -f "$1/.gitignore" ] || [ "$(grep -cF ".repo_*" "$1/.gitignore")" == 0 ]; then
2024-07-31 21:14:05 +03:00
echo ".repo_*" >>"$1/.gitignore"
echo "Обновлён файл: $1/.gitignore"
2023-12-17 08:06:45 +03:00
fi
2024-07-31 21:14:05 +03:00
}
# создание скриптов из шаблонов с параметрами
function compose {
echo "Обработка: $1"
update_gitignore "$1"
2023-12-17 08:20:25 +03:00
# параметры для шаблонов
2024-07-31 21:14:05 +03:00
dir="${1##*/}"
2023-12-17 08:20:25 +03:00
owner="golovin"
2024-07-31 21:14:05 +03:00
repo="$dir"
2023-12-17 08:06:45 +03:00
description=""
if [[ "$dir" =~ "pomodoro" ]]; then
if [[ "$dir" =~ [[:digit:]] ]]; then
owner="pomodoro"
2024-07-31 21:14:05 +03:00
repo="${dir//[^[:digit:]]/}"
case "$repo" in
"1") description="Трёхмерная графика на JavaScript" ;;
"2") description="Декартово произведение, комбинаторика" ;;
"3") description="Умножение матриц и повороты" ;;
"4") description="Практическая философия, поэзия и юмор" ;;
"5") description="Рисуем картинки текстом" ;;
"6") description="Пустой" ;;
*) return ;; # шесть помидорных вёб-сайтов
esac
2023-12-17 08:20:25 +03:00
description+=" — https://$owner$repo.mircloud.ru"
2023-12-17 08:06:45 +03:00
else
2023-12-30 23:37:18 +03:00
description="Описание и оглавление"
2023-12-17 08:06:45 +03:00
fi
elif [[ "$dir" =~ "color-tomato" ]]; then
2023-12-30 23:37:18 +03:00
description="Тема оформления / Цветной помидор"
2023-12-17 08:06:45 +03:00
elif [[ "$dir" =~ "older-tomato" ]]; then
2023-12-30 23:37:18 +03:00
description="Тема оформления / Старый помидор"
2023-12-17 08:06:45 +03:00
fi
2024-07-31 21:14:05 +03:00
wiki="" # оглавление по страницам вёб-сайта
2024-09-01 08:46:27 +03:00
if [ -f "$dir/WIKI.md" ]; then
2024-10-01 18:02:31 +03:00
if [ "$domain" == "hub.mos.ru" ]; then
2024-09-01 08:46:27 +03:00
wiki="$(uni2ascii -aU -qpsn "$dir/WIKI.md")"
2024-07-31 21:14:05 +03:00
else
2024-09-01 08:46:27 +03:00
wiki="$(basenc "$dir/WIKI.md" --base64 -w0)"
2024-07-31 21:14:05 +03:00
fi
fi
2023-12-17 08:20:25 +03:00
# скрипт для создания удалённого репозитория
2023-12-17 08:06:45 +03:00
{
echo "#!/bin/bash"
2024-10-01 18:02:31 +03:00
echo "domain=\"$domain\""
2023-12-17 08:06:45 +03:00
echo "owner=\"$owner\""
2024-07-31 21:14:05 +03:00
echo "user=\"golovin\""
2023-12-17 08:06:45 +03:00
echo "repo=\"$repo\""
echo "description=\"$description\""
echo "wiki=\"$wiki\""
2024-10-01 18:02:31 +03:00
if [ "$domain" == "hub.mos.ru" ]; then
2023-12-17 08:20:25 +03:00
echo "token=\"$(cat "$basedir/.token_gitlab")\""
2023-12-17 08:06:45 +03:00
cat "$basedir/repo_gitlab.tmpl.sh"
else
2023-12-17 08:20:25 +03:00
echo "token=\"$(cat "$basedir/.token_gitea")\""
2023-12-17 08:06:45 +03:00
cat "$basedir/repo_gitea.tmpl.sh"
fi
2024-09-01 08:46:27 +03:00
} >"$dir/.repo_remote.sh" && chmod +x "$dir/.repo_remote.sh"
2023-12-17 08:20:25 +03:00
# скрипт для создания локального репозитория
2023-12-17 08:06:45 +03:00
{
echo "#!/bin/bash"
2024-10-01 18:02:31 +03:00
echo "domain=\"$domain\""
2023-12-17 08:06:45 +03:00
echo "owner=\"$owner\""
echo "repo=\"$repo\""
2024-07-31 21:14:05 +03:00
echo "dir=\"$dir\""
2023-12-17 08:06:45 +03:00
cat "$basedir/repo_local.tmpl.sh"
2024-09-01 08:46:27 +03:00
} >"$dir/.repo_local.sh" && chmod +x "$dir/.repo_local.sh"
2024-07-31 21:14:05 +03:00
}
export -f compose update_gitignore
cd ../.. # выходим из папки и из репозитория
time_ms="$(date '+%s%3N')"
2024-09-01 08:46:27 +03:00
# запуск параллельной обработки всех репозиториев, расположенных на одном уровне с текущим, кроме папки ".idea"
find . -mindepth 1 -maxdepth 1 -type d -not -name ".idea" -print0 | xargs -I{} -n1 -0 -P0 bash -c 'compose "{}"'
2024-07-31 21:14:05 +03:00
echo "Общее время выполнения: $(("$(date '+%s%3N')" - "$time_ms")) мс."