Skip to content

Commit d67e118

Browse files
committed
fix release
1 parent c6e1a90 commit d67e118

File tree

1 file changed

+42
-44
lines changed

1 file changed

+42
-44
lines changed

.github/workflows/release.yml

Lines changed: 42 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)