You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2024/07/22 21:19:51 UTC

(causeway-app-petclinic) 01/05: updates tagger.sh

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to tag tags/2.1.0/01-01-starter-app
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git

commit e405e062502c4d168072c3f6fedb76d3f6a2ccff
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jul 22 21:38:33 2024 +0100

    updates tagger.sh
    
    apply one by one, and perform sed -i after each in order to fix up any issues with cherry-picking old version pom.xml files
---
 tagger.sh | 68 ++++++++++++++++++++++++++++++++++++++++++---------------------
 1 file changed, 45 insertions(+), 23 deletions(-)

diff --git a/tagger.sh b/tagger.sh
index e9f3015..fe3b302 100755
--- a/tagger.sh
+++ b/tagger.sh
@@ -1,31 +1,36 @@
 #!/bin/bash
 
 usage() {
-	echo "$(basename $0) -b base -v version -x" >&2
+	echo "$(basename $0) -b base_branch -p previous_version -v new_version -x" >&2
 	echo "" >&2
 	echo "where:" >&2
 	echo "     -b base branch, either v2 or v3" >&2
-	echo "     -v version to create new tag under" >&2
+	echo "     -p previous version" >&2
+	echo "     -v new version" >&2
 	echo "     -x execute (otherwise, is a dry run)" >&2
 	echo "" >&2
 	echo "eg:" >&2
-	echo "    $(basename $0) -b v2 -v 2.1.0" >&2
-	echo "    $(basename $0) -b v3 -v 3.1.0 -x" >&2
+	echo "    $(basename $0) -b v2 -p 2.0.0 -v 2.1.0" >&2
+	echo "    $(basename $0) -b v3 -p 3.0.0 -v 3.1.0 -x" >&2
 	echo "" >&2
 	exit 1
 }
 
-BASE=""
-VERSION=""
+BASE_BRANCH=""
+PREV_VERSION=""
+NEW_VERSION=""
 EXECUTE=""
 
-while getopts ":b:v:x" opt; do
+while getopts ":b:p:v:x" opt; do
   case ${opt} in
     b)
-      BASE=$OPTARG
+      BASE_BRANCH=$OPTARG
+      ;;
+    p)
+      PREV_VERSION=$OPTARG
       ;;
     v)
-      VERSION=$OPTARG
+      NEW_VERSION=$OPTARG
       ;;
     x)
       EXECUTE="true"
@@ -33,48 +38,65 @@ while getopts ":b:v:x" opt; do
     \? ) usage "Invalid option"
       exit 1
       ;;
-    : ) 
+    : )
       echo "Option -$OPTARG requires an argument." 1>&2; exit 1;;
   esac
 done
 shift $((OPTIND -1))
 
-if [ "$BASE" != "v2" -a "$BASE" != "v3" ]
+if [ "$BASE_BRANCH" != "v2" -a "$BASE_BRANCH" != "v3" ]
 then
 	usage
 fi
 
-if [ -z "$VERSION" ]
+if [ -z "$PREV_VERSION" -o -z "$NEW_VERSION" ]
 then
 	usage
 fi
 
 
-echo "BASE   : $BASE"
-echo "VERSION: $VERSION"
-echo "EXECUTE: $EXECUTE"
+echo "-b BASE_BRANCH  : $BASE_BRANCH"
+echo "-p PREV_VERSION : $PREV_VERSION"
+echo "-v NEW_VERSION  : $NEW_VERSION"
+echo "-x EXECUTE      : $EXECUTE"
 
 
 PREV_TAG=""
-for TAG in $(git tag -l | grep "tags/$BASE/")
+for TAG in $(git tag -l | grep "tags/$BASE_BRANCH/")
 do
-	NEW_TAG="tags/$VERSION/$(echo $TAG | cut -c9-)"
+	NEW_TAG="tags/$NEW_VERSION/$(echo $TAG | cut -c9-)"
 
 	if [ -n "$PREV_TAG" ]
 	then
-		echo "git cherry-pick $PREV_TAG..$TAG"
+	  for COMMIT in $(git log $PREV_TAG..$TAG --pretty=format:"%H")
+	  do
+
+      echo "git cherry-pick $COMMIT"
+      if [ "$EXECUTE" = "true" ]
+      then
+        git cherry-pick $COMMIT
+      fi
 
-    if [ "$EXECUTE" = "true" ]
-    then
-		  git cherry-pick $PREV_TAG..$TAG
-    fi
+      if [ "$EXECUTE" = "true" ]
+      then
+        for POM_XML in $(find . -name "pom.xml")
+        do
+            sed -i "s/<version>$PREV_VERSION<\/version>/<version>$NEW_VERION<\/version>/g" "$POM_XML"
+        done
+        if [ -n "$(git status --porcelain)" ]
+        then
+          git add .
+          git commit --amend --no-edit
+        fi
+      fi
+    done
 	fi
 
   echo "git tag $NEW_TAG"
 
   if [ "$EXECUTE" = "true" ]
   then
-	  git tag $NEW_TAG
+	  git tag -f $NEW_TAG
   fi
 
 	PREV_TAG=$TAG