3 function Recho() { echo -e "\e[0;31m""$@""\e[0m"; }
4 function Gecho() { echo -e "\e[0;32m""$@""\e[0m"; }
5 function Becho() { echo -e "\e[0;34m""$@""\e[0m"; }
17 $(basename $0) [OPTIONS]
20 -h,-?,--help This page.
23 Prepare a new changes file entry preloaded with all commits since the last
24 changes tag and load it into \$EDITOR (vi). If the version file was changed,
25 optionally submitt and tag the new changes. Otherwise simply leave the changes
28 Don't forgett to push created tags as well: git push --tags
53 EMAIL="$(git config --get user.email)"
55 CHANGESFILE=$(ls package/*.changes)
56 test -f "$CHANGESFILE" || errexit "No changes file '$CHANGESFILE'"
58 VERSIONFILE="VERSION.cmake"
59 test -f "$VERSIONFILE" || errexit "No version file '$VERSIONFILE'"
61 function getversion() {
68 /^ *SET *\( *LIBZYPP_MAJOR *"[0-9]+" *\)/ {getnum();major=$0}
69 /^ *SET *\( *LIBZYPP_MINOR *"[0-9]+" *\)/ {getnum();minor=$0}
70 /^ *SET *\( *LIBZYPP_PATCH *"[0-9]+" *\)/ {getnum();patch=$0}
71 /^ *SET *\( *LIBZYPP_COMPATMINOR *"[0-9]+" *\)/ {getnum();compatminor=$0}
73 gsub("^.*RELEASED: *","");
76 gsub(".*\\(","",lastcompat)
77 gsub("\\).*","",lastcompat)
82 thisrelease = major"."minor"."patch" ("compatminor")"
83 printf "LAST_RELEASE='%s'\n", lastrelease
84 printf "LAST_COMPAT='%s'\n", lastcompat
85 printf "THIS_RELEASE='%s'\n", major"."minor"."patch
86 printf "THIS_COMPAT='%s'\n", compatminor
91 function sameVersion() {
92 test "$LAST_RELEASE" == "$THIS_RELEASE" -a "$LAST_COMPAT" == "$THIS_COMPAT"
95 function getchanges() {
96 git log --no-merges --pretty=format:'- %s' "$LAST_RELEASE"..HEAD | grep -v 'po.tar.bz2'
99 function newchangesentry() {
100 echo "-------------------------------------------------------------------"
101 echo "$(date) - $EMAIL"
105 echo "- version $THIS_RELEASE ($THIS_COMPAT)"
110 git status --porcelain | grep '^[^ ?]' | grep -v "$VERSIONFILE\|$CHANGESFILE" && {
111 Becho "!!! Files other than version and changes are added to the index."
112 Becho "!!! Doing dryrun..."
115 if [ "$DRYRUN" == "1" ]; then
119 Becho "!!! Version is unchanged at $LAST_RELEASE ($LAST_COMPAT)."
135 Becho "!!! Version is unchanged at $LAST_RELEASE ($LAST_COMPAT)."
136 read -n 1 -p "$(Gecho "(a)bort, (c)ontinue, (e)dit version: ")" RES
144 Becho "!!! Leave $VERSIONFILE untouched"
155 # prepare changes file
158 trap " [ -f \"$TMPFILE\" ] && /bin/rm -f -- \"$TMPFILE\" " 0 1 2 3 13 15
159 { newchangesentry; cat $CHANGESFILE; } >$TMPFILE
162 while [ "$RES" == "e" ]; do
165 awk '{print}/^----------/{n=n+1; if ( n == 2 ) exit 0; }' $TMPFILE
166 read -n 1 -p "$(Gecho "(a)bort, (c)ontinue, (s)ubmitt, (e)dit : ")" RES
173 Becho "!!! Store new $CHANGESFILE"
174 mv $TMPFILE $CHANGESFILE
176 test "$RES" == "s" && {
177 if [ "$LAST_RELEASE" == "$THIS_RELEASE" ]; then
178 git add "$CHANGESFILE" && git commit -m "changes"
180 Becho "!!! Remember new version $THIS_RELEASE in $VERSIONFILE"
181 sed -i "s/^# LAST RELEASED:.*$/# LAST RELEASED: $THIS_RELEASE ($THIS_COMPAT)/" $VERSIONFILE
182 git add "$CHANGESFILE" "$VERSIONFILE" \
183 && git commit -m "changes $THIS_RELEASE ($THIS_COMPAT)" \
184 && git tag -m "tagging $THIS_RELEASE" "$THIS_RELEASE" HEAD
186 Becho "!!! Do not forget to push the commit and the tag: $(Gecho git push --tags)"
192 Becho "!!! Leave $CHANGESFILE untouched"