graphql-engine/cli/build/get-version.sh

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

47 lines
1.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env sh
set -e
get_changes_hash()
{
# We use this to determine if there are any new additions
local GIT_STATUS="$(git status --porcelain)"
# To determine if there are any changes
local GIT_DIFF_INDEX="$(git diff-index -p HEAD --)"
# Whether anything changed in the repo
export GIT_DIRTY="$GIT_STATUS$GIT_DIFF_INDEX"
if [ -n "$GIT_DIRTY" ]; then
DIRTY_HASH_SHORT="$(echo $GIT_DIRTY | sha256sum | awk '{print $1}' | tail -c 9)"
echo -dirty-$DIRTY_HASH_SHORT
else
echo ''
fi
}
get_main_version()
{
# Get the branch name
local GIT_BRANCH="$(git rev-parse --abbrev-ref HEAD)"
# Get the current commit id
local COMMIT_HASH_SHORT="$(git rev-parse --short HEAD)"
case "$GIT_BRANCH" in
# The master branch
'master')
echo $COMMIT_HASH_SHORT;;
# The release branches
release-*)
local RELEASE_VER="$(git describe --match "v[0-9]*" HEAD 2>/dev/null)"
test -n "$RELEASE_VER" ||
RELEASE_VER="$(expr "$GIT_BRANCH" : release-*'\(.*\)')"-$COMMIT_HASH_SHORT
echo $RELEASE_VER;;
# Everything else
*)
echo $GIT_BRANCH-$COMMIT_HASH_SHORT;;
esac
}
echo "$(get_main_version)$(get_changes_hash)"