#!/bin/bash

set -e
set -x

DEVICE=${1}
DISKTYPE=${2}
if [[ -z $DISKTYPE ]]; then
	DISKTYPE="msdos"
fi

if [[ -z $DEVICE ]]; then
    echo "Need to Pass a device name as arg1." 1>&2
    exit 1
fi

PARTITION_COUNT=$(grep $(echo $DEVICE | cut -d '/' -f3) /proc/partitions | wc -l)
if [ "$PARTITION_COUNT" -gt "1" ]; then
    echo "Device ${DEVICE} already partitioned!"
    echo "Checking to see if it is mounted"
    
    # Check this container first...
    if grep -q "${DEVICE}" /proc/mounts; then
        echo "Device is mounted, we can not repartition" 1>&2
        exit 1
    fi
   
    # Check other system containers... 
    for container in $(system-docker ps -q); do
        if system-docker exec $container grep -q "${DEVICE}" /proc/mounts; then
            echo "Device is mounted in system container ${container}, we can not repartition" 1>&2
            exit 1
        fi
    done
fi

dd if=/dev/zero of=${DEVICE} bs=512 count=2048
partprobe ${DEVICE}

# https://www.gnu.org/software/parted/manual/html_node/set.html
# https://wiki.archlinux.org/index.php/syslinux
BOOTFLAG="boot"
if [ "${DISKTYPE}" == "gpt" ]; then
    BOOTFLAG="legacy_boot"
fi
parted -s -a optimal ${DEVICE} mklabel ${DISKTYPE} -- \
  mkpart primary ext4 1 -1 \
  set 1 ${BOOTFLAG} on