#!/usr/bin/env bash

CD="`pwd`"

function die {
    echo -e "$1"
    exit 1
}

sdx_temp=`ls /dev/sd*`
for dev in ${sdx_temp}; do
    if [[ ${dev} =~ ^/dev/sd[a-z]+$ ]]; then
        SDX_DEVICES="${SDX_DEVICES} ${dev}"
    fi
done

REMOVABLES=
for dev in ${SDX_DEVICES}; do
    removable=$(cat /sys/block/`basename ${dev}`/removable)
    if [[ ${removable} = 1 ]]; then
        REMOVABLES="${REMOVABLES} ${dev}"
    fi
done

echo ${REMOVABLES}

if [[ ! -z ${REMOVABLES} ]]; then
    echo "These are the removable disks I found:"
    echo "    Enter the device name to format   "
    echo ""
    echo "--------------------------------------"
    echo "|   DEVICE   |        SIZE (GB)      |"
    echo "--------------------------------------"
    for rem in ${REMOVABLES}; do
        size=`blockdev --getsize64 ${rem}` || die "\033[31mPlease run this script as super user (i.e. sudo)\033[0m"
        python3 -c "print(\"|{:^12}|{:^23}|\".format(\"${rem}\",\"%s %s\" % (round(int(\"${size}\") / 1073741824.0, 2), \"GB\")))"
    done
    echo "--------------------------------------"
else
    die "No Removable devices found!"
fi

OKAY=
until [[ ${OKAY} = true ]]; do
    printf "Device Name: "
    read DEVICE

    for rem in ${REMOVABLES}; do
        if [[ ${rem} = ${DEVICE} ]]; then
            OKAY=true
            break
        fi
    done
    if [[ -z ${OKAY} ]]; then
        echo -e "\033[31mBad Device Name... Enter one from the list I provided...\033[0m"
    fi
done

OKAY=
printf "You have chosen ${DEVICE}, is this correct? [y|n] "
read OKAY

if [[ ${OKAY} =~ [y|Y]([e|E][s|S])? ]]; then
    OKAY=true
else
    die "Exiting..."
fi

# Unmount the drive
umount ${DEVICE} > /dev/null 2>&1

# Make the filesystem
mkdosfs -I ${DEVICE} -n DOSISBACKUP

# Mount the filesystem
mkdir -p ${CD}/USBMAKER
mount -t vfat ${DEVICE} ${CD}/USBMAKER || die "Unable to mount disk"

# Make the directory for Cognitive

mkdir -p ${CD}/USBMAKER/Cognitive/Settings

# Create the Settings file
FILE=${CD}/USBMAKER/Cognitive/Settings/settings.txt
touch ${FILE}

echo -en "! 0 0 0 0\r\n"                          > ${FILE}
echo -en "V USER_FEEDBACK ON\r\n"                >> ${FILE}
echo -en "V AUTO_TOF OFF\r\n"                    >> ${FILE}
echo -en "V FEED_TYPE GAP\r\n"                   >> ${FILE}
echo -en "V INDEX ON\r\n"                        >> ${FILE}
echo -en "V INDEX SETTING 0\r\n"                 >> ${FILE}
echo -en "V REPRINT OFF\r\n"                     >> ${FILE}
echo -en "V REPORT_LEVEL 1\r\n"                  >> ${FILE}
echo -en "V DARKNESS 100\r\n"                    >> ${FILE}
echo -en "C V SHIFT LEFT 0\r\n"                  >> ${FILE}
echo -en "C V TOF 460\r\n"                       >> ${FILE}
echo -en "V COMM 115200,N,8,1,N\r\n"             >> ${FILE}
echo -en "V ETHERNET DHCP OFF\r\n"               >> ${FILE}
echo -en "V ETHERNET LPD OFF\r\n"                >> ${FILE}
echo -en "V ETHERNET RTEL ON\r\n"                >> ${FILE}
echo -en "V ETHERNET RTEL PORT 9100\r\n"         >> ${FILE}
echo -en "V ETHERNET RTEL TIMEOUT 10\r\n"        >> ${FILE}
echo -en "V ETHERNET TELNET ON\r\n"              >> ${FILE}
echo -en "V ETHERNET HTTP OFF\r\n"               >> ${FILE}
echo -en "V ETHERNET IP 172.20.2.101\r\n"        >> ${FILE}
echo -en "V ETHERNET NETMASK 255.255.255.0\r\n"  >> ${FILE}
echo -en "V ETHERNET GATEWAY 172.20.2.1\r\n"     >> ${FILE}
echo -en "V WRITE\r\n"                           >> ${FILE}
echo -en "V ETHERNET RESET\r\n"                  >> ${FILE}
echo -en "END\r\n\r\n"                           >> ${FILE}

chmod 0644 ${FILE}

# Unmount the device
umount ${DEVICE}
rmdir ${CD}/USBMAKER

echo "Successfully formated device"
