#!/bin/sh
# скрипт для самотестирования утилит pfs
# пока основные только
. $(which pfs)

MKPFS="\e[31mFALSE\e[0m"
MKPFSm="\e[31mFALSE\e[0m"
MKPFSd="\e[31mFALSE\e[0m"
MKPFS_MERGE="\e[31mFALSE\e[0m"
MNTFILE="\e[31mFALSE\e[0m"
PFSLOAD="\e[31mFALSE\e[0m"
PFSUNLOAD="\e[31mFALSE\e[0m"
PFSLOADr="\e[31mFALSE\e[0m"
PFSUNLOADr="\e[31mFALSE\e[0m"
PFSREBUILD="\e[31mFALSE\e[0m"
PFSEXTRACT="\e[31mFALSE\e[0m"
PFSEXTRACTd="\e[31mFALSE\e[0m"
PFSEXTRACT_SIMPLE="\e[31mFALSE\e[0m"
PFSUNINSTALL="\e[31mFALSE\e[0m"

CLEAR () {
	rm -f ./first.${EXT} 2>/dev/null
	rm -f ./second.${EXT} 2>/dev/null
	rm -f ./testmodule.${EXT} 2>/dev/null
	rm -fr ./testmodule_pfs 2>/dev/null
	pfsunload ./testmodule.${EXT} 2>/dev/null
	pfsuninstall ./testmodule.${EXT} 2>/dev/null
	rmdir /111
}

ex(){ printf "$m\n====== \e[31mTest  aborted\e[0m =====\n"
	CLEAR 
	exit 1 
}

mkdir -p ./first/111 ./second/222 ./first/empty
echo first  > ./first/111/file
echo second > ./second/222/file
chmod 644 ./first/empty ; chown nobody ./first/empty

echo "############# mkpfs ##############"
m="\n=========================="
mkpfs ./first -q && mkpfs ./second -q && MKPFS=OK
m="$m\nmkpfs=			$MKPFS" 
rm -rf ./first
rm -rf ./second
[ "$MKPFS" != "OK" ] && ex

echo "############# unsquashfs ##############"
pfsextract ./first.${EXT} -q && rm -rf ./first && 
PFSEXTRACT_SIMPLE=OK  
m="$m\npfsextract simple =	$PFSEXTRACT_SIMPLE"
[ "$PFSEXTRACT_SIMPLE" != "OK" ] && ex

echo "############# pfsinstall ##############"
pfsextract -i -q ./first.${EXT} && PFSINSTALL=OK
m="$m\npfsextract -i=		$PFSINSTALL"
[ "$PFSINSTALL" != "OK" ] && ex

echo "############# pfsunstall ##############"
pfsuninstall ./first.${EXT} && PFSUNINSTALL=OK 
m="$m\npfsuninstall=		$PFSUNINSTALL" 
[ "$PFSUNINSTALL" != "OK" ] && ex

echo "############# mkpfs merging ##############"
mkpfs ./first.${EXT} ./second.${EXT} -o testmodule.${EXT} -q && MKPFS_MERGE=OK
m="$m\nmkpfs merging=		$MKPFS_MERGE" 
[ "$MKPFS_MERGE" != "OK" ] && ex

echo "############# pfsinfo ##############"
[ "`pfsinfo testmodule.${EXT} |wc -l`" = "2" ] && PFSINFO=OK
m="$m\npfsinfo=		$PFSINFO" 

echo "############# mountfile ##############"
mountfile testmodule.${EXT} && umount /mnt/*+testmodule.${EXT} &&
rmdir /mnt/*+testmodule.${EXT} && MNTFILE=OK 
m="$m\n(u)mountfile=		$MNTFILE"

echo "############# pfsload ##############"
pfsload ./testmodule.${EXT} && PFSLOAD=OK
m="$m\npfsload=		$PFSLOAD"

echo "############# pfsunload ##############"
pfsunload ./testmodule.${EXT} && PFSUNLOAD=OK
m="$m\npfsunload=		$PFSUNLOAD"

echo "############# pfsload to ram ##############"
pfsload -r ./testmodule.${EXT} && PFSLOADr=OK
m="$m\nload to ram=		$PFSLOADr"

echo "############# pfsrebuild ##############"
[ "$PFSLOAD" == "OK" ] && rm -f ./testmodule.${EXT}
pfsrebuild testmodule.${EXT} && PFSREBUILD=OK
m="$m\npfsrebuild=		$PFSREBUILD" 
rm -r first second 2>/dev/nul

echo "############# pfsunload from ram ##############"
pfsunload ./testmodule.${EXT} && PFSUNLOADr=OK
m="$m\nunload ram=		$PFSUNLOADr"

echo "############# pfsextract ##############"
pfsextract testmodule.${EXT} -o testmodule -f -q && [ -f testmodule/first.${EXT} ] && \
[ -f testmodule/second.${EXT} ]  && PFSEXTRACT=OK
m="$m\npfsextract=		$PFSEXTRACT"
[ "$PFSEXTRACT" != "OK" ] && ex

echo "############# mkpfs -m ##############"
rm -r ./testmodule.${EXT} 2>/dev/null
mkpfs -m testmodule  && MKPFSm=OK
m="$m\nmkpfs -m=		$MKPFSm"
rm -r testmodule 2>/dev/null
[ "$MKPFSm" != "OK" ] && ex

echo "############# pfsextract -d##############"
pfsextract -d testmodule.${EXT} && [ -d testmodule/first ] && \
    [ -d testmodule/second ]  && PFSEXTRACTd=OK
m="$m\npfsextract -d=		$PFSEXTRACTd"
[ "$PFSEXTRACTd" != "OK" ] && ex

echo "############# mkpfs -d ##############"
rm -r ./testmodule.${EXT} 2>/dev/null
mkpfs -d testmodule  && MKPFSd=OK
m="$m\nmkpfs -d=		$MKPFSd"
rm -r testmodule #2>/dev/null

CLEAR
	printf "$m\n====== \e[32mTest finished\e[0m =====\n"
