@@ -16,30 +16,49 @@ jobs:
16
16
17
17
- name : Generate
18
18
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
31
42
fi
32
- previous =$tag
43
+ currentTag =$tag
33
44
done
34
45
35
46
- name : Commit
36
47
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"
42
54
git push
55
+ if [ $? -eq 0 ]; then
56
+ echo "Push succeeded"
57
+ else
58
+ echo "Push failed"
59
+ exit 1
60
+ fi
43
61
fi
62
+
44
63
env :
45
64
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments