Добавлены скрипты для клонирования проектов из TSV-файла:
- clone_projects.sh — Bash-скрипт для Linux/Mac - clone_projects.bat — Batch-скрипт для Windows - projects.tsv — пример файла со списком проектов - test_relative_paths.sh — вспомогательный скрипт для тестирования относительных путей Обновлён .gitignore для корректной работы с этими файлами.
This commit is contained in:
68
clone_projects.sh
Executable file
68
clone_projects.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/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 "Клонирование завершено!"
|
||||
Reference in New Issue
Block a user