- clone_projects.sh — Bash-скрипт для Linux/Mac - clone_projects.bat — Batch-скрипт для Windows - projects.tsv — пример файла со списком проектов - test_relative_paths.sh — вспомогательный скрипт для тестирования относительных путей Обновлён .gitignore для корректной работы с этими файлами.
83 lines
3.2 KiB
Batchfile
Executable File
83 lines
3.2 KiB
Batchfile
Executable File
@echo off
|
||
setlocal enabledelayedexpansion
|
||
|
||
REM Скрипт для клонирования проектов из TSV файла
|
||
REM Формат TSV: check, project_name, project_url
|
||
|
||
REM Проверяем, что передан аргумент с именем файла
|
||
if "%~1"=="" (
|
||
echo Использование: %0 ^<tsv_file^> [base_dir]
|
||
echo Пример: %0 projects.tsv
|
||
echo Пример: %0 projects.tsv C:\Projects
|
||
echo Пример: %0 projects.tsv .\projects
|
||
echo Пример: %0 projects.tsv ..\workspace
|
||
exit /b 1
|
||
)
|
||
|
||
set TSV_FILE=%~1
|
||
set BASE_DIR=%~2
|
||
|
||
REM Если base_dir не указан, используем текущую директорию
|
||
if "!BASE_DIR!"=="" set BASE_DIR=.
|
||
|
||
REM Проверяем существование файла
|
||
if not exist "%TSV_FILE%" (
|
||
echo Ошибка: Файл '%TSV_FILE%' не найден
|
||
exit /b 1
|
||
)
|
||
|
||
REM Создаем базовую директорию, если она не существует
|
||
if not exist "!BASE_DIR!" (
|
||
echo Создаем базовую директорию: !BASE_DIR!
|
||
mkdir "!BASE_DIR!"
|
||
)
|
||
|
||
echo Начинаем клонирование проектов из файла: %TSV_FILE%
|
||
echo Базовая директория: !BASE_DIR!
|
||
echo ================================================
|
||
|
||
REM Читаем TSV файл построчно
|
||
for /f "usebackq delims=" %%a in ("%TSV_FILE%") do (
|
||
set "line=%%a"
|
||
|
||
REM Пропускаем пустые строки
|
||
if not "!line!"=="" (
|
||
REM Разбиваем строку по табуляции
|
||
for /f "tokens=1,2,3 delims= " %%b in ("!line!") do (
|
||
set "check=%%b"
|
||
set "project_name=%%c"
|
||
set "project_url=%%d"
|
||
|
||
REM Пропускаем заголовки
|
||
if not "!check!"=="check" (
|
||
REM Проверяем, нужно ли клонировать (если check = X)
|
||
if /i "!check!"=="X" (
|
||
echo Клонирование: !project_name!
|
||
echo URL: !project_url!
|
||
|
||
REM Проверяем, что директория не существует
|
||
set "PROJECT_PATH=!BASE_DIR!\!project_name!"
|
||
if exist "!PROJECT_PATH!" (
|
||
echo Предупреждение: Директория '!PROJECT_PATH!' уже существует, пропускаем
|
||
echo ---
|
||
) else (
|
||
REM Выполняем git clone
|
||
git clone "!project_url!" "!PROJECT_PATH!"
|
||
if !errorlevel! equ 0 (
|
||
echo ✓ Успешно клонирован: !project_name!
|
||
) else (
|
||
echo ✗ Ошибка при клонировании: !project_name!
|
||
)
|
||
echo ---
|
||
)
|
||
) else (
|
||
echo Пропускаем: !project_name! (check = '!check!')
|
||
)
|
||
)
|
||
)
|
||
)
|
||
)
|
||
|
||
echo Клонирование завершено!
|
||
pause
|