#!/bin/sh

VERSION_FILE="/etc/klk-version"
UPDATE_LOGFILE="/etc/klk_update"
VERBOSE=0

. /etc/rc.d/init.d/functions

#
# Parse args
#
while test $# -gt 0
do
   case $1 in
      -b|--bootstrap)
         BOOTSTRAP=1
         ;;
      -u|--update)
         UPDATE=1
         ;;
      -v|--verbose)
         VERBOSE=1
         ;;
      *)
         echo "usage: $0 [-v]"
	 ;;
   esac
   #get next arg
   shift
done


if [ -e $VERSION_FILE ];
then
	# Source it
	. ${VERSION_FILE}
else
	FILESYSTEM_VER=unknown
fi


# Scan Version Only if required
if [ ${UPDATE} ]
then

	# Pic version
	if [ -f /sys/class/klk-pic/klk-pic/version ];
	then
		PIC_VER=`cat /sys/class/klk-pic/klk-pic/version`
	fi

	if [ ${BOOTSTRAP} ]
	then
		# Bootstrap V2
		BOOTSTRAP_VER=`nanddump -n --oob --bb=dumpbad /dev/mtd0 2> /dev/null | grep -m 1 "WirmaV2 kickstart" | sed 's/^WirmaV2 kickstart \(.*\)$/\1/'`
			fi

	UBOOT_VER=`fw_printenv ver 2>/dev/null | sed -e 's/.*=\(.*\)$/\1/'`
	(fw_printenv ver 2>/dev/null | grep -q "dirty") && UBOOT_VER="${UBOOT_VER}-Debug"

	SCRIPT_VER=`nanddump -l 1 /dev/mtd3 2> /dev/null | awk -F# '/Script .* #/ {print $2}'`
	# If it fails, retry on first sector of second block
	[ ${SCRIPT_VER} ] || SCRIPT_VER=`nanddump -s 0x20000 -l 1 /dev/mtd3 2> /dev/null | awk -F# '/Script .* #/ {print $2}'`

	INITRAMFS_VER=`nanddump -s 0x640000 -l 1 /dev/mtd3 2> /dev/null | grep -m 1 initrd | sed 's/^.*initrd-\(.*\)$/\1/'`
	# If it fails, retry on first sector of second block
	[ ${INITRAMFS_VER} ] || INITRAMFS_VER=`nanddump -s 0x660000 -l 1 /dev/mtd3 2> /dev/null | grep -m 1 initrd | sed 's/^.*initrd-\(.*\)$/\1/'`

	KERNEL_VER=`uname -r`

	KNETD_VER=`/knet/knetd -v`

	if [ -f /etc/os-release ]
	then
		FILESYSTEM_VER="$(awk -F= '/VERSION=/ {print $2}' /etc/os-release)"
	elif [ -f /etc/br-version ]
	then
		FILESYSTEM_VER=`cat /etc/br-version`
	fi

	PROD_FW=$(basename "`fw_printenv prod_fw 2>/dev/null | sed 's/.*=//'`")

	# KLK: (re)create /etc/klk-version
	echo "KERNEL_VER=$KERNEL_VER" > $VERSION_FILE
	[ ${OPTIONS} ] && echo "OPTIONS=${OPTIONS}" >> $VERSION_FILE
	echo "PIC_VER=$PIC_VER" >> $VERSION_FILE
	echo "BOOTSTRAP_VER=\"${BOOTSTRAP_VER}\"" >> $VERSION_FILE
	echo "UBOOT_VER=\"${UBOOT_VER}\"" >> $VERSION_FILE
	echo "SCRIPT_VER=$SCRIPT_VER" >> $VERSION_FILE
	echo "INITRAMFS_VER=$INITRAMFS_VER" >> $VERSION_FILE
	echo "FILESYSTEM_VER=$FILESYSTEM_VER" >> $VERSION_FILE
	echo -e "KNETD_VER=\"${KNETD_VER}\"" >> $VERSION_FILE
	[ ${PROD_FW} ] && echo "PROD_FW=${PROD_FW}" >> $VERSION_FILE

	[ -f /tmp/loraboard_version ] && cat /tmp/loraboard_version >> $VERSION_FILE

	dos2unix $VERSION_FILE
fi

[ -e $VERSION_FILE ] && cat $VERSION_FILE

if [ -f $UPDATE_LOGFILE -a ${VERBOSE} -eq 1 ] 
then
	echo ""
	echo "************************ Update log ************************"
	cat $UPDATE_LOGFILE
	echo "************************************************************"
fi
