#!/bin/sh
# command to test USB storage device
#

USB_DEVICE="/dev/sdb1"
USB_FILE_PATH="/tmp/usb"
USB_TEST_FILE="$USB_FILE_PATH/usb-diags-file"
USB_PRESENT_TEXT="present"
USB_NOT_PRESENT_TEXT="not present"

is_usb_present()
{
  [ -e $USB_DEVICE ] &&  echo $USB_PRESENT_TEXT || echo $USB_NOT_PRESENT_TEXT
}

case "$1" in
  present)
    is_usb_present
    ;;
  mount)
    if [ "$(is_usb_present)" = "$USB_PRESENT_TEXT" ]; then
      mkdir -p $USB_FILE_PATH
      mount -t vfat $USB_DEVICE $USB_FILE_PATH && echo "mount: successful" ||\
      echo "mount: failed"
    else
      echo "USB not present"
    fi
    ;;
  test)
    if [ "$(is_usb_present)" = "$USB_NOT_PRESENT_TEXT" ]; then
      echo "USB not present"
    elif [ ! -e "$2" ]; then
      echo "\"$2\" does not exist"
    elif [ ! -e $USB_FILE_PATH ]; then
      echo "USB not mounted"
    elif ! cp $2 $USB_TEST_FILE; then
      echo "copy $2 to $USB_TEST_FILE failed"
    else
      cmp $2 $USB_TEST_FILE && echo "test passed" || echo "test failed"
    fi
    ;;
  *)
    echo "Usage: $0 {present|mount|test in-file}" >&2
    echo "$0 is complete"
    exit 1
esac
echo "$0 is complete"
