@@ -43,60 +43,58 @@ jobs:
4343 test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"
4444 }
4545
46- # Check each project for changes and update versions in MimeTypeCore folder
47- for proj in $(find ./MimeTypeCore -name "*.csproj"); do
48- PROJECT_NAME=$(basename "$proj")
49- PROJECT_DIR=$(dirname "$proj")
50-
51- # Get current version from csproj
52- CURRENT_VERSION=$(grep -oP '(?<=<Version>).*(?=</Version>)' "$proj" || echo "0.0.0")
53-
54- if [ -z "$CURRENT_VERSION" ]; then
55- echo "Warning: Could not find version in $proj"
56- continue
57- fi
46+ # First, find the main project (MimeTypeCore.csproj) and use its version as base
47+ MAIN_PROJECT="./MimeTypeCore/MimeTypeCore/MimeTypeCore.csproj"
48+ if [ -f "$MAIN_PROJECT" ]; then
49+ CURRENT_VERSION=$(grep -oP '(?<=<Version>).*(?=</Version>)' "$MAIN_PROJECT" || echo "1.0.0")
50+ echo "Found main project version: $CURRENT_VERSION"
5851
5952 # Split version into parts
6053 IFS='.' read -r -a VERSION_PARTS <<< "$CURRENT_VERSION"
6154 MAJOR="${VERSION_PARTS[0]}"
6255 MINOR="${VERSION_PARTS[1]}"
6356 PATCH="${VERSION_PARTS[2]}"
6457
65- # Check if project has changes since last tag
66- if [ -z "$LATEST_TAG" ] || ! git diff --quiet $LATEST_TAG HEAD -- "$PROJECT_DIR"; then
67- # Calculate new version based on release type
68- case "${{ github.event.inputs.release_type }}" in
69- "major")
70- PROJECT_NEW_VERSION="$((MAJOR + 1)).0.0"
71- ;;
72- "minor")
73- PROJECT_NEW_VERSION="${MAJOR}.$((MINOR + 1)).0"
74- ;;
75- "patch")
76- PROJECT_NEW_VERSION="${MAJOR}.${MINOR}.$((PATCH + 1))"
77- ;;
78- esac
79-
80- # Update version in csproj
81- sed -i "s/<Version>.*<\/Version>/<Version>${PROJECT_NEW_VERSION}<\/Version>/g" "$proj"
82-
83- CHANGED_PROJECTS="$CHANGED_PROJECTS$PROJECT_NAME -> $PROJECT_NEW_VERSION\n"
84- SHOULD_RELEASE="true"
85-
86- # Update NEW_VERSION if this project's version is higher
87- if [ -z "$NEW_VERSION" ] || version_gt "$PROJECT_NEW_VERSION" "$NEW_VERSION"; then
88- NEW_VERSION="$PROJECT_NEW_VERSION"
89- echo "New highest version: $NEW_VERSION from $PROJECT_NAME"
90- fi
58+ # Calculate new version based on release type
59+ case "${{ github.event.inputs.release_type }}" in
60+ "major")
61+ NEW_VERSION="$((MAJOR + 1)).0.0"
62+ ;;
63+ "minor")
64+ NEW_VERSION="${MAJOR}.$((MINOR + 1)).0"
65+ ;;
66+ "patch")
67+ NEW_VERSION="${MAJOR}.${MINOR}.$((PATCH + 1))"
68+ ;;
69+ esac
70+
71+ echo "New version will be: $NEW_VERSION"
72+ else
73+ echo "Main project not found, using fallback logic"
74+ NEW_VERSION="1.0.0"
75+ fi
76+
77+ # Update all projects in MimeTypeCore folder with the new version
78+ for proj in $(find ./MimeTypeCore -name "*.csproj"); do
79+ PROJECT_NAME=$(basename "$proj")
80+ PROJECT_DIR=$(dirname "$proj")
81+
82+ echo "Processing project: $PROJECT_NAME"
83+
84+ # Update version in csproj
85+ sed -i "s/<Version>.*<\/Version>/<Version>${NEW_VERSION}<\/Version>/g" "$proj"
86+
87+ # If version tag doesn't exist, add it
88+ if ! grep -q "<Version>" "$proj"; then
89+ # Add version after PropertyGroup opening tag
90+ sed -i '/<PropertyGroup>/a\ <Version>'${NEW_VERSION}'</Version>' "$proj"
9191 fi
92+
93+ CHANGED_PROJECTS="$CHANGED_PROJECTS$PROJECT_NAME -> $NEW_VERSION\n"
94+ SHOULD_RELEASE="true"
9295 done
9396
94- if [ -z "$NEW_VERSION" ]; then
95- echo "No version changes detected"
96- exit 0
97- fi
98-
99- echo "Final highest version will be: v$NEW_VERSION"
97+ echo "Final version: v$NEW_VERSION"
10098
10199 # Set environment variables for next steps
102100 echo "CHANGED_PROJECTS<<EOF" >> $GITHUB_ENV
0 commit comments