42 lines
1.6 KiB
Bash
Executable File
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"
|