/
cosheimil
/
pre-commit-cache
Обзор
Документация
Войти
/
cosheimil
/
pre-commit-cache
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
mirror_precommit.sh
50 строк
2 KB
Artem Varvus
Changed large files config to kb
01 июн 2026, 11:10
01 июн 2026, 11:10
892808d
Код
Авторство
О чём код?
#!/usr/bin/env bash set -euo pipefail CONFIG="${1:-.pre-commit-config.yaml}" MIRROR_DIR="pre-commit-mirrors" ARCHIVE="${MIRROR_DIR}.tar.gz" if [[ ! -f "$CONFIG" ]]; then echo "❌ Файл $CONFIG не найден. Запустите: $0 .pre-commit-config.yaml" exit 1 fi echo "🔍 Извлекаю URL репозиториев из $CONFIG..." # POSIX-совместимое извлечение (без PCRE, работает на macOS/Linux) grep -E '^\s*-\s*repo:' "$CONFIG" | \ sed -E 's/.*repo:[[:space:]]*//' | \ tr -d "'\"" | \ grep -v -E '^\s*(local|#|$)' | \ sort -u > repos.txt if [[ ! -s repos.txt ]]; then echo "⚠️ Внешние репозитории не найдены. Нечего зеркалировать." exit 0 fi echo "📦 Клонирую $(wc -l < repos.txt) репозиториев в $MIRROR_DIR/..." rm -rf "$MIRROR_DIR" mkdir -p "$MIRROR_DIR" while IFS= read -r url; do # Безопасное извлечение имени (без lazy-квантификаторов) name=$(echo "$url" | sed -E 's|.*/||; s/\.git$//') echo " ▶ $url → $name.git" git clone --quiet --mirror "$url" "$MIRROR_DIR/$name.git" 2>/dev/null || \ echo "⚠️ Ошибка клонирования $url (проверьте интернет/права)" done < repos.txt echo "📦 Архивирую..." tar -czf "$ARCHIVE" "$MIRROR_DIR/" echo "" echo "✅ Готово!" echo "📁 Архив: $ARCHIVE" echo "📋 Репозиториев: $(wc -l < repos.txt)" echo "" echo "🚀 ПЕРЕНЕСИТЕ ЭТО НА РАБОЧИЙ НОУТБУК И ВЫПОЛНИТЕ:" echo " 1. tar -xzf $ARCHIVE" echo " 2. cd $(pwd)" echo " 3. Замените URL в .pre-commit-config.yaml на file://$(pwd)/$MIRROR_DIR/<имя>.git" echo " 4. pre-commit install"