#!/bin/bash
type=$1
if [ -z "$1" ] ; then
	type=$(cat /sys/devices/virtual/dmi/id/board_name)
fi

parse_cfg() {
	dir=$(cd "$(dirname "$0")" && pwd)
	echo $(sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \
		-e 's/;.*$//' \
		-e 's/[[:space:]]*$//' \
		-e 's/^[[:space:]]*//' \
		-e "s/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" \
	   < $dir/BMC_Teutates.cfg \
		| sed -n -e "/^\[$1\]/,/^\s*\[/{/^[^;].*\=.*/p;}")
}

default=$(parse_cfg Default)
data=$(parse_cfg $type)

echo "Assuming board name: $type" >&2
echo "place the stdout of this script into a file under /etc/sensors.d/ e.g. /etc/sensors.d/fts-teutates" >&2
echo >&2

echo "chip \"ftsteutates-*\""
echo "# Fujitsu Technology Solutions, \"Teutates\"-Chip"
echo
echo "# Temperatures"
for((i=0;i<16;i++)) ; do
	name=$(echo $data | grep -o "Sensor\.$(($i))=\"[^\"]*\"" | grep -o '"[^"]\+"' | sed 's/"//g')
	if [ -n "$name" ] ; then
		echo "    label temp$(($i+1)) \"$name\""
	else
		name=$(echo $default | grep -o "Voltage\.$(($i))=\"[^\"]*\"" | grep -o '"[^"]\+"' | sed 's/"//g')
		if [ -n "$name" ] ; then
			echo "    label temp$(($i+1)) \"$name\""
		else
			echo "    label temp$(($i+1)) \"Temp$(($i+1))\""
		fi
	fi
done

echo
echo "# Fans"
for((i=0;i<8;i++)) ; do
	name=$(echo $data | grep -o "Fan\.$(($i))=\"[^\"]*\"" | grep -o '"[^"]\+"' | sed 's/"//g')
	if [ -n "$name" ] ; then
		echo "    label fan$(($i+1)) \"$name\""
	else
		name=$(echo $default | grep -o "Voltage\.$(($i))=\"[^\"]*\"" | grep -o '"[^"]\+"' | sed 's/"//g')
		if [ -n "$name" ] ; then
			echo "    label fan$(($i+1)) \"$name\""
		else
			echo "    label fan$(($i+1)) \"Fan$(($i+1))\""
		fi
	fi
done


echo
echo "# Voltages"
for((i=0;i<4;i++)) ; do
	name=$(echo $data | grep -o "Voltage\.$(($i))=\"[^\"]*\"" | grep -o '"[^"]\+"' | sed 's/"//g')
	if [ -n "$name" ] ; then
		echo "    label in$(($i+1)) \"$name\""
	else
		name=$(echo $default | grep -o "Voltage\.$(($i))=\"[^\"]*\"" | grep -o '"[^"]\+"' | sed 's/"//g')
		if [ -n "$name" ] ; then
			echo "    label in$(($i+1)) \"$name\""
		else
			echo "    label in$(($i+1)) \"Voltage$(($i+1))\""
		fi
	fi
done
