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