2222 os : ubuntu-22.04
2323 arch : amd64
2424 - platform : macos
25- os : macos-13
25+ os : macos-15-intel
2626 arch : amd64
2727 - platform : macos
2828 os : macos-latest
@@ -64,22 +64,25 @@ jobs:
6464 cache-dependency-path : |
6565 core/go.sum
6666
67- - name : Setup Flutter Master
68- if : startsWith(matrix.os, 'windows-11-arm') || startsWith(matrix.os, 'ubuntu-24.04-arm')
67+ - name : Setup Flutter
68+ if : ${{ !( startsWith(matrix.os, 'windows-11-arm') || startsWith(matrix.os, 'ubuntu-24.04-arm')) }}
6969 uses : subosito/flutter-action@v2
7070 with :
71- channel : ' master'
71+ channel : stable
72+ flutter-version : 3.35.7
7273 cache : true
73- - name : Setup Flutter
74- if : ${{ !( startsWith(matrix.os, 'windows-11-arm') || startsWith(matrix.os, 'ubuntu-24.04-arm')) }}
74+ - name : Setup Flutter With Other
75+ if : startsWith(matrix.os, 'windows-11-arm') || startsWith(matrix.os, 'ubuntu-24.04-arm')
7576 uses : subosito/flutter-action@v2
7677 with :
77- channel : ' stable'
78+ channel : master
79+ flutter-version : 3.35.7
7880 cache : true
79- # flutter-version: 3.29.3
8081
8182 - name : Get Flutter Dependency
82- run : flutter pub get
83+ run : |
84+ flutter --version
85+ flutter pub get
8386
8487 - name : Setup
8588 run : dart setup.dart ${{ matrix.platform }} ${{ matrix.arch && format('--arch {0}', matrix.arch) }} ${{ env.IS_STABLE == 'true' && '--env stable' || '' }}
@@ -104,34 +107,26 @@ jobs:
104107 - name : Generate
105108 if : ${{ env.IS_STABLE == 'true' }}
106109 run : |
107- tags=($(git tag --merged $(git rev-parse HEAD) --sort=-creatordate))
108- preTag=$(grep -oP '^## \K.*' CHANGELOG.md | head -n 1)
109- currentTag=""
110- for ((i = 0; i <= ${#tags[@]}; i++)); do
111- if (( i < ${#tags[@]} )); then
112- tag=${tags[$i]}
113- else
114- tag=""
115- fi
116- if [ -n "$currentTag" ]; then
117- if [ "$(echo -e "$currentTag\n$preTag" | sort -V | head -n 1)" == "$currentTag" ]; then
118- break
119- fi
120- fi
121- if [ -n "$currentTag" ]; then
122- echo "## $currentTag" >> NEW_CHANGELOG.md
123- echo "" >> NEW_CHANGELOG.md
124- if [ -n "$tag" ]; then
125- git log --pretty=format:"%B" "$tag..$currentTag" | awk 'NF {print "- " $0} !NF {print ""}' >> NEW_CHANGELOG.md
126- else
127- git log --pretty=format:"%B" "$currentTag" | awk 'NF {print "- " $0} !NF {print ""}' >> NEW_CHANGELOG.md
128- fi
129- echo "" >> NEW_CHANGELOG.md
130- fi
131- currentTag=$tag
110+ last_ver=$(grep -m1 '^## ' CHANGELOG.md 2>/dev/null | sed 's/^## //')
111+
112+ tags=($(git tag --merged HEAD --sort=-creatordate))
113+
114+ temp="NEW_CHANGELOG.md" > "$temp"
115+
116+ for i in "${!tags[@]}"; do
117+ curr="${tags[i]}"
118+ [[ "$curr" == "$last_ver" ]] && break
119+
120+ prev="${tags[i+1]}"
121+ range="${prev:+$prev..}$curr"
122+
123+ echo -e "## $curr\n" >> "$temp"
124+ git log --no-merges --pretty=format:"%B" "$range" | \
125+ awk '!/Update changelog/ && NF {print "- " $0 "\n"}' >> "$temp"
132126 done
133- cat CHANGELOG.md >> NEW_CHANGELOG.md
134- cat NEW_CHANGELOG.md > CHANGELOG.md
127+ [ -f CHANGELOG.md ] && cat CHANGELOG.md >> "$temp"
128+
129+ mv "$temp" CHANGELOG.md
135130
136131 - name : Commit
137132 if : ${{ env.IS_STABLE == 'true' }}
@@ -181,31 +176,24 @@ jobs:
181176
182177 - name : Generate release.md
183178 run : |
184- tags=($(git tag --merged $(git rev-parse HEAD) --sort=-creatordate))
185- preTag=$(curl --silent "https://api.github.com/repos/chen08209/FlClash/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")' || echo "")
186- currentTag=""
187- for ((i = 0; i <= ${#tags[@]}; i++)); do
188- if (( i < ${#tags[@]} )); then
189- tag=${tags[$i]}
190- else
191- tag=""
192- fi
193- if [ -n "$currentTag" ]; then
194- if [ "$(echo -e "$currentTag\n$preTag" | sort -V | head -n 1)" == "$currentTag" ]; then
195- break
196- fi
197- fi
198- if [ -n "$currentTag" ]; then
199- if [ -n "$tag" ]; then
200- git log --pretty=format:"%B" "$tag..$currentTag" | awk 'NF {print "- " $0} !NF {print ""}' >> release.md
201- else
202- git log --pretty=format:"%B" "$currentTag" | awk 'NF {print "- " $0} !NF {print ""}' >> release.md
203- fi
204- echo "" >> release.md
205- fi
206- currentTag=$tag
179+ tags=($(git tag --merged HEAD --sort=-creatordate))
180+ preTag=$(curl -s "https://api.github.com/repos/chen08209/FlClash/releases/latest" | \
181+ sed -nE 's/.*"tag_name": "([^"]+)".*/\1/p')
182+
183+ [ -z "$preTag" ] && preTag=""
184+
185+ out="release.md" > "$out"
186+
187+ for i in "${!tags[@]}"; do
188+ curr="${tags[i]}"
189+ [[ "$curr" == "$preTag" ]] && break
190+
191+ prev="${tags[i+1]}"
192+ range="${prev:+$prev..}$curr"
193+
194+ git log --no-merges --pretty=format:"%B" "$range" | \
195+ awk '!/Update changelog/ && NF {print "- " $0 "\n"}' >> "$out"
207196 done
208-
209197 - name : Push to telegram
210198 env :
211199 TELEGRAM_BOT_TOKEN : ${{ secrets.TELEGRAM_BOT_TOKEN }}
0 commit comments