#!/bin/bash

# "-d <dirname>"
# "-r : Read data from storage."
# "-u replace all storage files by files in folder <dirname>."
# "-e : erase all storage."

# the device (/dev/nandd) must be mounted on /mnt/factory
MNTBOOT=/mnt/factory

FACTORY_RESET_SAFE_DIR="factorysafedir"
DEVICE="/dev/nandd"

if [ -b $DEVICE ]; then
    echo "Found the device: "$DEVICE
else
    echo "There is no device selected, exit ..."
    exit 1
fi

BOOTDEV=$DEVICE

DO_ERASE='0'
DO_UPDATE='0'
DO_READ='0'
SOURCE_DIR=''

while getopts :e,:u,:r,:d: option; do
case $option in
e)
DO_ERASE='1'
;;
u)
DO_UPDATE=1
;;
d)
SOURCE_DIR=$OPTARG
;;
r)
DO_READ='1'
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
esac
done


if [ -z "$SOURCE_DIR" ]; then
echo "Dir is empty ... "
exit 1
fi

echo "DO_ERASE="$DO_ERASE
echo "DO_UPDATE="$DO_UPDATE
echo "DO_READ="$DO_READ
echo "SOURCE_DIR="$SOURCE_DIR

TARGET_DIR=`basename $SOURCE_DIR`

if [ $DO_ERASE -eq 1 ]; then
  echo "erase the "$MNTBOOT/$FACTORY_RESET_SAFE_DIR/$TARGET_DIR
  if [ -d $MNTBOOT/$FACTORY_RESET_SAFE_DIR/$TARGET_DIR ]; then
    rm -fR $MNTBOOT/$FACTORY_RESET_SAFE_DIR/$TARGET_DIR
  fi
else if [ $DO_UPDATE -eq 1 ]; then
  if [ -d $MNTBOOT/$FACTORY_RESET_SAFE_DIR/$TARGET_DIR ]; then
	rm -fR $MNTBOOT/$FACTORY_RESET_SAFE_DIR/$TARGET_DIR
  fi
  cp -fR $SOURCE_DIR $MNTBOOT/$FACTORY_RESET_SAFE_DIR
else if [ $DO_READ -eq 1 ]; then
  if [ -d $MNTBOOT/$FACTORY_RESET_SAFE_DIR/$TARGET_DIR ]; then
    if [ ! -d $SOURCE_DIR ]; then
	  mkdir -p $SOURCE_DIR
    else
	  rm -fR $SOURCE_DIR/*
    fi
    cp -fR $MNTBOOT/$FACTORY_RESET_SAFE_DIR/$TARGET_DIR/* $SOURCE_DIR/
  fi
fi
fi
fi

if [ $? -ne 0 ]; then
exit 1;
fi

exit 0
