Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/src/scmversion/gen_scmversion.sh
4802 views
1
#!/bin/sh
2
3
VERSION_FILE="scmversion.cpp"
4
5
CURDIR=$(pwd)
6
if [ "$(uname -s)" = "Darwin" ]; then
7
cd "$(dirname $(python3 -c 'import os,sys;print(os.path.realpath(sys.argv[1]))' "$0"))"
8
else
9
cd $(dirname $(readlink -f $0))
10
fi
11
12
13
HASH=$(git rev-parse HEAD)
14
BRANCH=$(git rev-parse --abbrev-ref HEAD | tr -d '\r\n')
15
TAG=$(git describe --dirty | tr -d '\r\n')
16
VERSION=$(echo "${TAG}" | sed -E 's/-g[0-9a-f]+//')
17
DATE=$(git log -1 --date=iso8601-strict --format=%cd)
18
19
cd $CURDIR
20
21
SIGNATURE_LINE="// ${HASH} ${BRANCH} ${TAG} ${DATE}"
22
23
if [ -f $VERSION_FILE ]; then
24
EXISTING_LINE=$(head -n1 $VERSION_FILE | tr -d '\n')
25
if [ "$EXISTING_LINE" = "$SIGNATURE_LINE" ]; then
26
echo "Signature matches, skipping writing ${VERSION_FILE}"
27
exit 0
28
fi
29
fi
30
31
echo "Writing ${VERSION_FILE}..."
32
33
cat > $VERSION_FILE << EOF
34
${SIGNATURE_LINE}
35
const char* g_scm_hash_str = "${HASH}";
36
const char* g_scm_branch_str = "${BRANCH}";
37
const char* g_scm_tag_str = "${TAG}";
38
const char* g_scm_version_str = "${VERSION}";
39
const char* g_scm_date_str = "${DATE}";
40
41
EOF
42
43
44