From e6a9a0e3cdd02d55ac98d4e909fc27d6031a1075 Mon Sep 17 00:00:00 2001 From: Jonathan Wren Date: Tue, 14 Jan 2020 20:06:14 -0800 Subject: [PATCH] add script to generate changelog --- .build/generate_changelog.sh | 40 ++++++++++++++++++++++++++++++++++++ .travis.yml | 8 ++++++++ 2 files changed, 48 insertions(+) create mode 100755 .build/generate_changelog.sh diff --git a/.build/generate_changelog.sh b/.build/generate_changelog.sh new file mode 100755 index 00000000..b0267422 --- /dev/null +++ b/.build/generate_changelog.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +FILENAME='CHANGELOG.md' + +# get the latest git tags +gittags="$(git tag --sort=-creatordate | grep -Ev '(alpha|beta|rc)')" +gittag_latest=$(printf '%s' "$gittags" | awk 'NR==1') +gittag_secondlatest=$(printf '%s' "$gittags" | awk 'NR==2') + +echo "gittag_latest: ${gittag_latest}" +echo "gittag_secondlatest: ${gittag_secondlatest}" + +# delete generated line (or it will be added multiple times) +sed -i '/This Changelog was automatically generated by/d' "$FILENAME" + +# delete trailing empty lines +sed -i -e :a -e '/^\n*$/{$d;N;};/\n$/ba' "$FILENAME" + +# determine correct tag to go back to +# @TODO +if [[ ! -z $TRAVIS_TAG ]]; then + echo "release build" + gittag=${gittag_secondlatest} +else + echo "merge into master or develop" + gittag=${gittag_latest} +fi +echo "gittag: ${gittag}" + +# find the line the tag starts on, and subtract 1 +tagline=$(grep -n "^## \[\?$gittag\]\?" CHANGELOG.md | awk '{print $1}' FS=':' | head -1) +echo "tagline: ${tagline}" +[[ ! -z $tagline ]] && sed -i "1,$(expr $tagline - 1)d" "$FILENAME" + +# generate the changelog +docker run -it --rm -v "$(pwd)":/usr/local/src/your-app ferrarimarco/github-changelog-generator -t $CHANGELOG_GITHUB_TOKEN --since-tag $gittag + +# @TODO commit changes, etc +git diff + diff --git a/.travis.yml b/.travis.yml index 079442b0..0f6757cf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -114,6 +114,14 @@ jobs: env: - TZ=America/Edmonton + # Changelog for Unreleased changes + - stage: Update Changelog + if: (tag IS present) OR (branch = develop AND type NOT IN (pull_request)) + install: + - echo 'Skipping install' + script: + - ./.build/generate_changelog.sh + - stage: Deploy before_deploy: - poetry config pypi-token.pypi "$PYPI_TOKEN"