#!/bin/bash

### BEGIN INIT INFO
# Provides:          resize2fs
# Required-Start:    $local_fs
# Required-Stop:
# Should-Start:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Resize the root filesystem to fill whole rootfs partition
# Description:
### END INIT INFO

set -e

ROOTFS=$(findmnt / | awk -F" " '/\/dev\// {print $2"\t"$3}')
set ${ROOTFS}
device=$1
rootfstype=$2

if [ -z $rootfstype ]; then
	device="/dev/"$(lsblk -idn -o NAME | grep mmcblk0)
	PARTITIONS=$(($(fdisk -l $device | grep $device | wc -l)-1))
	device="/dev/"$(lsblk -idn -o NAME | grep mmcblk0)"p"$PARTITIONS
	N=/etc/init.d/resize2fs
	root_device=$(mountpoint -d /)
	for file in /dev/* ; do
	CURRENT_DEVICE=$(printf "%d:%d" $(stat --printf="0x%t 0x%T" $file))
	if [ $CURRENT_DEVICE = $root_device ]; then
		root_partition=$file
		break;
	fi
	done
	rootfstype=$(blkid -s TYPE -o value $root_partition)
fi

case "$1" in
  start)		
		if [[ $rootfstype == ext4 && ! -f "/root/.no_rootfs_resize" ]]; then
			echo -e "\n### [resize2fs] Start resizing partition now\n" >>/var/log/armhwinfo.log
			/sbin/resize2fs $device >>/var/log/armhwinfo.log 2>&1
		fi
		if [[ ! -f "/var/swap" ]]; then
			dd if=/dev/zero of=/var/swap bs=1024 count=131072 status=noxfer >/dev/null 2>&1
			chown root:root /var/swap
			chmod 0600 /var/swap
			mkswap /var/swap >/dev/null 2>&1
			swapon /var/swap >/dev/null 2>&1
			if ! grep -q swap /etc/fstab; then echo "/var/swap none swap sw 0 0" >> /etc/fstab; fi 
			if ! grep -q swap /etc/sysctl.conf; then echo "vm.swappiness=0" >> /etc/sysctl.conf; fi 
		fi
		update-rc.d -f resize2fs remove >/dev/null 2>&1
		;;
	*)
		exit 1
		;;
esac

exit 0