Files
Mini-ERP-Infra/clone_projects.bat
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

83 lines
3.2 KiB
Batchfile
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.

@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