#!/usr/bin/env bash set -e list-files() { git show --pretty="" --name-only HEAD } list-articles() { list-files | grep -E '^src/.*[.](md|org)$' | grep -v -e '/index[.]md$' -e '/changelog[.]md$' } should-insert() { test -n "$(list-articles)" } generate-entry() { git log -n1 --date='format:%Y-%m-%d' --format=$'## %ad %an <%ae>\n\n%B' | cat -s } html_escape() { sed ' /^\S/ { s/&/\&/g s//\>/g } s/^ \S/ &/ ' } insert() { { printf '%s\n' \ 'ChangeLog' \ '=========' \ '' generate-entry | html_escape echo cat src/changelog.md | sed '1,3d' } | bin/write-atomic src/changelog.md } main() { cd "$(dirname -- "$0")/.." if should-insert; then insert git add src/changelog.md git commit -m 'Auto-insert entry to ChangeLog' --author='Logger ' fi } main "$@"