1+ @ echo off
2+ :: Запуск процесса публикации пакета NuGet
3+
4+ :: Изменим кодировку терминала на UTF-8 для корректного отображения символов
5+ chcp 65001 > nul
6+
7+ set " script_dir = %~dp0 "
8+ if " %script_dir:~-1 % " == " \" set " script_dir = %script_dir:~0 ,-1 % "
9+ for %%i in (" %script_dir% " ) do set " PackageName = %%~nxi "
10+ echo Публикация пакета %PackageName%
11+
12+ :: Получим версию проекта, подставляя %PackageName% в путь к csproj
13+ set " local_version = "
14+ set " temp_ver = %TEMP% \%PackageName% _ver.txt"
15+ :: Запускаем dotnet и перенаправляем вывод во временный файл чтобы избежать проблем с синтаксисом командной строки
16+ dotnet run .scripts\xml-xpath.cs " %~dp0 \%PackageName% \%PackageName% .csproj" " /Project/PropertyGroup/Version/text()" > " %temp_ver% " 2 > nul
17+ if exist " %temp_ver% " (
18+ set /p local_version = < " %temp_ver% "
19+ del " %temp_ver% " 2 > nul
20+ )
21+ if defined local_version (
22+ echo Локальная версия: %local_version%
23+ ) else (
24+ echo Не удалось получить версию проекта
25+ exit /b 1
26+ )
27+
28+ :: Получим версию пакета на сервере через скрипт .scripts\nuget-ver-remote.cs
29+ set " remote_version = "
30+ set " temp_remote = %TEMP% \%PackageName% _remote_ver.txt"
31+ :: Вызов скрипта, вывод версии в файл
32+ dotnet run .scripts\nuget-ver-remote.cs " %PackageName% " > " %temp_remote% " 2 > nul
33+ if exist " %temp_remote% " (
34+ set /p remote_version = < " %temp_remote% "
35+ del " %temp_remote% " 2 > nul
36+ )
37+ if defined remote_version (
38+ echo Серверная версия: %remote_version%
39+ if " %local_version% " == " %remote_version% " (
40+ echo Версия на сервере совпадает с локальной, публикация не требуется.
41+ exit /b 0
42+ ) else (
43+ echo Локальная версия отличается от серверной, продолжаем публикацию.
44+ )
45+ ) else (
46+ echo Не удалось получить версию с сервера, продолжаем публикацию.
47+ )
48+
49+ :: Проверим что в локальном репозитории нет незакоммиченных изменений
50+ rem git status --porcelain > nul
51+ rem if not errorlevel 1 (
52+ rem echo Есть незакоммиченные изменения. Пожалуйста, закоммитьте их перед публикацией.
53+ rem pause
54+ rem exit /b 1
55+ rem )
56+
57+ git pull
58+
59+ :: Выполнение мержа из ветки dev в ветку master
60+ :: git checkout master
61+ :: git merge dev
62+ :: git push origin master
63+ :: git checkout dev
64+
65+ :: Сборка и публикация проекта произойдёт автоматически на сервере GitHub Actions
66+
67+ :: Ожидание обновления новой версии на сервер NuGet.org 15 итераций по 20 секунд
68+ dotnet run .scripts\nuget-ver-wait.cs " %PackageName% " " %local_version% " -n 15 -t 20000
69+ :: если errorlevel не 0, дождаться не удалось. Требуется внимание пользователя
70+ if errorlevel 1 (
71+ echo Не удалось подтвердить публикацию пакета на сервере NuGet.org.
72+ echo Пожалуйста, проверьте вручную.
73+ pause
74+ exit /b 1
75+ )
76+
77+ :: Теперь пройдём по всем зависимостям от данного пакета и вызовем их публикацию
78+ :: для этого перечислим все строки в файле .\.scripts\dependencies.txt
79+
80+ echo .
81+ if not exist " .\.scripts\dependencies.txt" (
82+ echo Файл зависимостей не найден: .\.scripts\dependencies.txt
83+ echo Публикация завершена.
84+ exit /b 0
85+ )
86+
87+ rem тут будет выполнение скрипта ожидания завершения проверки пакета на сервере NuGet.org
88+
89+
90+ for /f " usebackq delims=" %%i in (" .\.scripts\dependencies.txt" ) do (
91+ rem Проверим что каталог существует
92+ if not exist " %%i " (
93+ echo Каталог не найден: %%i
94+ rem пропустить эту итерацию
95+ ) else (
96+ rem Проверим, что в каталоге есть файл publish-nuget.bat
97+ if not exist " %%i \publish-nuget.bat" (
98+ echo Файл publish-nuget.bat не найден в каталоге: %%i
99+ rem пропустить эту итерацию
100+ ) else (
101+ echo .
102+ echo Публикация зависимого пакета: %%i
103+ pushd " %%i "
104+ rem Вызов публикации зависимого пакета (раскомментировать при необходимости)
105+ call publish-nuget.bat
106+ if errorlevel 1 (
107+ echo Ошибка при публикации зависимого пакета: %%i
108+ popd
109+ exit /b 1
110+ )
111+ popd
112+ )
113+ )
114+ )
115+
116+ pause
117+ exit /b 0
0 commit comments