From 321049a5c042a8580b67813dcdae6ff0e7fb3f7d Mon Sep 17 00:00:00 2001 From: Phil Schneider Date: Tue, 6 Feb 2024 15:14:21 +0100 Subject: [PATCH] feat(nuget): adjust version check script Refs: CPLP-3400 --- scripts/nuget_version_check.sh | 58 ++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/scripts/nuget_version_check.sh b/scripts/nuget_version_check.sh index 048024efb4..66936801d7 100755 --- a/scripts/nuget_version_check.sh +++ b/scripts/nuget_version_check.sh @@ -48,27 +48,57 @@ check_version_update(){ return fi - # version prefix change is mandatory - if ! git diff $branchRange -- "$props_file" | grep -qE '^\+[[:space:]]*[0-9]+\.[0-9]+\.[0-9]+' || - # version suffix update not permitted - git diff $branchRange -- "$props_file" | grep -qE '^\+[[:space:]]*[^<]*'; then - version_update_needed+=($project) - return + suffix_before=$(git diff $branchRange -- "$props_file" | grep -E '^-.*' | sed -E 's/^-.*([^<]*)<\/VersionSuffix>/\1/') + suffix_after=$(git diff $branchRange -- "$props_file" | grep -E '^\+.*' | sed -E 's/^\+.*([^<]*)<\/VersionSuffix>/\1/') + + version_before=$(git diff $branchRange -- "$props_file" | grep -E '^-.*' | sed -E 's/^-.*([^<]*)<\/VersionPrefix>/\1/') + version_after=$(git diff $branchRange -- "$props_file" | grep -E '^\+.*' | sed -E 's/^\+.*([^<]*)<\/VersionPrefix>/\1/') + + if [ -z $version_after ] && + [ -z $suffix_after ] && + [ -z $suffix_before ]; then + version_update_needed+=($project) + return + fi + + if [ -z $version_before ]; then + version_before="0.0.0" + fi + + if [ -z $version_after ]; then + version_after=$version_before fi - version_before=$(git diff $branchRange -- "$props_file" | grep -E '^-.*' | sed -E 's/^-.*([^<]+)<\/VersionPrefix>/\1/') - version_after=$(git diff $branchRange -- "$props_file" | grep -E '^\+.*' | sed -E 's/^\+.*([^<]+)<\/VersionPrefix>/\1/') - IFS='.' read -r major_before minor_before patch_before <<< "$version_before" IFS='.' read -r major_after minor_after patch_after <<< "$version_after" if [ -n "$major_before" ] && [ -n "$major_after" ] && [ -n "$minor_before" ] && [ -n "$minor_after" ] && - [ -n "$patch_before" ] && [ -n "$patch_after" ] && - ( [ "$major_after" -gt "$major_before" ] || - [ "$major_before" -eq "$major_after" -a "$minor_after" -gt "$minor_before" ] || - [ "$major_before" -eq "$major_after" -a "$minor_before" -eq "$minor_after" -a "$patch_after" -gt "$patch_before" ] ); then - return; + [ -n "$patch_before" ] && [ -n "$patch_after" ]; then + + # example + # 1.0.0.rc1 -> 1.0.0.rc1 OK + # 1.0.0.rc1 -> 1.0.0.rc2 OK + # 1.0.0.rc1 -> 1.0.0 OK + if [ -n "$suffix_before" ] && + [ "$major_after" -eq "$major_before" -a "$minor_after" -eq "$minor_before" -a "$patch_after" -eq "$patch_before" ]; then + return + fi + + # example + # 1.0.0 -> 1.1.0.rc1 OK + # 1.0.0.rc1 -> 1.1.0.rc2 OK + # 1.0.0 -> 2.0.0 OK + # 1.0.0 -> 1.1.0 OK + # 1.0.0 -> 1.0.1 OK + # 1.0.0 -> 1.0.0.rc1 NOT OK + # 1.0.0 -> 0.9.0 NOT OK + if [ "$major_after" -gt "$major_before" ] || + [ "$major_after" -eq "$major_before" -a "$minor_after" -gt "$minor_before" ] || + [ "$major_after" -eq "$major_before" -a "$minor_after" -eq "$minor_before" -a "$patch_after" -gt "$patch_before" ]; then + return; + fi + fi version_update_needed+=($project)