Skip to content

Commit be4eaf4

Browse files
committed
Update CHANGELOG.md
1 parent 72bef5f commit be4eaf4

File tree

2 files changed

+37
-648
lines changed

2 files changed

+37
-648
lines changed

.github/workflows/change.yaml

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,49 @@ jobs:
1616

1717
- name: Generate
1818
run: |
19-
tags=$(git tag --sort=creatordate)
20-
previous=""
21-
if [ ! -f CHANGELOG.md ]; then
22-
echo "" > CHANGELOG.md
23-
else
24-
previous=$(grep -oP '^## \K.*' CHANGELOG.md | tail -n 1)
25-
fi
26-
for tag in $tags; do
27-
if [ -n "$previous" ]; then
28-
echo "## $tag" >> CHANGELOG.md
29-
git log --pretty=format:"* %s (%h)" "$previous..$tag" >> CHANGELOG.md
30-
echo -e "\n" >> CHANGELOG.md
19+
tags=($(git tag --merged $(git rev-parse HEAD) --sort=-creatordate))
20+
preTag=$(grep -oP '^## \K.*' CHANGELOG.md | head -n 1)
21+
currentTag=""
22+
for ((i = 0; i <= ${#tags[@]}; i++)); do
23+
if (( i < ${#tags[@]} )); then
24+
tag=${tags[$i]}
25+
else
26+
tag=""
27+
fi
28+
if [ -n "$currentTag" ]; then
29+
if [ "$(echo -e "$currentTag\n$preTag" | sort -V | head -n 1)" == "$currentTag" ]; then
30+
break
31+
fi
32+
fi
33+
if [ -n "$currentTag" ]; then
34+
echo "## $currentTag" >> CHANGELOG.md
35+
echo "" >> CHANGELOG.md
36+
if [ -n "$tag" ]; then
37+
git log --pretty=format:"%B" "$tag..$currentTag" | awk 'NF {print "- " $0} !NF {print ""}' >> CHANGELOG.md
38+
else
39+
git log --pretty=format:"%B" "$currentTag" | awk 'NF {print "- " $0} !NF {print ""}' >> CHANGELOG.md
40+
fi
41+
echo "" >> CHANGELOG.md
3142
fi
32-
previous=$tag
43+
currentTag=$tag
3344
done
3445
3546
- name: Commit
3647
run: |
37-
if !git diff --cached --quiet; then
38-
git config --local user.email "action@github.com"
39-
git config --local user.name "GitHub Action"
40-
git add CHANGELOG.md
41-
git commit -m "Update Changelog"
48+
git add CHANGELOG.md
49+
if ! git diff --cached --quiet; then
50+
echo "Commit pushing"
51+
git config --local user.email "chen08209@gmail.com"
52+
git config --local user.name "chen08209"
53+
git commit -m "Update changelog"
4254
git push
55+
if [ $? -eq 0 ]; then
56+
echo "Push succeeded"
57+
else
58+
echo "Push failed"
59+
exit 1
60+
fi
4361
fi
62+
4463
env:
4564
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)