-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrelease.sh
More file actions
executable file
·189 lines (160 loc) · 5.5 KB
/
Copy pathrelease.sh
File metadata and controls
executable file
·189 lines (160 loc) · 5.5 KB
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
#!/bin/bash
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}=========================================="
echo "MinerU Desktop Client - Release Manager"
echo "==========================================${NC}"
echo ""
# Function to display usage
usage() {
echo "Usage: $0 <version_type> [description]"
echo ""
echo "Version types:"
echo " major - Incrementa versão major (1.0.0 -> 2.0.0)"
echo " minor - Incrementa versão minor (1.0.0 -> 1.1.0)"
echo " patch - Incrementa versão patch (1.0.0 -> 1.0.1)"
echo " custom - Define versão customizada (requer argumento adicional)"
echo ""
echo "Description: Descrição breve das mudanças (opcional mas recomendado)"
echo ""
echo "Exemplos:"
echo " $0 patch \"Correção de bugs na interface\""
echo " $0 minor \"Nova funcionalidade de exportação\""
echo " $0 custom 2.0.0 \"Grande atualização com breaking changes\""
exit 1
}
# Check arguments
if [ $# -lt 1 ]; then
usage
fi
VERSION_TYPE=$1
DESCRIPTION="${2:-Release automático}"
# Extract current version
CURRENT_VERSION=$(python3 -c "import sys; sys.path.insert(0, '.'); from version import VERSION; print(VERSION)")
echo -e "${GREEN}Versão atual: ${CURRENT_VERSION}${NC}"
# Calculate new version
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION"
case $VERSION_TYPE in
major)
MAJOR=$((MAJOR + 1))
MINOR=0
PATCH=0
NEW_VERSION="${MAJOR}.${MINOR}.${PATCH}"
;;
minor)
MINOR=$((MINOR + 1))
PATCH=0
NEW_VERSION="${MAJOR}.${MINOR}.${PATCH}"
;;
patch)
PATCH=$((PATCH + 1))
NEW_VERSION="${MAJOR}.${MINOR}.${PATCH}"
;;
custom)
if [ $# -lt 2 ]; then
echo -e "${RED}Erro: Versão customizada requer número de versão${NC}"
usage
fi
NEW_VERSION=$2
DESCRIPTION="${3:-Release customizado}"
;;
*)
echo -e "${RED}Erro: Tipo de versão inválido: ${VERSION_TYPE}${NC}"
usage
;;
esac
echo -e "${GREEN}Nova versão: ${NEW_VERSION}${NC}"
echo -e "${YELLOW}Descrição: ${DESCRIPTION}${NC}"
echo ""
# Confirmation
read -p "Continuar com a release? (y/N) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo -e "${YELLOW}Release cancelada.${NC}"
exit 1
fi
echo ""
echo -e "${BLUE}[1/6] Atualizando version.py...${NC}"
# Update version.py
sed -i "s/VERSION = \".*\"/VERSION = \"${NEW_VERSION}\"/" version.py
echo -e "${GREEN}✓ version.py atualizado${NC}"
echo ""
echo -e "${BLUE}[2/6] Construindo novo AppImage...${NC}"
# Build new AppImage
./build_appimage.sh
echo -e "${GREEN}✓ AppImage construído: MinerU-${NEW_VERSION}-x86_64.AppImage${NC}"
echo ""
echo -e "${BLUE}[3/6] Atualizando CHANGELOG...${NC}"
# Create CHANGELOG.md if it doesn't exist
if [ ! -f CHANGELOG.md ]; then
cat > CHANGELOG.md << 'EOF'
# Changelog
Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.
O formato é baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.0.0/),
e este projeto adere ao [Semantic Versioning](https://semver.org/lang/pt-BR/).
EOF
fi
# Add new version to CHANGELOG
TODAY=$(date +%Y-%m-%d)
# Create temporary file with new entry
cat > /tmp/changelog_entry.txt << EOF
## [${NEW_VERSION}] - ${TODAY}
### Descrição
${DESCRIPTION}
### Mudanças
- AppImage atualizado para versão ${NEW_VERSION}
- README atualizado com informações da versão ${NEW_VERSION}
EOF
# Insert after the header (line 7)
sed -i "7r /tmp/changelog_entry.txt" CHANGELOG.md
rm /tmp/changelog_entry.txt
echo -e "${GREEN}✓ CHANGELOG.md atualizado${NC}"
echo ""
echo -e "${BLUE}[4/6] Atualizando README.md...${NC}"
# Update README with new version info
# This is already handled automatically by the version.py system
echo -e "${GREEN}✓ README atualizado (automático via version.py)${NC}"
echo ""
echo -e "${BLUE}[5/6] Criando commit...${NC}"
# Git operations
# Note: AppImages are NOT added to git - they go to GitHub Releases only
git add version.py CHANGELOG.md README.md
git commit -m "Release version ${NEW_VERSION}
${DESCRIPTION}
- Versão atualizada para ${NEW_VERSION}
- AppImage disponibilizado
- CHANGELOG atualizado
"
echo -e "${GREEN}✓ Commit criado${NC}"
echo ""
echo -e "${BLUE}[6/6] Criando tag...${NC}"
git tag -a "v${NEW_VERSION}" -m "Version ${NEW_VERSION}
${DESCRIPTION}
"
echo -e "${GREEN}✓ Tag v${NEW_VERSION} criada${NC}"
echo ""
echo -e "${GREEN}=========================================="
echo "Release ${NEW_VERSION} concluída com sucesso!"
echo "==========================================${NC}"
echo ""
echo -e "${YELLOW}Próximos passos:${NC}"
echo "1. Revisar as mudanças: git log -1 -p"
echo "2. Fazer push do commit: git push origin $(git branch --show-current)"
echo "3. Fazer push da tag: git push origin v${NEW_VERSION}"
echo "4. Criar GitHub Release e fazer upload do AppImage:"
echo " gh release create v${NEW_VERSION} MinerU-${NEW_VERSION}-x86_64.AppImage --title \"v${NEW_VERSION}\" --notes \"${DESCRIPTION}\""
echo ""
echo -e "${BLUE}Ou fazer push de tudo de uma vez:${NC}"
echo "git push origin $(git branch --show-current) && git push origin v${NEW_VERSION}"
echo ""
echo -e "${GREEN}Arquivos criados:${NC}"
echo "- MinerU-${NEW_VERSION}-x86_64.AppImage (para upload no GitHub Release)"
echo "- MinerU-x86_64.AppImage (symlink)"
echo ""
echo -e "${YELLOW}IMPORTANTE: O AppImage deve ser feito upload para GitHub Releases, não commitado no git${NC}"
echo ""