forked from stevoscriptsteam/stevo_citizenship
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate_release.bat
93 lines (75 loc) · 2.58 KB
/
generate_release.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
@echo off
setlocal enabledelayedexpansion
git fetch --all --tags
:: Função para encontrar a branch principal automaticamente (main ou master)
set "main_branch="
call :get_main_branch
if "%main_branch%"=="" (
echo Erro: Nao foi possivel detectar a branch principal. Certifique-se de que voce esta no diretorio correto do repositorio Git.
exit /b 1
)
echo Branch principal detectada: %main_branch%
:: Função para obter a última tag e sugerir a próxima versão
set "last_tag="
call :get_last_tag
if "%last_tag%"=="" (
echo Nenhuma tag encontrada. Sugerindo v1.0.0 como primeira tag.
set "next_version=v1.0.0"
) else (
for /f "tokens=1-3 delims=." %%a in ("%last_tag:v=%") do (
set /a patch=%%c + 1
set "next_version=v%%a.%%b.!patch!"
)
)
echo Ultima versao: %last_tag%
:: Solicita ao usuário a versão ou usa a sugestão
set /p "tag_version=Digite a versao da tag (%next_version%): "
if "%tag_version%"=="" set "tag_version=%next_version%"
:: Captura do cancelamento
call :check_cancel
echo Criando tag %tag_version% na branch '%main_branch%' e enviando para o GitHub...
:: Cria a tag
git tag "%tag_version%" "%main_branch%"
if errorlevel 1 (
echo Erro: Falha ao criar a tag %tag_version%. Verifique se a tag ja existe ou se voce tem permissoes adequadas.
exit /b 1
)
:: Envia a tag para o repositório
git push origin "%tag_version%"
if errorlevel 1 (
echo Erro: Falha ao enviar a tag %tag_version% para o GitHub. Verifique sua conexao e permissoes.
exit /b 1
)
echo Tag %tag_version% criada e enviada com sucesso a partir da branch '%main_branch%'!
goto :eof
:get_main_branch
:: Obtém a branch principal (main ou master)
for /f "delims=" %%i in ('git symbolic-ref refs/remotes/origin/HEAD ^| findstr /r /v "^$" 2^>nul') do (
set "main_branch=%%i"
)
set "main_branch=%main_branch:refs/remotes/origin/=%"
exit /b
:get_last_tag
:: Obtém a última tag criada no repositório
for /f "delims=" %%i in ('git describe --tags --abbrev=0 2^>nul') do (
set "last_tag=%%i"
)
:: Verificação alternativa caso a última tag não seja encontrada
if "%last_tag%"=="" (
for /f "delims=" %%j in ('git tag --sort=-v:refname ^| findstr /r /v "^$" 2^>nul') do (
set "last_tag=%%j"
goto :eof
)
)
:check_cancel
:: Pergunta ao usuário para confirmar ou cancelar
choice /c SN /n /m "Continuar gerando? S = Sim, N = Nao"
echo ErrorLevel retornado: %errorlevel%
:: Verifique o valor de errorlevel para C ou Y
if %errorlevel%==1 (
echo Continuando com a operacao...
) else if %errorlevel%==2 (
echo Operacao cancelada pelo usuario.
exit
)
exit /b