Files
c_cpp_boilerplate/scripts/versioning.sh

42 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
set -e
# Script to Bump Version Numbers and Update File metadata
# This script updates the version numbers of a C/C++ project, specifically in `version.hpp` or `version.h`,
#and also updates information about compilation commits and build timestamps.
VERSION_FILE="$(find "$(pwd)" \( -iname "version.hpp" -o -iname "version.h" \) -not -path "$(pwd)/build/*")"
MAJOR=$(grep -oP '([a-zA-Z]*)_VERSION_MAJOR (\K[0-9]+)' "$VERSION_FILE")
MINOR=$(grep -oP '([a-zA-Z]*)_VERSION_MINOR (\K[0-9]+)' "$VERSION_FILE")
PATCH=$(grep -oP '([a-zA-Z]*)_VERSION_PATCH (\K[0-9]+)' "$VERSION_FILE")
_bump_version() {
case "$1" in
major)
MAJOR=$((MAJOR + 1))
;;
minor)
MINOR=$((MINOR + 1))
;;
patch)
PATCH=$((PATCH + 1))
;;
*)
echo "Unknown version semantic $1" >&2
exit 124
;;
esac
}
# Atualizar versões
[ "$#" -gt 0 ] && _bump_version "$1"
sed -i "s/\([a-zA-Z]\+\)_VERSION_MAJOR \([0-9]\+\)$/\1_VERSION_MAJOR $MAJOR/" "$VERSION_FILE"
sed -i "s/\([a-zA-Z]\+\)_VERSION_MINOR \([0-9]\+\)$/\1_VERSION_MINOR $MINOR/" "$VERSION_FILE"
sed -i "s/\([a-zA-Z]\+\)_VERSION_PATCH \([0-9]\+\)$/\1_VERSION_PATCH $PATCH/" "$VERSION_FILE"
# Atualizar informações de compilação
COMMIT_HASH=$(git rev-parse HEAD)
BUILD_TIMESTAMP=$(date +%s)
sed -i "s/\([a-zA-Z]\+\)_COMMIT_HASH \"[a-zA-Z0-9]\+\"/\1_COMMIT_HASH \"$COMMIT_HASH\"/" "$VERSION_FILE"
sed -i "s/\([a-zA-Z]\+\)_BUILD_TIMESTAMP [0-9]\+/\1_BUILD_TIMESTAMP $BUILD_TIMESTAMP/" "$VERSION_FILE"