vaguerent/.ci/release-initiator
Chris Roberts 1bd952a598 Fix development commit content
Update the commit contents for the development changes to indicate
development related updates and use the new developement version.
2023-10-16 09:22:28 -07:00

141 lines
4.0 KiB
Bash
Executable File

#!/usr/bin/env bash
csource="${BASH_SOURCE[0]}"
while [ -h "$csource" ] ; do csource="$(readlink "$csource")"; done
root="$( cd -P "$( dirname "$csource" )/../" && pwd )"
. "${root}/.ci/load-ci.sh"
if [ "${#}" -ne 1 ]; then
printf "Usage: %s VERSION\n" "${0}" >&2
exit 1
fi
version="${1}"
info "Updating repository files for ${version} release"
if [[ "${version}" = "v"* ]]; then
failure "Invalid version format, cannot start with 'v': %s" "${version}"
fi
if ! valid_release_version "${version}"; then
failure "Invalid version format provided: %s" "${version}"
fi
debug "Configuring git"
hashibot_git
debug "Updating version.txt with version value: %s" "${version}"
if [ ! -f "version.txt" ]; then
failure "Unable to locate version.txt file"
fi
printf "%s" "${version}" > version.txt
debug "Updating CHANGELOG.md"
if [ ! -f "CHANGELOG.md" ]; then
failure "Unable to locate CHANGLOG.md file"
fi
datestamp="$(date "+%B %d, %Y")" ||
failure "Unable to generate date"
printf "## %s (%s)\n" "${version}" "${datestamp}" > .CHANGELOG.md.new
grep -v UNRELEASED < CHANGELOG.md >> .CHANGELOG.md.new ||
failure "Unable to update CHANGELOG contents"
mv .CHANGELOG.md.new CHANGELOG.md ||
failure "Unable to overwrite CHANGELOG file"
license_date="$(date "+%Y")" ||
failure "Unable to generate year for license"
license_template="./templates/license/license.tmpl"
license_destination="./LICENSE"
debug "Updating license file: ${license_destination}"
if [ ! -f "${license_template}" ]; then
failure "Unable to locate license template (${license_template})"
fi
if [ ! -f "${license_destination}" ]; then
failure "Unable to locate license destination (${license_destination})"
fi
sed "s/%VERSION%/${version}/" "${license_template}" > "${license_destination}" ||
failure "Unable to update version in ${license_destination}"
sed -i "s/%YEAR%/${license_date}/" "${license_destination}" ||
failure "Unable to update year in ${license_destination}"
debug "Updating download version in website source"
version_file="./website/data/version.json"
if [ ! -f "${version_file}" ]; then
failure "Unable to locate version data file (%s)" "${version_file}"
fi
sed -i "s/ \"VERSION\":.*,/ \"VERSION\": \"${version}\",/" "${version_file}" ||
failure "Unable to update version data file (%s)" "${version_file}"
debug "Commit version updates"
# display changes before commit
git status
git add version.txt CHANGELOG.md LICENSE "${version_file}" ||
failure "Unable to stage updated release files for commit"
git commit -m "Release ${version}" ||
failure "Unable to commit updated files for release"
release_tag="v${version}"
debug "Creating new tag %s" "${release_tag}"
git tag "${release_tag}"
# Generate a new version for development
version_prefix="${version%.*}"
patch="${version##*.}"
new_patch=$(( "${patch}" + 1 ))
dev_version="${version_prefix}.${new_patch}.dev"
debug "Updating files for new development - %s" "${dev_version}"
debug "Updating version.txt with version value: %s" "${dev_version}"
printf "%s\n" "${dev_version}" > version.txt
debug "Updating CHANGELOG"
printf "## %s (UNRELEASED)\n\nFEATURES:\n\nIMPROVEMENTS:\n\nBUG FIXES:\n\nVAGRANT-GO:\n\n" "${dev_version}" > .CHANGELOG.md.new
cat CHANGELOG.md >> .CHANGELOG.md.new
mv .CHANGELOG.md.new CHANGELOG.md ||
failure "Unable to overwrite CHANGELOG file"
debug "Updating LICENSE"
sed "s/%VERSION%/${dev_version}/" "${license_template}" > LICENSE ||
failure "Unable to update LICENSE"
debug "Commit development version updates"
# display changes before commit
git status
git add version.txt CHANGELOG.md LICENSE ||
failure "Unable to stage updated development files for commit"
git commit -m "Update files for new development ${dev_version}" ||
failure "Unable to commit updated files for development"
# Now that all changes are complete, push
debug "Pushing all changes to origin"
git push origin main ||
failure "Unable to push changes to main"
git push origin "${release_tag}" ||
failure "Unable to push tag to main"