Files
Mini-ERP-Infra/clone_projects.sh
Andrey Epifantsev c9943521c5 Добавлены скрипты для клонирования проектов из TSV-файла:
- clone_projects.sh — Bash-скрипт для Linux/Mac
- clone_projects.bat — Batch-скрипт для Windows
- projects.tsv — пример файла со списком проектов
- test_relative_paths.sh — вспомогательный скрипт для тестирования относительных путей
Обновлён .gitignore для корректной работы с этими файлами.
2025-08-26 23:30:58 +04:00

69 lines
2.7 KiB
Bash
Executable File
Raw 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
# Скрипт для клонирования проектов из TSV файла
# Формат TSV: check, project_name, project_url
# Проверяем, что передан аргумент с именем файла
if [ $# -eq 0 ]; then
echo "Использование: $0 <tsv_file> [base_dir]"
echo "Пример: $0 projects.tsv"
echo "Пример: $0 projects.tsv /path/to/projects"
echo "Пример: $0 projects.tsv ./projects"
echo "Пример: $0 projects.tsv ../workspace"
exit 1
fi
TSV_FILE="$1"
BASE_DIR="${2:-.}" # Если base_dir не указан, используем текущую директорию
# Проверяем существование файла
if [ ! -f "$TSV_FILE" ]; then
echo "Ошибка: Файл '$TSV_FILE' не найден"
exit 1
fi
# Создаем базовую директорию, если она не существует
if [ ! -d "$BASE_DIR" ]; then
echo "Создаем базовую директорию: $BASE_DIR"
mkdir -p "$BASE_DIR"
fi
echo "Начинаем клонирование проектов из файла: $TSV_FILE"
echo "Базовая директория: $BASE_DIR"
echo "================================================"
# Читаем TSV файл, пропуская заголовок (если есть)
# Ожидаемый формат: check, project_name, project_url
while IFS=$'\t' read -r check project_name project_url; do
# Пропускаем пустые строки и строки с заголовками
if [[ -z "$check" || "$check" == "check" ]]; then
continue
fi
# Проверяем, нужно ли клонировать (если check = X)
if [[ "$check" == "X" || "$check" == "x" ]]; then
echo "Клонирование: $project_name"
echo "URL: $project_url"
# Проверяем, что директория не существует
PROJECT_PATH="$BASE_DIR/$project_name"
if [ -d "$PROJECT_PATH" ]; then
echo "Предупреждение: Директория '$PROJECT_PATH' уже существует, пропускаем"
echo "---"
continue
fi
# Выполняем git clone
if git clone "$project_url" "$PROJECT_PATH"; then
echo "✓ Успешно клонирован: $project_name"
else
echo "✗ Ошибка при клонировании: $project_name"
fi
echo "---"
else
echo "Пропускаем: $project_name (check = '$check')"
fi
done < "$TSV_FILE"
echo "Клонирование завершено!"