#!/bin/bash

####### RELEASE VERSION INFO ########
SIETIUM_NAME=sietium-kmod-mesa-drv
PRODUCT_NAME=sietium-kmod-drv
VERSION=0.1.18-dev
stage_version=-beta

# example: 0.1.13-230803-709bd84-beta
#####################################

# USAGE:
# ./SIETIUM-VERSION-GEN version|gb_version|os|arch|os_version_id|osver|module_version|product

date=`date '+%y%m%d'`
arch=`uname -m`
#GIT_COMMIT=`git log --pretty=format:'%h' -n 1 --abbrev=7`
if [ -d ".git" ] && command -v git >/dev/null 2>&1; then
    GIT_COMMIT=`git log --pretty=format:'%h' -n 1 --abbrev=7`
else
    GIT_COMMIT="unknown"
fi
os=`cat /etc/os-release  | grep ^NAME= | awk -F '"' '{print $2}' \
	| awk -F ' ' '{print $1}'`
hw_arch=`arch`

# gb_version

if [ -e ./VERSION ] && [ ! -z `cat ./VERSION` ];then
	#read version from ./VERSION'
	VERSION=`cat ./VERSION`
fi

if [ -e ./DATE ] && [ ! -z `cat ./DATE` ];then
	date=`cat ./DATE`
fi

if [ -e ./COMMIT_LOG ] && [ ! -z `cat ./COMMIT_LOG` ];then
	GIT_COMMIT=`cat ./COMMIT_LOG`
fi
gb_version=$VERSION-$date-$GIT_COMMIT

# os_version
if [ $os == uos ];then

if [ $hw_arch != mips64 ];then
os_majversion_id=`cat /etc/os-version | grep ^MajorVersion= | awk -F '=' '{print $2}' \
	| awk -F ' ' '{print $1}'`
os_minversion_id=`cat /etc/os-version | grep ^MinorVersion= | awk -F '=' '{print $2}' \
	| awk -F ' ' '{print $1}'`
os_version_id=$os_majversion_id-$os_minversion_id
# The OsBuild of UOS1050, UOS1050-U2, UOS1050-U3 are different, their kernel versions are same
os_build_id=`cat /etc/os-version | grep ^OsBuild= | awk -F '=' '{print $2}' \
	| awk -F ' ' '{print $1}'`
else
os_version_id=`cat /etc/os-release | grep ^VERSION_ID= | awk -F '"' '{print $2}' \
	| awk -F ' ' '{print $1}'`
fi

kern_version=`uname -r | awk -F '-' '{print $1"-"$2}'`
# UNIQUE RELEASE ID
uniq_release_id=$os_majversion_id-$os_minversion_id-$kern_version-$os_build_id
else
os_version_id=`cat /etc/os-release | grep ^VERSION_ID= | \
	 awk -F '"' '{print $2}' | awk -F ' ' '{print $1}'`

if [ $os == Kylin ];then
	release_id=`grep ^KYLIN_RELEASE_ID /etc/os-release |sed 's/[^0-9]//g'`
	test -n "$release_id" && release_id=-$release_id
fi
if [ $os == Ubuntu ];then
	release_id=`grep ^VERSION= /etc/os-release |sed 's/[^0-9.]//g' | awk -F '.' '{print $NF}'`
	test -n "$release_id" && release_id=.$release_id
fi

if [ $os == CentOS ];then
os_version_subid=`uname -r | awk -F '.' '{print $1"." $2"." $3}'`
else
os_version_subid=`uname -r | awk -F '-' '{print $1"-"$2}'`
fi

# UNIQUE RELEASE ID
uniq_release_id=$os_version_id$release_id-$os_version_subid
os_version_id=$os_version_id-$os_version_subid

os_type=`uname -r | grep -i server`
os_release_type=`cat /etc/os-release | grep -i server`
if [ "$os_type" != "" ] || [ "$os_release_type" != "" ];then
os_version_id=${os_version_id}_server
fi

fi

OS_VERSION=$os$os_version_id
UNIQ_RELEASE_ID=`echo ${os,,}$uniq_release_id-$arch`

# get uniq_release_id by the fixed script
UNIQ_RELEASE_ID=$(./scripts/uniq_release_id.sh uniq_release_id)

# output gb_version by default
if [ -e $@ ] || [ $1 == "gb_version" ];then
	echo $gb_version
	exit 0
fi

if [ $1 == "version" ];then
	echo $VERSION
	exit 0
fi

if [ $1 == "os" ];then
	echo $os
	exit 0
fi

if [ $1 == "arch" ];then
	echo $hw_arch
	exit 0
fi

if [ $1 == "os_version_id" ];then
	echo $os_version_id
	exit 0
fi

if [ $1 == "osver" ];then
	echo $OS_VERSION
	exit 0
fi

if [ $1 == "uniq_release_id" ];then
	echo $UNIQ_RELEASE_ID
	exit 0
fi

if [ $1 == "sietium" ];then
	echo $SIETIUM_NAME
	exit 0
fi

if [ $1 == "product" ];then
	echo $PRODUCT_NAME
	exit 0
fi

module_version="gb_"$arch"_"$os"_"$GIT_COMMIT"_"$date".ko"

if [ $1 == "module_version" ];then
	echo $module_version
	exit 0
fi

