forked from bit-team/backintime
-
Notifications
You must be signed in to change notification settings - Fork 0
/
updateversion.sh
executable file
·99 lines (81 loc) · 3.3 KB
/
updateversion.sh
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
#!/bin/bash
# Updates all version numbers using the VERSION file
# and creates a new DEBIAN changelog file for this version
# by extracting the changes of this version from the
# CHANGES file.
#
# Development notes (May '23, Buhtz):
# Should be treated as a workaround that will get replaced in the future.
# Handling of version numbers and other package metadata can be done very
# elegant and centralized within the Python Packaging process (e.g. using
# pyproject.toml and additional tools.
# Handling of Debian (and PPA) related stuff will be separated from that
# upstream repo because it is distro specific.
# Outdated TODOs:
# TODO Requires refactoring and adjustments to separate
# - the update of version numbers
# - from the preparation of a new DEBIAN package release
# since version updates must be possible without
# a DEBIAN package release.
#
# TODO The version number must still be maintained in two places
# (despite this script):
# 1. File "VERSION"
# 2. As headline in the file "CHANGES"
# If those two numbers do not match the script does
# not extract the correct changes of the version from the CHANGES file.
#
# TODO The name of this script file is misleading (find a better one)
# TODO Make sure this script works idempotent (multiple calls = same result)
# TODO This script does not update release dates scattered around in
# different files (eg. common/man/C/backintime.1 line 1)
VERSION=`cat VERSION`
echo VERSION: $VERSION
MAINTAINER="Germar Reitze <[email protected]>"
# MAINTAINER="BIT Team <[email protected]>"
# MAINTAINER="BIT Team <[email protected]>"
update_sphinx_config () {
echo "Update '$1'"
sed -e "s/^\(\s*\)version = '.*'$/\1version = '$VERSION'/" \
-i $1
}
update_config () {
echo "Update '$1'"
sed -e "s/^\(\s*\)VERSION = '.*'$/\1VERSION = '$VERSION'/" \
-i $1
}
update_man_page () {
echo "Update '$1'"
sed -e "s/\.TH\(.*\)\"version\([^\"]*\)\"\(.*\)$/.TH\1\"version $VERSION\"\3/" \
-i $1
}
update_omf () {
echo "Update '$1'"
sed -e "s/^\([ \]*\)<version\([^0-9]*\)\([^\"]*\)\(.*\)$/\1<version\2$VERSION\4/" \
-i $1
}
# Extract all changelog lines of the specified version from the CHANGES file
# into the file given by the first argument ($1).
# This does only work if you strictly use the correct version headlines
# in the changes file:
# Version x.y.z and whatever you want # x.y.z must match $VERSION (from the VERSION file)
update_changelog () {
echo "Update '$1'"
echo "backintime ($VERSION) unstable; urgency=low" > $1
# The following awk code extracts the changelog
# starting from the "Version" headline of $VERSION
# until the next "Version" headline
# and create a new file with all the lines in between.
cat CHANGES | awk 'BEGIN {ins=0} /^Version '$VERSION'/ && (ins == 0) {ins=1; next} /^Version [0-9.]+/ && (ins == 1) {exit 0} (ins == 1) {print " "$0}' >> $1
if [ $(cat $1 | wc -l) -eq 1 ]; then
echo " * TODO prepare next version" >> $1
fi
echo " -- ${MAINTAINER} $(date -R)" >> $1
}
update_config common/config.py
update_sphinx_config common/doc-dev/conf.py
update_man_page common/man/C/backintime.1
update_man_page common/man/C/backintime-config.1
update_man_page common/man/C/backintime-askpass.1
update_man_page qt/man/C/backintime-qt.1
update_changelog debian/changelog