-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerate-changelog
executable file
·46 lines (35 loc) · 1.04 KB
/
generate-changelog
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
43
44
45
46
#!/bin/bash -e
fatal() { echo "fatal [$(basename $0)]: $@" 1>&2; exit 1; }
usage() {
cat<<EOF
Syntax: $0
Convenience script to output updated CHANGELOG.md for manual editing
Notes::
- auto-increments major.minor.PATCH from latest git tag (or 0.1.0)
- includes short git log of changes since latest git tag (or all)
EOF
exit 1
}
increment_version() {
version=$1
last_char=${version#${version%?}}
echo $version | sed 's/[0-9]$/'"$((last_char+1))"'/'
}
get_log() {
since=$1
[ "$since" ] && between=$since..HEAD
git --no-pager log $between --reverse --pretty=format:'- %s'
}
[[ "$#" = "0" ]] || usage
latest=$(git tag -l | head -1)
gitlog=$(get_log $latest)
[ "$latest" ] && version=$(increment_version $latest)
echo -e "## ${version:-0.1.0}\n"
echo -e "<replace with high level summary>\n"
echo -e "#### New features\n"
echo -e "#### Bugfixes\n"
echo "${gitlog}" | grep -i fix && echo || true
echo -e "#### Other changes\n"
echo "${gitlog}" | grep -vi fix && echo || true
[ -e CHANGELOG.md ] && cat CHANGELOG.md
exit 0