diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2db6e72..8794543 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,4 +22,5 @@ jobs: env: CHANGELOG_FILE: CHANGELOG.md BASH_ENV: ./lib.sh + DRY_RUN: false run: ./workflows/release/tag.sh diff --git a/tags.txt b/tags.txt new file mode 100644 index 0000000..7933af7 --- /dev/null +++ b/tags.txt @@ -0,0 +1,2 @@ +# this file is generated to aid in automating releases +v0.2.1 diff --git a/workflows/release/changelog.sh b/workflows/release/changelog.sh index fda7372..105bb1d 100755 --- a/workflows/release/changelog.sh +++ b/workflows/release/changelog.sh @@ -34,19 +34,20 @@ validate() { } # Description: Calls changelog tool and updates CHANGELOG_FILE -# Globals : CHANGELOG_FILE (github workflow or .env) -# Args : 1=url 2=title 3=prefix +# Globals : CHANGELOG_FILE, TAGS_FILE (github workflow or .env) +# Args : 1=url 2=title 3=prefixes # STDERR : Might print errors # Returns : 1 if fail # Sideeffects: Updates CHANGELOG_FILE # Example : update_changelog pizza update_changelog() { - local url=$1 title=${2:-} prefix=${3:-} changes changelog flags=() + local url=$1 title=${2:-} prefixes=${3:-} changes changelog flags=() changelog=$(cat "$CHANGELOG_FILE") flags+=(-title "$title") - flags+=(-tagprefix "$prefix") + flags+=(-tagprefixes "$prefixes") flags+=(-url "$url") + flags+=(-tagsfile "${TAGS_FILE:-}") changes=$(changelog "${flags[@]}") if [ ! "$changes" ]; then @@ -55,6 +56,7 @@ update_changelog() { fi printf %s "$changes" >"$CHANGELOG_FILE" + printf "\n\n" >>"$CHANGELOG_FILE" printf %s "$changelog" >>"$CHANGELOG_FILE" } diff --git a/workflows/release/tag.sh b/workflows/release/tag.sh index 6565255..ad058e3 100755 --- a/workflows/release/tag.sh +++ b/workflows/release/tag.sh @@ -101,13 +101,19 @@ validate_tags() { } # Description: Creates and pushes git tags -# Globals : DRY_RUN (set to echo to dry run) +# Globals : DRY_RUN bool # Args : words separated by spaces # STDOUT : Prints each tag created, plus git output # STDERR : Git might output # Sideeffects: Pushes git tags # Example : tag_and_push foo/v1.1.1. bar/v1.2.3 tag_and_push() { + if [ "${DRY_RUN:-}" == "true" ]; then + DRY_RUN="echo" + else + DRY_RUN="" + fi + for tag in "$@"; do msgln "$tag" $DRY_RUN git tag "$tag" HEAD