This repository has been archived on 2025-10-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
appa-os/scripts/versioning.sh
2024-10-28 21:10:59 -03:00

46 lines
1.5 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" \))"
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"
# Exibir versão atualizada
printf "%d.%d.%d" "$MAJOR" "$MINOR" "$PATCH"