blob: ef444e011c1536783568a8f4c34dd3c9813bbd7c (
plain) (
blame)
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
|
#!/bin/bash
set -e
prompt() {
echo "root: ${ROOTDIR} old: ${OLDVERSION} - new: ${NEWVERSION}"
read -n 1 -r -p "Proceed? [Y/n] " P
echo
if [ "$P" == y -o "$P" == Y -o -z "$P" ]; then
return 0
else
exit 1
fi
}
cleanup() {
cd "${ROOTDIR}"
echo Removing old build directory
if [ -d ./build ]; then
rm -rf ./build
fi
}
update() {
cd "${ROOTDIR}"
echo Updating version to ${NEWVERSION}
sed -i "s#\"${PYVERSION}\"#\"${NEWVERSION}\"#" "gallery_dl/version.py"
sed -i "s#v${OLDVERSION}#v${NEWVERSION}#" "${README}"
}
update-dev() {
cd "${ROOTDIR}"
IFS="." read MAJOR MINOR BUILD <<< "${NEWVERSION}"
BUILD=$((BUILD+1))
# update version to -dev
sed -i "s#\"${NEWVERSION}\"#\"${MAJOR}.${MINOR}.${BUILD}-dev\"#" "gallery_dl/version.py"
# add 'unreleased' line to changelog
sed -i "2i\\\n## Unreleased" "${CHANGELOG}"
git add "gallery_dl/version.py" "${CHANGELOG}"
}
build-python() {
cd "${ROOTDIR}"
echo Building bdist_wheel and sdist
python setup.py bdist_wheel sdist
}
build-linux() {
cd "${ROOTDIR}"
echo Building Linux executable
make executable
}
build-windows() {
cd "${ROOTDIR}/dist"
echo Building Windows executable
# remove old executable
rm -f "gallery-dl.exe"
# build windows exe in vm
ln -fs "${ROOTDIR}" /tmp/
vmstart "Windows 7" &
disown
while [ ! -e "gallery-dl.exe" ] ; do
sleep 5
done
sleep 2
# check exe version
OUTPUT="$(wine gallery-dl.exe --version)"
if [[ ! "${OUTPUT%?}" == "${NEWVERSION}" ]]; then
echo "exe version mismatch: ${OUTPUT} != ${NEWVERSION}"
exit 3
fi
}
sign() {
cd "${ROOTDIR}/dist"
echo Signing files
gpg --detach-sign --armor gallery_dl-${NEWVERSION}-py3-none-any.whl
gpg --detach-sign --armor gallery_dl-${NEWVERSION}.tar.gz
gpg --detach-sign --yes gallery-dl.exe
gpg --detach-sign --yes gallery-dl.bin
}
changelog() {
cd "${ROOTDIR}"
echo Updating "${CHANGELOG}"
# - replace "#NN" with link to actual issue
# - insert new version and date
sed -i \
-e "s*\([( ]\)#\([0-9]\+\)*\1[#\2](https://github.com/mikf/gallery-dl/issues/\2)*g" \
-e "s*^## [Uu]nreleased*## ${NEWVERSION} - $(date +%Y-%m-%d)*" \
"${CHANGELOG}"
}
supportedsites() {
cd "${ROOTDIR}"
echo Checking if "${SUPPORTEDSITES}" is up to date
./scripts/supportedsites.py
if ! git diff --quiet "${SUPPORTEDSITES}"; then
echo "updated ${SUPPORTEDSITES} contains changes"
exit 4
fi
}
git-upload() {
cd "${ROOTDIR}"
echo Pushing changes to github
git add "gallery_dl/version.py" "${README}" "${CHANGELOG}"
git commit -S -m "release version ${NEWVERSION}"
git tag -s -m "version ${NEWVERSION}" "v${NEWVERSION}"
git push
git push origin "v${NEWVERSION}"
}
pypi-upload() {
cd "${ROOTDIR}/dist"
echo Uploading to PyPI
twine upload gallery_dl-${NEWVERSION}*
}
ROOTDIR="$(realpath "$(dirname "$0")/..")/"
README="README.rst"
CHANGELOG="CHANGELOG.md"
SUPPORTEDSITES="./docs/supportedsites.rst"
LASTTAG="$(git describe --abbrev=0 --tags)"
OLDVERSION="${LASTTAG#v}"
PYVERSION="$(python -c "import gallery_dl as g; print(g.__version__)")"
if [[ "$1" ]]; then
NEWVERSION="$1"
else
NEWVERSION="${PYVERSION%-dev}"
fi
if [[ ! $NEWVERSION =~ [0-9]+\.[0-9]+\.[0-9]+(-[a-z]+(\.[0-9]+)?)?$ ]]; then
echo "invalid version: $NEWVERSION"
exit 2
fi
prompt
supportedsites
cleanup
update
build-python
build-linux
build-windows
sign
changelog
git-upload
pypi-upload
update-dev
|