fixup Fix to build with libxml 2.12.x (fixes #505)
[platform/upstream/libzypp.git] / mkChangelog
index b67ad94..6d4303e 100755 (executable)
@@ -48,7 +48,13 @@ esac
 
 export LC_ALL=""
 export LANG="en"
-EDITOR=${EDITOR:-vi}
+
+function Edit()
+{
+  local FILE="$1"
+  vi "$FILE"
+  sed -i 's/ \+$//' "$FILE"
+}
 
 EMAIL="$(git config --get user.email)"
 
@@ -84,16 +90,27 @@ function getversion() {
     printf "LAST_COMPAT='%s'\n", lastcompat
     printf "THIS_RELEASE='%s'\n", major"."minor"."patch
     printf "THIS_COMPAT='%s'\n", compatminor
+    printf "THIS_MINOR='%s'\n", minor
+    printf "THIS_PATCH='%s'\n", patch
   }
   '
 }
 
+function setversion() {
+  local KEY="$1"
+  local VAL="$2"
+  sed -i "s/^ *SET *( *${KEY} .*/SET(${KEY} \"${VAL}\")/" "$VERSIONFILE"
+}
+
 function sameVersion() {
   test "$LAST_RELEASE" == "$THIS_RELEASE" -a "$LAST_COMPAT" == "$THIS_COMPAT"
 }
 
 function getchanges() {
-  git log --no-merges --pretty=format:'- %s' "$LAST_RELEASE"..HEAD | grep -v 'po.tar.bz2'
+  git log --no-merges --pretty=format:'@@%B' "$LAST_RELEASE"..HEAD     \
+  | awk '/^@@/{p=1}/^@@Translated using Weblate/{p=0}(p){print}'       \
+  | sed '/./{H;$!d};x;/./{s/ *\n */ /g;s/^ *//;s/ *$//;/[^]})!?:.]$/s/$/./;p};d'       \
+  | fold -s -w 66 | sed '/^@@/{s/^../- /;p;d};s/^/  /'
 }
 
 function newchangesentry() {
@@ -107,13 +124,35 @@ function newchangesentry() {
   echo ""
 }
 
+function is_fast_forward() {
+  git fetch
+  test "$(git rev-list HEAD..origin/$(git name-rev --name-only HEAD) --count)" == "0"
+}
+
+is_fast_forward || {
+  Recho "!!!"
+  Recho "!!! Branch is not fast-forward. Pull changes first."
+  Recho "!!!"
+  exit 7
+}
+
 git status --porcelain | grep '^[^ ?]' | grep -v "$VERSIONFILE\|$CHANGESFILE" && {
   Becho "!!! Files other than version and changes are added to the index."
   Becho "!!! Doing dryrun..."
   DRYRUN=1
 }
+
+# A tag for $LAST_RELEASE must exist!
+eval $(getversion)
+git rev-parse -q --verify "$LAST_RELEASE" >/dev/null || {
+  Recho "!!!"
+  Recho "!!! There is no LAST_RELEASE tag '$LAST_RELEASE'. Check manually. "
+  Recho "!!! (git tag -m 'tagging $LAST_RELEASE' '$LAST_RELEASE' ?commit?)"
+  Recho "!!!"
+  exit 8
+}
+
 if [ "$DRYRUN" == "1" ]; then
-  eval $(getversion)
   newchangesentry
   sameVersion && {
     Becho "!!! Version is unchanged at $LAST_RELEASE ($LAST_COMPAT)."
@@ -121,7 +160,6 @@ if [ "$DRYRUN" == "1" ]; then
   exit 0
 fi
 
-
 # check version file
 #
 while true; do
@@ -129,21 +167,39 @@ while true; do
   # $LAST_COMPAT
   # $THIS_RELEASE
   # $THIS_COMPAT
-  eval $(getversion)
   sameVersion && {
     newchangesentry
     Becho "!!! Version is unchanged at $LAST_RELEASE ($LAST_COMPAT)."
-    read -n 1 -p "$(Gecho "(a)bort, (c)ontinue, (e)dit version: ")" RES
+    read -n 1 -p "$(Gecho "(a)bort, (c)ontinue, (P) patch, (M) minor, (I) incompat minor, (e)dit version [e]: ")" RES
     echo
-    case "$RES" in
+    case "${RES:-e}" in
       [eE]*)
-       $EDITOR $VERSIONFILE
+       Edit $VERSIONFILE
+       eval $(getversion)
        continue
        ;;
       [cC])
        Becho "!!! Leave $VERSIONFILE untouched"
        break
        ;;
+      [P])
+       setversion LIBZYPP_PATCH $(($THIS_PATCH + 1))
+       eval $(getversion)
+       continue
+       ;;
+      [M])
+       setversion LIBZYPP_MINOR $(($THIS_MINOR + 1))
+       setversion LIBZYPP_PATCH 0
+       eval $(getversion)
+       continue
+       ;;
+      [I])
+       setversion LIBZYPP_COMPATMINOR $(($THIS_MINOR + 1))
+       setversion LIBZYPP_MINOR $(($THIS_MINOR + 1))
+       setversion LIBZYPP_PATCH 0
+       eval $(getversion)
+       continue
+       ;;
       *)
        errexit "aborted"
        ;;
@@ -160,12 +216,12 @@ trap " [ -f \"$TMPFILE\" ] && /bin/rm -f -- \"$TMPFILE\" " 0 1 2 3 13 15
 
 RES=e
 while [ "$RES" == "e" ]; do
-  $EDITOR $TMPFILE
+  Edit $TMPFILE
   echo
   awk '{print}/^----------/{n=n+1; if ( n == 2 ) exit 0; }' $TMPFILE
-  read -n 1 -p "$(Gecho "(a)bort, (c)ontinue, (s)ubmitt, (e)dit : ")" RES
+  read -n 1 -p "$(Gecho "(a)bort, (c)ontinue, (s)ubmitt, (e)dit [e]: ")" RES
   echo
-  case "$RES" in
+  case "${RES:-e}" in
     [eE]*)
       RES=e
       ;;