Realtek/tool/Gadgets/version_generation/GitGenerateVersion.sh
2025-11-25 10:21:47 +08:00

114 lines
2.8 KiB
Bash

#!/bin/bash
# template file
TEMPLATE_FILE="git_version.template"
TEMPLATE_PATH=$2/$TEMPLATE_FILE
VERSION_PATH=$3
echo $TEMPLATE_PATH
echo $VERSION_PATH
# $1 is the prefix of Git Tag, and default is "bb3-v"
if [ ! $1 ]; then
TAG_HEADER="bb3-v"
else
TAG_HEADER=$1v
fi
TAG_HEADER_LEN=`echo $TAG_HEADER | wc -c`
#echo $TAG_HEADER_LEN
# get full describe version
FULL_VERSION=`git describe`
# set version to 0.0.0 if no tag name
if [ ! $FULL_VERSION ]; then
FULL_VERSION=$TAG_HEADER"0.0.0"
fi
#echo $FULL_VERSION
# remove tag header
PROJ_VERSION=`echo $FULL_VERSION | cut -c $TAG_HEADER_LEN-`
#echo $PROJ_VERSION
# split version to five fields
TAG_VERSION=`echo $PROJ_VERSION | awk -F '-' '{print $1}'`
#echo $TAG_VERSION
MAJOR=`echo $TAG_VERSION | awk -F '.' '{print $1}'`
MINOR=`echo $TAG_VERSION | awk -F '.' '{print $2}'`
# App: get revision from SDK tag
#REVISION=`echo $TAG_VERSION | awk -F '.' '{print $3}'`
# Patch: using count number as revision
REVISION=`echo $PROJ_VERSION | awk -F '-' '{print $2}'`
if [ ! $REVISION ]; then
REVISION=0
fi
#get branch name
CUSTOMER_NAME=$4
if [ ! $CUSTOMER_NAME ]; then
BRANCH_NAME=`git symbolic-ref --short -q HEAD`
CUSTOMER_NAME=`echo $BRANCH_NAME | awk -F '-' '{print $2}'`
if [ ! $CUSTOMER_NAME ]; then
CUSTOMER_NAME="unknown"
fi
fi
#echo $CUSTOMER_NAME
CN_1=${CUSTOMER_NAME:0:1}
CN_2=${CUSTOMER_NAME:1:1}
CN_3=${CUSTOMER_NAME:2:1}
if [ ! $CN_3 ]; then
CN_3=#
fi
CN_4=${CUSTOMER_NAME:3:1}
if [ ! $CN_4 ]; then
CN_4=#
fi
CN_5=${CUSTOMER_NAME:4:1}
if [ ! $CN_5 ]; then
CN_5=#
fi
CN_6=${CUSTOMER_NAME:5:1}
if [ ! $CN_6 ]; then
CN_6=#
fi
CN_7=${CUSTOMER_NAME:6:1}
if [ ! $CN_7 ]; then
CN_7=#
fi
CN_8=${CUSTOMER_NAME:7:1}
if [ ! $CN_8 ]; then
CN_8=#
fi
#get commit ID
GIT_CMTID_RAW=`git log --pretty=oneline -1 | cut -c 1-8`
GIT_CMTID=0x$GIT_CMTID_RAW
#echo $MAJOR.$MINOR.$REVISION.$BUILDNUM
#echo $GIT_CMTID
# build time
BUILDING_TIME=`env LANG=en_US.UTF-8 date '+%a %b %e %R:%S %Y'`
#echo $BUILDING_TIME
# substitute version&time in template
`cat $TEMPLATE_PATH | sed -e "s/MAJOR_T/$MAJOR/g" \
-e "s/MINOR_T/$MINOR/g" \
-e "s/REVISION_T/$REVISION/g" \
-e "s/BUILDTIME_T/$BUILDING_TIME/g" \
-e "s/GITCMTID_T/$GIT_CMTID/g" \
-e "s/CUSTOMER_NAME_T/$CUSTOMER_NAME/g" \
-e "s/CN_1_T/$CN_1/g" \
-e "s/CN_2_T/$CN_2/g" \
-e "s/CN_3_T/$CN_3/g" \
-e "s/CN_4_T/$CN_4/g" \
-e "s/CN_5_T/$CN_5/g" \
-e "s/CN_6_T/$CN_6/g" \
-e "s/CN_7_T/$CN_7/g" \
-e "s/CN_8_T/$CN_8/g" \
> $VERSION_PATH`
# show result
echo "Generated Version File :"
cat $VERSION_PATH