#!/bin/bash
# barium helper scripts
# author: rosalinux.ru: betcher_
if [ -f $(dirname $0)/lib ] ;  then
    . $(dirname $0)/lib
else 
    . $(which lib) || exit 1
fi

HLP (){
	echo $(basename $0) - util to add module to root aufs
	echo "Usage: 
	barium $(basename $0) /path/module_name"
	exit  
}

[ "$(check_union)" != 'aufs' ] && exitmsg "Supported only aufs based rootfs" 111
[ "$1" ] || exitmsg "Need a module name as $1" ${LINENO}
[ "$1" == '-h' -o "$1" == '--help' ] && HLP
root_only
[ -e "$1" ]  || exitmsg "$1 - not found" ${LINENO}
layer="$(realpath $1)" 
df $layer |grep -q 'aufs' && exitmsg "Can't insert layer from aufs into aufs
Try to move $(basename $1) to hard disk mount point, or tmpfs" ${LINENO}
BUNDLE="${SYSMNT}/bundles/$(basename $layer)"
[ -d "$BUNDLE" ] && exitmsg "Bundle with same name already exists:\n	$BUNDLE\
\nTry to:\n	barium rm $(basename $layer)\nfirst"  ${LINENO}
mkdir -p $BUNDLE 
case $(file -b "$layer") in
		*directory) 
		mount --bind "$layer"  "$BUNDLE" 2>/dev/null || exitmsg "Can't mount $layer to $BUNDLE" ${LINENO} ;;
		Squashfs*4.0*|Linux*ext*)
		mount -o loop "$layer" "$BUNDLE" 2>/dev/null || exitmsg "Can't mount $layer to $BUNDLE" ${LINENO} ;;
		*) exitmsg "Unsupported file type $layer " ${LINENO} ;;
esac 
mount -o remount,add:1:"$BUNDLE"=ro+wh / || \
exitmsg "Can't insert $BUNDLE to aufs" ${LINENO}
update_caches "$BUNDLE"
exit 0

