-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdate-changelog.sh
executable file
·42 lines (33 loc) · 1.02 KB
/
update-changelog.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env bash
root="https://github.com/Own-Data-Privateer/hoardy-mail"
set -e
sed -n "0,/^\[/ p" CHANGELOG.md | head -n -1 > CHANGELOG.new
{
emit() {
echo "## [$1] - $4" >&4
if [[ -z $3 ]]; then
echo "[$1]: $root/releases/tag/$2"
else
echo "[$1]: $root/compare/$3...$2"
fi
}
prev=
git tag --sort=-refname --sort=taggerdate --format '%(taggerdate:short) %(refname:short)' | while IFS= read -r -d $'\n' line ; do
refname=${line##* }
date=${line%% *}
emit "$refname" "$refname" "$prev" "$date"
prev="$refname"
done
} 4> CHANGELOG.spine.rnew | tac >> CHANGELOG.new
{
echo
sed -n "/^# TODO/,$ p" CHANGELOG.md
} >> CHANGELOG.new
{
echo "# Changelog"
cat CHANGELOG.spine.rnew | tac
} >> CHANGELOG.spine.new
sed -n '/^# TODO/,$ d; /^##\? / p' CHANGELOG.md | sed 's/^\(## [^:]*\): .*/\1/g' > CHANGELOG.spine.old
diff -u CHANGELOG.spine.old CHANGELOG.spine.new || true
rm CHANGELOG.spine.*
mv CHANGELOG.new CHANGELOG.md