2023-12-17 08:06:45 +03:00
|
|
|
|
#!/bin/bash
|
2024-07-31 21:14:05 +03:00
|
|
|
|
echo "Создание скриптов из шаблонов с параметрами и сохранение их в каталогах проектов."
|
|
|
|
|
export remote="git.org.ru" && source info_param.sh
|
|
|
|
|
export basedir="$PWD" # текущая папка
|
|
|
|
|
# обновление списка исключений
|
|
|
|
|
function update_gitignore {
|
|
|
|
|
# добавляем исключение в список ".gitignore", если оно ещё не добавлено
|
|
|
|
|
if [ ! -f "$1/.gitignore" ] || [ "$(grep -cx "\.repo_\*" "$1/.gitignore")" == 0 ]; then
|
|
|
|
|
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-07-31 21:14:05 +03:00
|
|
|
|
if [ "$remote" == "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"
|
2023-12-17 08:20:25 +03:00
|
|
|
|
echo "remote=\"$remote\""
|
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\""
|
|
|
|
|
if [ "$remote" == "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"
|
|
|
|
|
echo "remote=\"$remote\""
|
|
|
|
|
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")) мс."
|