#!/bin/bash

error() {
  echo "ERROR!"
  exit 1;
}

if echo ${MACHTYPE} | grep -q sparc; then
  harch="nsp"
elif echo ${MACHTYPE} | egrep -q 'i.86|x86_64'; then
  harch="x86"
elif echo ${MACHTYPE} | grep -q arm; then
  harch="arm"
else
  echo "Unknown host machine type.  This kit will only work on ReadyNAS Padre, x86, and ARM platforms."
  exit 1
fi

if [ -z "${TARGET_MACHTYPE+x}" ]; then
  TARGET_MACHTYPE=${MACHTYPE}
fi

if echo ${TARGET_MACHTYPE} | grep -q sparc; then
  arch="nsp"
  bs=512
elif echo ${TARGET_MACHTYPE} | grep -q i.86; then
  arch="x86"
  bs=16384
elif echo ${TARGET_MACHTYPE} | grep -q arm; then
  arch="arm"
  bs=16384
else
  echo "Unknown target machine type.  This kit will only build ReadyNAS Padre, x86, and ARM platforms."
  exit 1
fi
if ! [ -d "../bin" -a -d "../template" -a -d "files" ]; then
  echo "This doesn't appear to be a valid Addon SDK base directory."
  exit 1
fi

file=$(ls *.xml | grep -v "_" | head -1)
TAG=$(../bin/xmlutil.$harch $file /addon/name | awk -F'!!' '{ print $2 }')
FRIENDLY_NAME=$(../bin/xmlutil.$harch $file /addon/friendly_name | awk -F'!!' '{ print $2 }')
NAME=$(echo $FRIENDLY_NAME | sed 's/ //g')
VERS=$(../bin/xmlutil.$harch $file /addon/version | awk -F'!!' '{ print $2 }')
START=/etc/frontview/addons/bin/$TAG/start.sh
STOP=/etc/frontview/addons/bin/$TAG/stop.sh
TIME=$(date +%s)

. .${TAG}_BUILD_SETTINGS

if [ ! -z "${CURRENT_URL}" ]; then
  if [ ! -z "${ATTRIBUTES}" ]; then
    ATTRIBUTES="${ATTRIBUTES}::current_url==${CURRENT_URL}";
  else
    ATTRIBUTES="current_url==${CURRENT_URL}"
  fi
fi

if [ ! -z "${DETAIL_URL}" ]; then
  if [ ! -z "${ATTRIBUTES}" ]; then
    ATTRIBUTES="${ATTRIBUTES}::detail_url==${DETAIL_URL}";
  else
    ATTRIBUTES="detail_url==${DETAIL_URL}"
  fi
fi

if [ ! -z "${ICON_URL}" ]; then
  if [ ! -z "${ATTRIBUTES}" ]; then
    ATTRIBUTES="${ATTRIBUTES}::icon_url==${ICON_URL}";
  else
    ATTRIBUTES="icon_url==${ICON_URL}"
  fi
fi

SKIP_REBOOT=1
if [ "${REBOOT_REQUIRED}" != "n" ]; then
  SKIP_REBOOT=0
fi

if [ "${RESTART_APACHE}" != "n" ]; then
  RESTART_APACHE=1
else
  RESTART_APACHE=0
fi
echo "$TAG!!$FRIENDLY_NAME!!$VERS!!$START!!$STOP!!Other!!$ATTRIBUTES" > addons.conf

for file in language/*/*; do 
  cp $file files/etc/frontview/addons/ui/${TAG}/$file
done
cp ${TAG}.html ${TAG}.js ${TAG}.xml ${TAG}_HANDLER.pl files/etc/frontview/addons/ui/${TAG}/
chmod +x files/etc/frontview/addons/ui/${TAG}/${TAG}_HANDLER.pl
cp start.sh stop.sh running.sh files/etc/frontview/addons/bin/${TAG}/
(cd files/etc/frontview/addons/bin/${TAG}/; chmod +x start.sh stop.sh running.sh)

if [ -f ${TAG}_service ]; then
  cp ${TAG}_service files/etc/frontview/addons/bin/${TAG}/
  chmod +x files/etc/frontview/addons/bin/${TAG}/${TAG}_service
fi
  
cp ${TAG}.conf files/etc/frontview/apache/addons/${TAG}.conf

cd files || error 
tar cfz ../files.tgz ./* || error
cd ..
tar cf ${NAME}_${VERS}.tar install.sh remove.sh addons.conf files.tgz || error

SIZE=`stat -t ${NAME}_${VERS}.tar | awk '{ print $2 }'`
MD5=`md5sum ${NAME}_${VERS}.tar | awk '{ print $1 }'`
echo "addon::name=${FRIENDLY_NAME},version=${VERS},time=${TIME},size=${SIZE},md5sum=${MD5},unencrypted=1,skipreboot=${SKIP_REBOOT},api=1,arch=$arch,min_raidiator_version=${MIN_RAIDIATOR_VERSION},restartapache=${RESTART_APACHE}" | dd conv=sync bs=$bs >index 2>/dev/null || error
cat index ${NAME}_${VERS}.tar >${NAME}_${VERS}.bin || error
rm -f index ${NAME}_${VERS}.tar files.tgz
echo "Successfully built \"$FRIENDLY_NAME\" add-on package as \"${NAME}_${VERS}.bin\"."
