#!/bin/sh

function NEWPART(){
ROOT_DISK=$1
    # 检查是否有未分配空间
	DISK_SIZE=$(parted -s $ROOT_DISK unit MB print | grep '^Disk' | awk '{print $3}' | sed 's/MB//')
	LAST_PART_END=$(parted -s $ROOT_DISK unit MB print | tail -n 2 | head -n 1 | awk '{print $3}' | sed 's/MB//')
[ $LAST_PART_END == "End" ] && return 0
	UNALLOCATED_SPACE="$(awk "BEGIN {print $DISK_SIZE - $LAST_PART_END}")"
	awk 'BEGIN {exit !('$UNALLOCATED_SPACE' >= '1024')}' && {
    # 创建新分区
parted -s $ROOT_DISK mkpart primary ext4 ${LAST_PART_END}MB 100% && {

ROOT_DISK_NAME="$(echo $ROOT_DISK | cut -d / -f 3)"
LAST_PART_NAME="$(lsblk -nlo NAME | grep $ROOT_DISK_NAME | tail -n 1)"
    # 格式化新分区
mkfs.ext4 -F -L "docker" /dev/${LAST_PART_NAME}
pgrep -x /usr/bin/dockerd > /dev/null && /etc/init.d/dockerd stop
mkdir -p /opt/docker
eval $(block info /dev/${LAST_PART_NAME} | grep -o -e 'UUID="\S*"')
[ ! -f /etc/config/fstab ] && ( block detect > /etc/config/fstab )
uci set fstab.mountdocker="mount"
uci set fstab.mountdocker.uuid="${UUID}"
uci set fstab.mountdocker.target="/opt/docker"
uci commit fstab
umount -f /dev/${LAST_PART_NAME}
/sbin/block mount
}
}
}

cat /etc/mtab | grep -q "/opt/docker" || {
uci -q get fstab.mountdocker || {
disk="$(lsblk | awk '/disk/ {print $1; exit}')"
NEWPART /dev/$disk
}
}

exit 0
